C#检测最后连接的USB驱动USB协议(usb3或2)

时间:2015-01-03 16:22:15

标签: c# visual-studio-2012 usb detect

我正在尝试编写一个简单的轻量级应用程序,它将告诉您最后连接的USB驱动器是否以usb 3或usb 2速度进行协商。 到目前为止,我只使用一些开源代码成功显示最后连接的驱动器与Win32_DiskDrive,但我无法检索有关它运行的设备速度的任何信息。 我发现Win32_USBControllerDevice确实有" negotiatedspeed"属性。 但我无法找到有关如何使用它构建控制台应用程序的任何有用资源。 也许某人有一个代码片段供我使用? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我找到了一个有效的解决方案here

USB devices

它是如何工作的?好吧,它列举了USB主机控制器。获取根集线器并枚举拥有它的端口。如果连接了设备且它不是集线器,则它会显示以下所需信息:

示例代码:

    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();
    }