Windows CE中实现蓝牙串口驱动程序
NULL,
(PHW_VTBL)&BluetoothVTbl/*包含需要实现的所有标准串口DDSI函数的列表*/
};
HWOBJ BluetoothCTRLObj={/*描述蓝牙控制端口特征*/
(PDEVICE_LIST)&SerDL,
THREAD_IN_PDD,
0,
NULL,
(PHW_VTBL)&CTRLVTb1
};
PHWOBJ rgpHWObjects[]={/*包含两个PDD实例的数组*/
&BluetoothObj,
&BluetoothCTRLObj
};
DEVICE_LIST SerDL={/*存储设备驱动程序中所有串口设备*/
“CESerial.dll”,/*串口驱动程序的名字*/
sizeof(rgpHWObjects)/sizeof(PHWOBJ),/*串口设备的数目*/
regHWObjects
};
PDEVICE_LIST GetSerialObject(VOID)
{
return (&SerDL);
}
图2
在串口驱动程序中注册了两个串口设备后,就要实现这两个PDD实例对应的流接口函数。微软为要实现的串口PDD模块提供了一个HWOBJ(Haredware Object)类型的串行对象表,这个结构列出了实现串口驱动的所有接口函数指针。见下面的描述:
typedef struct _HW_VTBL{
PVOID(*HWInit)(ULONG Identifier,PVOID pMDDCon-text,PHWOBJ pHWObj);
…,
…,
BOOL(*HWIoct1)(PVOID pHead,DWORD dwCode,
PBYTE pBufIn,DWORD dwLenIn,PBYTE pBufOut,DWORD
DwLenOut,PDWORDpdwActualOut);
} HW_VTBL,*PHW_VTBL;
用户通过修改串行口PDD的串行对象表改变函数集或函数名。下面的结构BluetoothVTbl的定义了蓝牙仿真串口DDSI函数的名称。
Const HW_VTBL BluetoothVTbl={
BluetoothInitSerial,
…,
《Windows CE中实现蓝牙串口驱动程序(第2页)》