標籤:oid mem 函數 device detail 擷取 string ssg get
依次使用一下函數:
1、static public extern void HidD_GetHidGuid (ref System.Guid HidGuid);
擷取HID的全域GUID
2、static public extern IntPtr SetupDiGetClassDevs(ref System.Guid ClassGuid,
string Enumerator,
int hwndParent,
int Flags);
擷取所有hid控制代碼
3、static public extern int SetupDiEnumDeviceInterfaces(IntPtr DeviceInfoSet,
int DeviceInfoData,
ref System.Guid InterfaceClassGuid,
int MemberIndex,
ref SP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
檢測集合每個介面,成功返回true
4、 static public extern bool SetupDiGetDeviceInterfaceDetail(IntPtr DeviceInfoSet,
ref SP_DEVICE_INTERFACE_DATA DeviceInterfaceData,
IntPtr DeviceInterfaceDetailData,
int DeviceInterfaceDetailDataSize,
ref int RequiredSize,
IntPtr DeviceInfoData);
擷取介面資訊,第一次失敗 但可獲得資訊緩衝區大小
5、 static public extern bool SetupDiGetDeviceInterfaceDetail(IntPtr DeviceInfoSet,
ref SP_DEVICE_INTERFACE_DATA DeviceInterfaceData,
IntPtr DeviceInterfaceDetailData,
int DeviceInterfaceDetailDataSize,
ref int RequiredSize,
IntPtr DeviceInfoData);
第二次擷取
迴圈 3、4、5把所有的裝置讀取,把所有裝置路徑名存放在一個數組裡devicePathName
6、 CreateFile(string lpFileName,
uint dwDesiredAccess,
uint dwShareMode,
ref SECURITY_ATTRIBUTES lpSecurityAttributes,
int dwCreationDisposition,
uint dwFlagsAndAttributes,
int hTemplateFile);
根據devicePathName連結檔案
以上步驟成功就可以讀寫USB了
C# 訪問USB(HID)裝置方法 (轉)