IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 IOCTL (usbioctl.h)
O controle de E/ S IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 é enviado por um aplicativo para recuperar informações sobre os protocolos compatíveis com uma porta USB específica em um hub. A solicitação também recupera a capacidade de velocidade da porta.
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 é uma solicitação de controle de E/S no modo de usuário. Essa solicitação tem como destino o dispositivo de hub USB (Barramento Serial Universal) (GUID_DEVINTERFACE_USB_HUB).
Código principal
Buffer de entrada
AssociatedIrp.SystemBuffer aponta para uma estrutura de USB_NODE_CONNECTION_INFORMATION_EX_V2 alocada pelo chamador.
Na entrada, o chamador deve definir os membros da estrutura da seguinte maneira:
- O chamador deve especificar o número da porta no membro ConnectionIndex . ConnectionIndex deve ser um valor no intervalo de 1 a n, em que n é o número de porta mais alto recuperado em uma solicitação de controle de E/S IOCTL_USB_GET_HUB_INFORMATION_EX anterior.
- O chamador deve definir um sinalizador de protocolo no membro SupportedUsbProtocols (consulte USB_PROTOCOLS). No Windows 8, SupportedUsbProtocols.Usb300 deve ser definido como 1. Caso contrário, a solicitação falhará com o código de erro STATUS_INVALID_PARAMETER.
- O chamador deve definir o membro Length como o tamanho, em bytes, do buffer alocado pelo chamador apontado por AssociatedIrp.SystemBuffer. O tamanho do buffer deve ser
sizeof (USB_NODE_CONNECTION_INFORMATION_EX_V2)
.
Comprimento do buffer de entrada
O membro Parameters.DeviceIoControl.InputBufferLength indica o tamanho, em bytes, do buffer alocado pelo chamador cujo tamanho é sizeof(USB_NODE_CONNECTION_INFORMATION_EX_V2)
igual a .
Buffer de saída
Na saída, a estrutura de USB_NODE_CONNECTION_INFORMATION_EX_V2 apontada por AssociatedIrp.SystemBuffer é preenchida com informações sobre o dispositivo anexado.
Comprimento do buffer de saída
O membro Parameters.DeviceIoControl.OutputBufferLength indica o tamanho, em bytes, do buffer de saída SystemBuffer.
Bloco de status
A pilha USB define Irp-IoStatus.Status como STATUS_SUCCESS se a solicitação for bem-sucedida>. Caso contrário, a pilha de driver USB define Status como a condição de erro apropriada, como STATUS_INVALID_PARAMETER ou STATUS_INSUFFICIENT_RESOURCES.
Comentários
O IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 solicitação consulta o hub da porta especificada para obter informações sobre protocolos compatíveis com a porta e a capacidade de velocidade operacional, se um dispositivo estiver anexado à porta.
Se a solicitação for concluída com êxito, o membro SupportedUsbProtocols.Usb200 do USB_NODE_CONNECTION_INFORMATION_EX_V2 indicará protocolos compatíveis com a porta. Por exemplo, se a porta der suporte ao protocolo de sinalização definido pela especificação USB 2.0, SupportedUsbProtocols.Usb200 será definido como 1.
Observe que SupportedUsbProtocols.Usb110 está sempre definido como 1 para hubs de alta velocidade e velocidade total. Isso ocorre porque um hub com capacidade de alta velocidade dá suporte ao protocolo USB 1.1 por meio de transações divididas e tradutores de transações. SupportedUsbProtocols.Usb110 nunca é definido como 1 para uma porta USB 3.0.
Além disso, a solicitação também determina se a porta e o dispositivo anexado são capazes de operar no SuperSpeed. Se estiverem, o membro Flags.DeviceIsSuperSpeedCapableOrHigher será definido como 1. Se o dispositivo anexado à porta estiver operando atualmente em SuperSpeed, DeviceIsOperatingAtSuperSpeedOrHigher será definido como 1.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 |
Servidor mínimo com suporte | Nenhum compatível |
Cabeçalho | usbioctl.h (include Usbioctl.h) |