【发布时间】:2015-01-28 23:18:05
【问题描述】:
我在这个网站上找到了这个问题和答案:Detect if device is using USB 3.0 但是当我运行程序时,结果从未返回 SuperSpeed 连接。我将 USB3.0 闪存驱动器插入 USB 3 端口,因此它应该返回 SuperSpeed 给我。
完整的代码是
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Diagnostics;
class MainCode
{
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("Speed: " + port.Speed);
Console.WriteLine("Port: " + device.PortNumber + Environment.NewLine);
}
}
}
}
}
和这里的图书馆: http://read.pudn.com/downloads105/sourcecode/windows/vxd/432626/USBLib/USB.cs__.htm
在图书馆,我看到他们只有:
enum USB_DEVICE_SPEED : byte
{
UsbLowSpeed,
UsbFullSpeed,
UsbHighSpeed,
}
这里的问题是如何读取U盘的正确速度。使用上面的代码和库,我的 USB 3 端口中的 USB 3.0 闪存驱动器总是返回 Highspeed 而不是 Superspeed。
【问题讨论】:
标签: c# usb enumeration