Compartilhar via


IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES IOCTL (usbioctl.h)

A solicitação de controle de E/S IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES é enviada por um aplicativo para recuperar informações sobre uma porta específica em um hub USB.

IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES é 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_PORT_CONNECTOR_PROPERTIES alocada por um chamador. O chamador deve definir os membros da estrutura da seguinte maneira:

  • O chamador deve especificar o número da porta que está sendo consultada 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 especificar o membro CompanionIndex. Para um hub SuperSpeed, o chamador deve definir o membro CompanionIndex como 0.

    O chamador pode usar companionIndex para obter números de porta associados à porta que está sendo consultada. Se mais de uma porta complementar estiver associada à porta, para obter todos os números de porta, o aplicativo poderá enviar a solicitação em um loop. Comece com CompanionIndex definido como 0 e incremente o valor CompanionIndex em cada iteração até que a solicitação seja concluída com CompanionPortNumber definido como 0 e CompanionHubSymbolicLinkName for NULL.

Comprimento do buffer de entrada

O membro Parameters.DeviceIoControl.InputBufferLength indica o tamanho, em bytes, do buffer alocado pelo chamador apontado por AssociatedIrp.SystemBuffer. Para obter mais informações, consulte Comentários.

Buffer de saída

Na saída, USB_PORT_CONNECTOR_PROPERTIES, apontado pelo AssociatedIrp.SystemBuffer, é preenchido com informações sobre o conector físico associado à porta.

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 USB define Status à condição de erro apropriada, como STATUS_INVALID_PARAMETER ou STATUS_INSUFFICIENT_RESOURCES. Se o hub não tiver sido iniciado ou não estiver funcional, a solicitação retornará STATUS_UNSUCCESSFUL.

Observações

O chamador deve fornecer um buffer grande o suficiente para manter uma estrutura de USB_PORT_CONNECTOR_PROPERTIES e o nome de link simbólico de um hub complementar, se esse hub estiver associado à porta especificada. Para obter o tamanho do buffer a ser alocado, o chamador deve enviar uma solicitação IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES. Na solicitação, AssociatedIrp.SystemBuffer deve ser uma estrutura de USB_PORT_CONNECTOR_PROPERTIES alocada por chamador e Parameters.DeviceIoControl.InputBufferLength deve ser sizeof(USB_PORT_CONNECTOR_PROPERTIES). Após a conclusão bem-sucedida, o membro ActualLength de USB_PORT_CONNECTOR_PROPERTIES indica o tamanho real do buffer. Se existir um nome de link simbólico, o valor recebido inclui o tamanho da cadeia de caracteres que armazena o nome do link.

Com base no valor ActualLength, o chamador pode alocar um buffer e enviar a solicitação IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES novamente. Após a conclusão da solicitação, o buffer é preenchido com informações de porta e o membro CompanionHubSymbolicLinkName é uma cadeia de caracteres Unicode que contém o nome simbólico do link do hub complementar.

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)

Consulte também

IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES

USB_HUB_INFORMATION_EX

USB_PORT_CONNECTOR_PROPERTIES