我正在尝试为一个相当简单的USB设备创建一个简单的读/写应用程序,但结果却并非如此简单。
我正在使用WinUSB和SetupAPI DLL并从头开始工作,因为我似乎无法找到任何实际可用于我需要的东西。 PyWinUSB和PyUSB等依旧近在咫尺,但当我尝试用它们实际写入设备时,它们就失败了。
无论如何,现在我仍然处于零点。按照说明,我从SetupAPI.dll调用SetupDiGetClassDevsExW函数。该函数正确执行,如调用kernel32.lasterror函数返回零所示,但我从调用中返回的唯一值是整数值。那是对的吗?这甚至是正确的功能吗? (有4个是相似的,并且没有简单的SetupDiGetClassDevs函数。这4个函数是SetupGetClassDevsExW,SetupGetCLassDevsExA,SetupGetClassDevsA和SetupGetClassDevsW。)我是否需要创建一个类来处理它?我问,因为调用下一个函数SetupDiEnumDeviceInterfaces,只返回了代码为259的失败,这意味着根据快速谷歌搜索,ERROR_NO_MORE_ITEMS。
我已经取得了一些进展,因为有人向我展示了创建用于保存某些信息的结构的正确类结构方法,但是我以前从未真正使用过USB设备的编程,更不用说Python了,我还是有点卡住了。我将提供答案所需的更多信息,但是现在我不想让这个Q / A陷入不必要的信息。
感谢。
答案 0 :(得分:0)
有一个SetupDiGetClassDevsA
和SetupDiGetClassDevsW
。 Ex
版本允许连接到远程计算机。 A
版本为第二个参数采用字节字符串,而W
版本采用Unicode字符串。返回值是设备信息集的句柄。
设备信息集必须使用SetupDiEnumDeviceInfo
或SetupDiEnumDeviceInterfaces
进行迭代。第二个函数仅在将DIGCF_DEVICEINTERFACE
作为标志传递给SetupDiGetClassDevs
并传递ClassGuid参数的接口GUID时才有效;否则,您传递设备类GUID,只有SetupDiEnumDeviceInfo
将返回任何内容。