LibUsbDotNet не перечисляет USB-принтер

У меня есть этот код в моей программе 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

1 ответ

В Windows libusb поддерживает только несколько драйверов, пожалуйста, прочтите https://github.com/libusb/libusb/wiki/FAQ

Устройство с отпечатками пальцев найдено, поскольку оно использует драйвер HID (возможно). Ваш принтер не HID, ни WinUSB.sys, ни LibusbK.sys. Он также не использует "драйвер winspool" (как ошибочно утверждает ваш вопрос). Winspool - это сервис, а не драйвер устройства.

Используйте API принтера, чтобы найти путь к устройству, затем откройте его с помощью CreateFile и запишите в него. Смотрите вопрос, который вы должны были задать.

Другие вопросы по тегам