я не могу прочитать 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 ... так почему же невозможно прочитать символическое имя?