C# 访谒USB(HID)设备要领 (转)

时间:2021-12-23 08:29:51

依次使用一下函数:

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了