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 por um 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 do 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 comprimento para 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 do indica o tamanho, em bytes, do buffer alocado pelo chamador cujo tamanho é igual a sizeof(USB_NODE_CONNECTION_INFORMATION_EX_V2)
.
Buffer de saída
Na saída, a estrutura de USB_NODE_CONNECTION_INFORMATION_EX_V2 apontada pelo 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 para STATUS_SUCCESS se a solicitação for bem-sucedida. Caso contrário, a pilha do driver USB define Status à condição de erro apropriada, como STATUS_INVALID_PARAMETER ou STATUS_INSUFFICIENT_RESOURCES.
Observações
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 SupportedUsbProtocols.Usb200 membro do USB_NODE_CONNECTION_INFORMATION_EX_V2 indicará os 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 compatível com 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 atualmente operando no SuperSpeed, DeviceIsOperatingAtSuperSpeedOrHigher será definido como 1.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 8 |
servidor com suporte mínimo | Nenhum com suporte |
cabeçalho | usbioctl.h (include Usbioctl.h) |