estrutura USB_NODE_CONNECTION_INFORMATION_EX (usbioctl.h)

A estrutura USB_NODE_CONNECTION_INFORMATION_EX é usada em conjunto com a solicitação IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX para obter informações sobre a conexão associada à porta USB indicada.

Sintaxe

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;

Membros

ConnectionIndex

Contém um valor maior ou igual a 1 que especifica o número da porta.

DeviceDescriptor

Contém uma estrutura do tipo USB_DEVICE_DESCRIPTOR que relata o descritor de dispositivo USB retornado pelo dispositivo anexado durante a enumeração.

CurrentConfigurationValue

Contém a ID usada com a solicitação SetConfiguration para especificar a configuração atual do dispositivo conectado à porta indicada. Para obter uma explicação desse valor, consulte a seção 9.4.7 na Especificação do Barramento Serial Universal 3.1 disponível na Biblioteca de Documentos USB.

Speed

Contém um valor do tipo USB_DEVICE_SPEED que indica a velocidade do dispositivo.

DeviceIsHub

Indica, quando TRUE, que o dispositivo anexado à porta é um hub.

DeviceAddress

Contém o endereço relativo ao barramento atribuído por USB do dispositivo que está anexado à porta.

NumberOfOpenPipes

Indica o número de pipes USB abertos associados à porta.

ConnectionStatus

Contém um enumerador do tipo USB_CONNECTION_STATUS que indica o status de conexão.

PipeList[0]

Contém uma matriz de estruturas do tipo USB_PIPE_INFO que descreve os pipes abertos associados à porta. As descrições de pipe incluem o deslocamento de agendamento do pipe e o descritor de ponto de extremidade associado. Essas informações podem ser usadas para calcular o uso da largura de banda.

Comentários

Se não houver nenhum dispositivo conectado, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX' apenas retornará informações sobre a porta. Se um dispositivo estiver conectado à porta IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX retornará informações sobre a porta e o dispositivo conectado.

A estrutura USB_NODE_CONNECTION_INFORMATION_EX é uma versão estendida do USB_NODE_CONNECTION_INFORMATION. As duas estruturas são idênticas, exceto por um membro. Na estrutura estendida, o membro Speed indica a velocidade do dispositivo.

O membro Speed da estrutura USB_NODE_CONNECTION_INFORMATION_EX é um UCHAR e pode especificar qualquer um dos valores do enumerador USB_DEVICE_SPEED . O membro Speed dá suporte a até UsbHighSpeed (USB 2.0). Para determinar se um dispositivo dá suporte a UsbSuperSpeed (USB 3.0), use a estrutura USB_NODE_CONNECTION_INFORMATION_EX_V2 .

O snippet de código C++ a seguir do exemplo USBView demonstra como determinar se um dispositivo dá suporte a 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;
}

Requisitos

Requisito Valor
Cabeçalho usbioctl.h (include Usbioctl.h)

Confira também