访问USB设备时出错,SetupDiEnumDeviceInterfaces总是返回0,请问是什么原因

baiyongming 2008-10-13 05:17:50

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


我的本意是与USB接口的打印机传输数据,写了一大段后始终出错,于是只写一小部分,逐行测试,发现SetupDiEnumDeviceInterfaces总是返回0,但我已经插了U盘了啊,怎么回事?
请各位高手分析指教!
...全文
93 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
baiyongming 2008-10-20
  • 打赏
  • 举报
回复
没人回答吗?

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧