簡體   English   中英

C#檢測最后連接的USB驅動器USB協議(USB3或2)

[英]C# detect last connected usb drives USB Protocol (usb3 or 2)

我正在嘗試編寫一個簡單的輕量級應用程序,該程序將告訴您上次連接的USB驅動器是否以USB 3或USB 2速度協商。 到目前為止,我僅成功顯示了Win32_DiskDrive上一個已連接的驅動器,並提供了一些開源代碼,但是我無法檢索到有關它正在運行的設備速度的任何信息。 我發現Win32_USBControllerDevice確實具有“ negotiatedspeed”屬性。 但是我找不到任何有關如何使用它來構建控制台應用程序的有用資源。 也許有人有一個代碼片段供我使用? 謝謝您的幫助!

這里找到了可行的解決方案。

USB設備

這個怎么運作? 好吧,它列舉了USB主機控制器。 獲取Root Hub並枚舉擁有它的端口。 如果連接了某個設備,但它不是集線器,那么它將顯示所需的信息,如下所示:

示例代碼:

    private static void Main( string[] args )
    {
        var hostCtrls = USB.GetHostControllers();

        foreach ( var hostCtrl in hostCtrls )
        {
            var hub = hostCtrl.GetRootHub();
            foreach ( var port in hub.GetPorts() )
            {
                if ( port.IsDeviceConnected && !port.IsHub )
                {
                    var device = port.GetDevice();
                    Console.WriteLine( "Serial: " + device.DeviceSerialNumber );
                    Console.WriteLine( "Name: " + device.Name );
                    Console.WriteLine( "Speed:  " + port.Speed );
                    Console.WriteLine( "Port:   " + device.PortNumber + Environment.NewLine );
                }
            }
        }
        Console.ReadLine();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM