在Windows 2000 與Windows XP 系統采用是WINDDK來開發WINDOWS驅動程式,我手頭也有WINDDK,可是從Windows Vista開始之後,一般采用Microsoft Windows Driver簡稱(WDK)。這段時間剛好項目有用到USB HID,需要用到HID.lib庫檔案,是以下載下傳了這個WDK7.1.0版本,采用HID.LIB,以及采用USB HID的目的,就是省去了PC端的驅動程式的編寫,直接采用Windows内置的驅動程式,隻需要了解USB HID通信資料包的機制即可。免去了安裝驅動程式的煩惱。當然下位機也需要寫一個USB HID的USB Device驅動。簡單的說下USB HID的枚舉吧:
一、枚舉USB裝置
通過枚舉USB控制器->枚舉此控制器上的USB HUB->枚舉HUB的各個端口->獲得裝置資訊。
枚舉控制器:
wsprintf(HCName, "\\\\.\\HCD%d", HCNum);
hHCDev = CreateFile(HCName,
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);
計算機上的USB主要制器以HCD1,HCD2等命名。通過控制器名稱,使用CreateFile 打開它。使用DeviceIoControl即可得到其驅動程式名,以及與它連接配接的HUB的名稱。用CreateFile打開HUB,獲得連接配接資訊。再枚舉HUB的各個端口即可獲得連接配接的裝置資訊。
二、枚舉HID裝置
HID裝置是微軟定義的标準人機接口規範。比如USB滑鼠,USB遊戲搖桿等。不用查找具體裝置的GUID,使用API HidD_GetHidGuid(&guidHID)即可得到GUID。有了GUID通過API SetupDiEnumDeviceInterfaces可獲得是否有裝置連接配接。如果此類裝置連接配接通過SetupDiGetDeviceInterfaceDetail獲得它的裝置路徑資訊。使用CreateFile 打開它,通過HidD_GetAttributes獲得其基本屬性資訊。使用DeviceIoControl可以獲得更詳細的屬性。
注意:
從NTDDK\INC拷貝下列頭檔案
devioctl.h
usbdi.h
usbioctl.h
usb100.h
hidsdi.h
hidusage.h
hidpi.h
從NTDDK\libchk\i386拷貝hid.lib,在PROJECT SETTING中添加hid.lib setupapi.lib
/* 何問起 hovertree.com */
WDK下載下傳位址一:
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=11800
WDK下載下傳位址二:
http://www.microsoft.com/download/en/confirmation.aspx?displaylang=en&id=11800