作爲一種學習練習,我正在嘗試在Windows 7 64位上爲有線XBox 360控制器編寫篩選器驅動程序。這個控制器顯示爲一個HID操縱桿,所以它看起來應該是直截了當的。將哪個設備連接到Xbox 360控制器的過濾器驅動程序?
我已經爲鼠標交換了鼠標左右鍵的過濾器驅動。這是基於WDK附帶的moufiltr和螢火蟲樣品。但是,我無法將此示例轉換爲XBox 360控制器。
當我插上控制器,3級不同的設備出現在設備管理器:
- 人機接口設備/ HID兼容遊戲控制器
- 人機接口設備/ USB人機接口設備
- 公共控制器對於Windows類/ Xbox 360的Windows控制器
這些哪一個我應該附加我的驅動程序?
使用鼠標過濾器驅動程序,我可以按照螢火蟲示例中的installation directions:在設備管理器中右鍵單擊鼠標,選擇「更新驅動程序」。使用XBox 360控制器,我不確定我應該安裝驅動程序的設備。或者他們都獨立地與硬件通話,我需要爲它們中的每一個安裝一個過濾器?
我應該注意到,我已經嘗試將過濾器驅動程序附加到3個設備中的每一個,以便打印出可供我的過濾器驅動程序使用的IOCTL。對於「USB人機接口設備」,我的過濾器沒有收到IOCTL。
對於符合HID遊戲控制器,它接收:
- IOCTL_HID_GET_COLLECTION_INFORMATION(多次)
- IOCTL_HID_GET_COLLECTION_DESCRIPTOR(多次)
- IOCTL_GET_SYS_BUTTON_CAPS
的Xbox 360控制器的Windows,它會收到一堆IOCTL,我無法追查下列符號名稱:
- 0x80006000(多次)
- 0x8000e00c(多次)
- 0x8000e008
- 0x8000a010
- 0x8000e018
- 0x8000e014
不幸的是我仍然不知道哪個設備我應該試圖過濾。 (我希望其中的一個人可以接收操縱桿 - 相當於IOCTL_INTERNAL_MOUSE_CONNECT,但似乎並非如此。)