gpt4 book ai didi

c# - 如何在 C# 中读取 U 盘的 Superspeed 或 Highspeed

转载 作者:行者123 更新时间:2023-11-30 18:26:39 33 4
gpt4 key购买 nike

我在这个网站上找到了这个问题和答案:Detect if device is using USB 3.0但是当我运行该程序时,结果从未返回 SuperSpeed 连接。我将 USB3.0 闪存驱动器插入 USB 3 端口,因此它应该将 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 端口总是返回 Highspeed 而不是 Superspeed。

最佳答案

由于向后兼容,SuperSpeed/USB3 设备被报告为 HighSpeed/USB2,如果你真的需要知道设备是否是 Super speed,你需要使用:

IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2

https://msdn.microsoft.com/en-us/library/windows/hardware/hh450861(v=vs.85).aspx

希望对你有帮助

关于c# - 如何在 C# 中读取 U 盘的 Superspeed 或 Highspeed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28204285/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com