структура USB_NODE_CONNECTION_INFORMATION_EX (usbioctl.h)
Структура USB_NODE_CONNECTION_INFORMATION_EX используется вместе с запросом IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX для получения сведений о подключении, связанном с указанным USB-портом.
Синтаксис
typedef struct _USB_NODE_CONNECTION_INFORMATION_EX {
ULONG ConnectionIndex;
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
UCHAR CurrentConfigurationValue;
UCHAR Speed;
BOOLEAN DeviceIsHub;
USHORT DeviceAddress;
ULONG NumberOfOpenPipes;
USB_CONNECTION_STATUS ConnectionStatus;
USB_PIPE_INFO PipeList[0];
} USB_NODE_CONNECTION_INFORMATION_EX, *PUSB_NODE_CONNECTION_INFORMATION_EX;
Члены
ConnectionIndex
Содержит значение больше или равно 1, указывающее число порта.
DeviceDescriptor
Содержит структуру типа USB_DEVICE_DESCRIPTOR, которая сообщает дескриптор USB-устройства, возвращаемый подключенным устройством во время перечисления.
CurrentConfigurationValue
Содержит идентификатор, используемый с запросом SetConfiguration, чтобы указать текущую конфигурацию устройства, подключенного к указанному порту. Описание этого значения см. в разделе 9.4.7 в спецификации универсальной последовательной шины 3.1, доступной в USB-библиотеке документов.
Speed
Содержит значение типа USB_DEVICE_SPEED, указывающее скорость устройства.
DeviceIsHub
Указывает, когда TRUE, устройство, подключенное к порту, является концентратором.
DeviceAddress
Содержит назначаемый USB-адрес относительно шины устройства, подключенного к порту.
NumberOfOpenPipes
Указывает количество открытых USB-каналов, связанных с портом.
ConnectionStatus
Содержит перечислитель типа USB_CONNECTION_STATUS, указывающий состояние подключения.
PipeList[0]
Содержит массив структур типа USB_PIPE_INFO, описывающих открытые каналы, связанные с портом. Описания каналов включают смещение расписания канала и дескриптор связанной конечной точки. Эти сведения можно использовать для вычисления использования пропускной способности.
Замечания
Если устройство не подключено, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX"просто возвращает сведения о порту. Если устройство подключено к порту IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX возвращает сведения о порту и подключенном устройстве.
Структура USB_NODE_CONNECTION_INFORMATION_EX — это расширенная версия USB_NODE_CONNECTION_INFORMATION. Две структуры идентичны, за исключением одного члена. В расширенной структуре элемент скорости указывает скорость устройства.
Элемент скорости структуры USB_NODE_CONNECTION_INFORMATION_EX является UCHAR, и он может указать любое из значений перечислителя USB_DEVICE_SPEED. Член скорость поддерживает до usbHighSpeed (USB 2.0). Чтобы определить, поддерживает ли устройство UsbSuperSpeed (USB 3.0), используйте структуру USB_NODE_CONNECTION_INFORMATION_EX_V2.
Следующий фрагмент кода C++ из примера USBView USBView демонстрирует, как определить, поддерживает ли устройство UsbSuperSpeed (USB 3.0):
// Since the USB_NODE_CONNECTION_INFORMATION_EX is used to display
// the device speed, but the hub driver doesn't support indication
// of superspeed, we overwrite the value if the super speed
// data structures are available and indicate the device is operating
// at SuperSpeed.
if (connectionInfoEx->Speed == UsbHighSpeed
&& connectionInfoExV2 != NULL
&& (connectionInfoExV2->Flags.DeviceIsOperatingAtSuperSpeedOrHigher ||
connectionInfoExV2->Flags.DeviceIsOperatingAtSuperSpeedPlusOrHigher))
{
connectionInfoEx->Speed = UsbSuperSpeed;
}
Требования
Требование | Ценность |
---|---|
заголовка | usbioctl.h (include Usbioctl.h) |