LibUsbDotNet не перечисляет USB-принтер - PullRequest
0 голосов
/ 08 января 2019

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

0 голосов
/ 09 января 2019

В 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 и запишите в него. См. вопрос, который вы должны были задать.

...