LibUsbDotNet不列出USB打印机

时间:2019-01-08 18:28:45

标签: c# libusb-1.0 libusbdotnet

我的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

1 个答案:

答案 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.