1,488
社区成员
发帖
与我相关
我的任务
分享
Private Sub cmdUSBTest_Click()
Dim HidGuid As GUID
Dim GUIDString As String
Dim MemberIndex As Long
Dim HidDevInfo As Long 'SetupDiGetClassDevs的返回值
Dim Result As Long
Dim MyDeviceInterfaceData As SP_DEVICE_INTERFACE_DATA
Dim RequiredSize As Long 'SetupDiGetDeviceInterfaceDetail的参数
Dim MyDeviceInterfaceDetailData As SP_DEVICE_INTERFACE_DETAIL_DATA
Dim DetailData As Long
Dim DetailDataBuffer() As Byte
Dim DevicePathName As String
HidD_GetHidGuid HidGuid
HidDevInfo = SetupDiGetClassDevs(HidGuid, vbNullString, 0, (DIGCF_PRESENT Or DIGCF_DEVICEINTERFACE))
For MemberIndex = 0 To 10
MyDeviceInterfaceData.cbSize = LenB(MyDeviceInterfaceData)
If SetupDiEnumDeviceInterfaces(HidDevInfo, 0, HidGuid, MemberIndex, MyDeviceInterfaceData) = 0 Then
SetupDiDestroyDeviceInfoList HidDevInfo
Else
SetupDiGetDeviceInterfaceDetail HidDevInfo, MyDeviceInterfaceData, 0, 0, RequiredSize, 0
DetailData = RequiredSize
MyDeviceInterfaceDetailData.cbSize = Len(MyDeviceInterfaceDetailData)
ReDim DetailDataBuffer(RequiredSize)
RtlMoveMemory DetailDataBuffer(0), MyDeviceInterfaceDetailData, 4
If SetupDiGetDeviceInterfaceDetail(HidDevInfo, MyDeviceInterfaceData, VarPtr(DetailDataBuffer(0)), DetailData, RequiredSize, 0) <> 0 Then
DevicePathName = CStr(DetailDataBuffer())
DevicePathName = StrConv(DevicePathName, vbUnicode)
DevicePathName = Right(DevicePathName, Len(DevicePathName) - 4)
MsgBox DevicePathName
End If
End If
Next MemberIndex
SetupDiDestroyDeviceInfoList HidDevInfo
End Sub