如何在 C# 中读取 U 盘的 Superspeed 或 Highspeed
How to read Superspeed or Highspeed of a USB flash drive in C#
我在这个网站上找到了这个问题和答案:Detect if device is using USB 3.0
但是当我 运行 程序时,结果从来没有 return 建立超高速连接。我将 USB3.0 闪存驱动器插入 USB 3 端口,所以它对我来说应该是 return SuperSpeed。
完整代码如下来自<@Sani Huttunen>
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.0 闪存驱动器在 USB 3 端口总是 returns Highspeed 而不是 Superspeed。
由于向后兼容,SuperSpeed/USB3 设备返回报告为 HighSpeed/USB2,如果您确实需要知道设备是否超速,您需要使用:
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2
https://msdn.microsoft.com/en-us/library/windows/hardware/hh450861(v=vs.85).aspx
希望对您有所帮助
我在这个网站上找到了这个问题和答案:Detect if device is using USB 3.0 但是当我 运行 程序时,结果从来没有 return 建立超高速连接。我将 USB3.0 闪存驱动器插入 USB 3 端口,所以它对我来说应该是 return SuperSpeed。
完整代码如下来自<@Sani Huttunen>
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.0 闪存驱动器在 USB 3 端口总是 returns Highspeed 而不是 Superspeed。
由于向后兼容,SuperSpeed/USB3 设备返回报告为 HighSpeed/USB2,如果您确实需要知道设备是否超速,您需要使用:
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2
https://msdn.microsoft.com/en-us/library/windows/hardware/hh450861(v=vs.85).aspx
希望对您有所帮助