我一直在尋找一種跨平臺的方式來在C#中獲取usb到達和刪除事件,並且我找到了「LibUsbDotNet C#USB Library」(http://sourceforge.net/projects/libusbdotnet/?source=navbar)。如何在Linux中使用libusb獲取設備路徑
它的工作原理應該如此,但在Linux中似乎我無法獲得設備安裝點(路徑)。在Linux中,它使用「libusb」庫,它沒有獲取設備路徑的方法。
這裏是檢測設備事件的簡單代碼示例:
internal class DeviceNotification
{
public static IDeviceNotifier UsbDeviceNotifier = DeviceNotifier.OpenDeviceNotifier();
private static void Main(string[] args)
{
// Hook the device notifier event
UsbDeviceNotifier.OnDeviceNotify += OnDeviceNotifyEvent;
// Exit on and key pressed.
Console.Clear();
Console.WriteLine();
Console.WriteLine("Waiting for system level device events..");
Console.Write("[Press any key to exit]");
while (!Console.KeyAvailable)
Application.DoEvents();
UsbDeviceNotifier.Enabled = false; // Disable the device notifier
// Unhook the device notifier event
UsbDeviceNotifier.OnDeviceNotify -= OnDeviceNotifyEvent;
}
private static void OnDeviceNotifyEvent(object sender, DeviceNotifyEventArgs e)
{
// A Device system-level event has occured
Console.SetCursorPosition(0,Console.CursorTop);
Console.WriteLine(e.ToString()); // Dump the event info to output.
Console.WriteLine();
Console.Write("[Press any key to exit]");
}
}
,這裏是輸出的一個示例:
[設備類型:設備接口] [的EventType:DeviceArrival]名稱: usbdev1.17 BusNumber:1 DeviceAddress:17長度:18描述符類型:設備 BcdUsb:0200類別:PerInterface亞類:0×00協議:0×00 MaxPacketSize0:64廠商ID:0x059F產品編號:0x1014 BcdDevice:0×0000 ManufacturerStringIndex:1個ProductStringIndex:2 SerialStringIndex:3 ConfigurationCount:1
[按任意鍵退出] [設備類型:設備接口] [的EventType:DeviceRemoveComplete]名稱:usbdev1.17 BusNumber:1 DeviceAddress:17長度:18描述符類型:設備BcdUsb:0200 類別:PerInterface亞類:0×00協議:0×00 MaxPacketSize0:64 廠商ID:0x059F產品編號:0x1014 BcdDevice:0×0000 ManufacturerStringIndex:1 ProductStringIndex:2 SerialStringIndex:3 ConfigurationCount:1
我曲estion是如何獲得附加或移除設備的路徑,或者如何將libusb返回的信息與實際設備路徑綁定?
請注意,如果連接的設備不代表已安裝。 – wRAR 2013-02-20 13:26:59
是的,我意識到這一點,但事情是我無法獲得設備路徑 – LAS 2013-02-20 13:48:27