Поделиться через


структура 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. Две структуры идентичны, за исключением одного члена. В расширенной структуре элемент Speed указывает скорость устройства.

Элемент Speed структуры USB_NODE_CONNECTION_INFORMATION_EX является UCHAR и может указать любое из значений перечислителя USB_DEVICE_SPEED . Элемент Speed поддерживает до UsbHighSpeed (USB 2.0). Чтобы определить, поддерживает ли устройство UsbSuperSpeed (USB 3.0), используйте структуру USB_NODE_CONNECTION_INFORMATION_EX_V2 .

В следующем фрагменте кода C++ из примера 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 (включая Usbioctl.h)

См. также раздел