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


структура 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)

См. также