Ошибка LibUsbDotNet SymbolicName

я не могу прочитать SymbolicName из LibUsb. Это пример кода:

static void Main(string[] args)
{
var devs = UsbDevice.AllDevices;
foreach (UsbRegistry usbRegistry in devs)
{
    String name = usbRegistry.SymbolicName;
}
Console.ReadLine();
UsbDevice.Exit();
}

Имя строки не содержит правильного символьного имени. Понятия не имею почему.

Проблема, похоже, в LibUsbRegistry.cs. Функция:

internal ErrorCode GetCustomDeviceKeyValue(SafeFileHandle usbHandle, string key, out byte[] propData, int maxDataLength)

вызывает LibUsbDriverIO.UsbIOSync с параметром: LibUsbIoCtl.GET_CUSTOM_REG_PROPERTY, а в LibUsbDriverIO.cs функция UsbIOSync вызывает Kernel32.DeviceIoControlAsObject. Эта функция возвращает false.

Некоторый код:

LibUsbRegistry:

bool bSuccess = LibUsbDriverIO.UsbIOSync(usbHandle,
                                                 LibUsbIoCtl.GET_CUSTOM_REG_PROPERTY,
                                                 bytesReq,
                                                 bytesReq.Length,
                                                 gcbytesReq.AddrOfPinnedObject(),
                                                 bytesReq.Length,
                                                 out iReturnBytes);

LibUsbDriverIO:

!Kernel32.DeviceIoControlAsObject(dev, code, inBuffer, inSize, outBuffer, outSize, ref ret, deviceIoOverlapped.GlobalOverlapped)

Проблема просто возникает с LibUsbIoCtl.GET_CUSTOM_REG_PROPERTY. Но это все предварительно скомпилированный код из LibUsb ... так почему же невозможно прочитать символическое имя?


person Richy1989    schedule 01.08.2014    source источник


Ответы (1)


Вы должны интерпретировать это как «нет SymbolicName». Вы можете соотносить то, что получаете, с содержимым реестра. Запустите Regedit.exe и перейдите к HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ USB. Вы увидите ключи VID и PID для устройств, которые вы видите на вашем компьютере. Подраздел интерфейса имеет подраздел «Параметры устройства», который содержит значение «SymbolicName».

У меня на машине есть несколько, которые не имеют такой ценности. Вы ожидаете этого от типа USB-драйвера, который предоставляет альтернативный способ взаимодействия с устройством, например, эмулятора последовательного порта.

person Hans Passant    schedule 01.08.2014