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

IRP_MJ_DEVICE_CONTROL

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

   
Cliente mínimo com suporte Windows 8
Servidor mínimo com suporte Nenhum compatível
Cabeçalho usbioctl.h (include Usbioctl.h)