1、获取一个指定类别或全部类别的所有已安装设备的信息 [DllImport("setupapi.dll", SetLastError = true)] private static extern IntPtr SetupDiGetClassDevs(ref Guid ClassGuid, uint Enumerator, IntPtr HwndParent, DIGCF Flags);
2、枚举指定设备信息集合的成员,并将数据放在SP_DEVINFO_DATA中 [DllImport("setupapi.dll", SetLastError = true)] private static extern bool SetupDiEnumDeviceInfo(IntPtr DeviceInfoSet, uint MemberIndex, SP_DEVINFO_DATA DeviceInfoData);
3、获取设备的接口 [DllImport("setupapi.dll", SetLastError = true, CharSet = CharSet.Auto)] private static extern bool SetupDiEnumDeviceInterfaces(IntPtr deviceInfoSet,SP_DEVINFO_DATA deviceInfoData,ref Guid interfaceClassGuid,int memberIndex,SP_DEVICE_INTERFACE_DATA deviceInterfaceData);
4、// 获取接口的详细信息 必须调用两次 第1次返回长度 第2次获取数据 [DllImport(&孥恶膈茯quot;setupapi.dll&鳎溻趄酃quot;, SetLastError = true, CharSet = CharSet.Auto)] private static extern bool SetupDiGetDeviceInterfaceDetail(IntPtr deviceInfoSet,SP_DEVICE_INTERFACE_DATA deviceInterfaceData,IntPtr deviceInterfaceDetailData,int deviceInterfaceDetailDataSize,ref int requiredSize,SP_DEVINFO_DATA deviceInfoData);
5、获取指定设备的属性 [DllImport("setupapi.dll", SetLastError = true)] private static extern bool SetupDiGetDeviceRegistryProperty(IntPtr DeviceInfoSet, SP_DEVINFO_DATA DeviceInfoData, SPDRP Property, uint PropertyRegDataType, StringBuilder PropertyBuffer, uint PropertyBufferSize, IntPtr RequiredSize);
6、获取USB接口信息 [DllImport("hid.dll")] private static extern void HidD_GetHidGuid(ref Guid HidGuid); [DllImport("kernel32.dll", SetLastError = true)] private static extern SafeFileHandle CreateFileA(string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile);