无法从DeviceInformation.Id创建UsbDevice

我正在尝试使用仅适用于PC的通用Windows应用程序(无手机)(WinRT)通过Windows.Devices.Usb API连接到设备(SecuGen Hamster Pro 20)。

该设备是指纹扫描仪。

我已经完成了在线找到的所有步骤:

我找了所有使用的设备:

var myDevices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(); 

这将返回大约1400个设备。 经过一些过滤使用:

  var resultList = myDevices.Where(s => s.Name.ToLower().Contains("secu")).ToList(); 

resultList在我的机器中包含3个设备(我在其他机器上尝试了它,并在一些机器上找到了10个结果)。

我没有使用重载来查找设备DeviceInformation.FindAllAsync(String aqsFilter)因为它返回0结果,但我确定我做得对(使用了正确的VID和PID)

这里的问题是当我尝试使用以下三种结果中的任何一种创建UsbDevice对象时:

 UsbDevice device = await UsbDevice.FromIdAsync(resultList[0].Id); 

返回值为null,我已经尝试了所有这些( resultList[0]resultList[1]resultList[2] )没有运气。

我使用以下方法配置function:

       

我还试图从DeviceInformation.FindAllAsync()返回的1400个设备中创建一个UsbDevice对象但是所有返回null甚至一些抛出一个exception,表示the system cannot find the file specified 0x80070002

我试图为它返回DeviceAccessStatus.Unspecified的设备读取DeviceAccessStatus.Unspecified

任何人都可以带我到我在这里失踪的地方?

您必须使用UsbDevice.GetDeviceSelector,然后在搜索设备时使用选择器。 如果没有返回任何内容,则设备未正确“配置”以使用WinUSB.sys驱动程序。 (根据我的理解,它必须使用该驱动程序与usbdevice类一起使用)。

如果您手动告诉它在设备管理器中使用该驱动程序,那么,理论上,您仍然必须在使用regedit之前更改密钥(注意:我这样做但它仍然无效)。 我在这里找到了一个解决方案: http : //www.lewisbenge.net/2013/09/20/integrating-windows-8-1-with-owi-535-robotic-arm/基本上,你必须安装使用inf文件的驱动程序。 使用在该站点上链接的那个并根据目标平台将NTamd64替换为NTarm