Как я могу определить скорость USB-порта? - PullRequest
4 голосов
/ 25 августа 2009

Существует ли простой способ программно определить скорость (или версию) USB-порта? Я рассчитываю контролировать скорость передачи данных на USB-порт в зависимости от его максимальной пропускной способности.

Ответы [ 2 ]

5 голосов
/ 25 августа 2009

Если вам нужно решение для Windows, это должно быть хорошим началом:

http://msdn.microsoft.com/en-us/library/ms793313.aspx

В основном вы должны попробовать это:

  1. Перечисление USB-устройств и символических имен для их драйверов
  2. Открыть дескриптор драйвера устройства USB через его символическое имя через CreateFile
  3. Выполните DeviceIoControl на ручке драйвера с управляющим кодом IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX. Это позволит вам вернуть структуру USB_NODE_CONNECTION_INFORMATION_EX. Там у вас есть член с именем Speed типа USB_DEVICE_SPEED.
  4. (закрыть ручку водителя)

Это также может быть вам интересно: CodeProject: перечислить свойства установленного устройства

0 голосов
/ 26 августа 2009

Чтобы ответить на ваш вопрос, я уверен, что есть способы получения необходимой вам информации. Я не знаю ответа для windows, но в Linux есть файлы, которые вы можете прочитать в структуре каталогов sysfs.

Контроль скорости обычно осуществляется водителями и оборудованием, управляющим шиной. Большинство современных контроллеров USB действительно имеют 2 контроллера на каждый подключенный порт. 1 для более медленной скорости 12 Мбит / с USB 1.0, а другой для более высокой скорости 480 Мбит / с USB 2.0. Внутри есть магический переключатель, который правильно его соединяет. Сам драйвер гарантирует, что все перечислено правильно, управляет потоком и т. Д. Приложению более высокого уровня «пространство пользователя» обычно не нужно беспокоиться об этих вещах.

Кроме того, если у вас есть устройство, способное работать со скоростью, превышающей 12 Мбит / с, и вы подключаете его к порту 12 Мбит / с, оно будет уменьшено до 12 Мбит / с, нравится вам это или нет. Это то, что вы хотите знать, что вас затянули?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...