我无法从 LibUsb 中读出 SymbolicName。这是一些示例代码:
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。这个函数返回假。
一些代码:
LibUsb注册表:
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 的预编译代码。所以为什么不能读出符号名称。