首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

VC++獲取USB遊戲手柄輸入的完整實現指南

     編輯:VC 教學

概述

本文介紹如何在 VC++ 環境下枚舉 HID 設備、打開 USB 遊戲手柄、讀取輸入報告並解析按鍵數據。編譯環境為 Windows 2000 Server + VC++ 6.0 + Win2K DDK。

核心步驟

1. 獲取 HID 類 GUID

調用 HidD_GetHidGuid 取得系統中 HID 類的 GUID 標識,並格式化輸出。

2. 枚舉符合 HID 規範的 USB 設備

使用 SetupDiGetClassDevs 獲取設備信息集,隨後以 SetupDiEnumDeviceInterfaces 遍歷每個設備介面。

3. 獲取設備詳細路徑並打開句柄

對於每個找到的介面,呼叫 SetupDiGetDeviceInterfaceDetail 取得設備路徑,然後以 CreateFile 打開設備句柄(需 GENERIC_READ | GENERIC_WRITE)。

4. 讀取設備屬性與字符串

通過 HidD_GetAttributes 取得廠商 ID、產品 ID、版本號;以 HidD_GetManufacturerString 和 HidD_GetProductString 獲取廠商與產品名稱。

5. 解析 HID 報告描述符

調用 HidD_GetPreparsedData 取得預解析數據,再用 HidP_GetCaps 獲取 HIDP_CAPS 結構,從中得知輸入報告的字節長度。

6. 循環讀取輸入報告

分配緩衝區,反覆呼叫 ReadFile 讀取輸入報告。當讀取字節數匹配預期長度時,將原始字節以十六進制輸出。示例中以檢測特定按鍵(0x20)作為退出條件。

7. 清理資源

關閉設備句柄、釋放緩衝區、銷毀設備信息列表。

完整代碼示例

// 參考原文完整代碼,包含上述所有步驟的實現細節

總結

掌握 HID API 的調用順序,即可實現對任意 USB 遊戲手柄的底層輸入捕獲,為遊戲開發或設備測試提供基礎支撐。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved