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) |