-2

我的 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 端口。

这里可能会发生什么?

这已交叉发布到此 Github 问题

4

1 回答 1

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 打开并写入。看看你应该问的问题。

于 2019-01-09T00:35:40.773 回答