我的C#程序中包含以下代码:
UsbRegistry reg = null;
if (productId == 0)
reg = UsbDevice.AllDevices.FirstOrDefault(d => d.Vid.Equals(vendorId));
else
reg = UsbDevice.AllDevices.FirstOrDefault(d => d.Vid.Equals(vendorId)
&& d.Pid.Equals(productId));
if (reg != null)
reg.Open(out _device);
UsbDevice.AllDevices
属性仅列出USB指纹设备,即使我也将USB打印机也连接到USB连接器。
打印机已牢固连接并已打开,实际上,如果我使用Winspool驱动程序进行打印,则它可以工作。
我需要绕过Winspool驱动程序,但直接打印将字节发送到连接打印机的USB端口。
这里可能发生什么事?
此内容已交叉发布到this Github issue
答案 0 :(得分:1)
在Windows上,libusb仅支持一些驱动程序,请阅读https://github.com/libusb/libusb/wiki/FAQ#How_to_use_libusb_under_Windows
找到您的指纹设备,因为它使用了HID驱动程序(可能是)。您的打印机不是HID,也不是WinUSB.sys,也不是LibusbK.sys。它也不使用“ winspool驱动程序”(因为您的问题错误地声称)。 Winspool是一项服务,而不是设备驱动程序。
使用打印机API查找设备路径,然后使用CreateFile将其打开并写入。参见the question you should have asked.