estrutura USB_PORT_CONNECTOR_PROPERTIES (usbioctl.h)
A estrutura USB_PORT_CONNECTOR_PROPERTIES é usada com a solicitação de controle de E/S IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES para recuperar informações sobre uma porta em um hub SuperSpeed específico.
Sintaxe
typedef struct _USB_PORT_CONNECTOR_PROPERTIES {
ULONG ConnectionIndex;
ULONG ActualLength;
USB_PORT_PROPERTIES UsbPortProperties;
USHORT CompanionIndex;
USHORT CompanionPortNumber;
WCHAR CompanionHubSymbolicLinkName[1];
} USB_PORT_CONNECTOR_PROPERTIES, *PUSB_PORT_CONNECTOR_PROPERTIES;
Membros
ConnectionIndex
O número da porta que está sendo consultado na solicitação. ConnectionIndex é especificado pelo chamador. Se houver n portas no hub SuperSpeed, as portas serão numeradas de 1 a n. Para obter o número de portas, o chamador primeiro envia uma solicitação de controle de E/S IOCTL_USB_GET_HUB_INFORMATION_EX. A solicitação recupera o número de porta mais alto no hub.
ActualLength
O número de bytes necessários para manter toda a estrutura USB_PORT_CONNECTOR_PROPERTIES, incluindo a cadeia de caracteres que contém o nome de link simbólico do hub complementar. Essa cadeia de caracteres é armazenada no membro CompanionHubSymbolicLinkName. O valor ActualLength é retornado pela solicitação IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES e usado pelo chamador para alocar um buffer para armazenar as informações recebidas. Para obter detalhes, consulte IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES.
UsbPortProperties
As propriedades da porta. Após a conclusão da solicitação de IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES, UsbPortProperties contém um OR bit a bit ou de um ou mais sinalizadores indicando as propriedades e os recursos da porta. Os sinalizadores são definidos em USB_PORT_PROPERTIES.
CompanionIndex
O índice da porta complementar associada à porta que está sendo consultada (especificada por ConnectionIndex). Se houver n portas complementares, essas portas serão indexadas de 0 a n–1.
Se uma porta for mapeada para mais de uma porta complementar, CompanionIndex será incrementado em várias consultas para enumerar todas as portas complementares.
Para hubs SuperSpeed e controladores xHCI, CompanionIndex é sempre 0. Para obter mais informações, consulte Comentários.
CompanionPortNumber
O número da porta complementar fornecida por CompanionIndex. Se a porta que está sendo consultada compartilhar um conector USB com uma porta em outro hub, CompanionPortNumber indicará o número da porta no outro hub.
CompanionHubSymbolicLinkName[1]
A cadeia de caracteres Unicode que contém o link simbólico do hub complementar que compartilha o conector USB. Se houver um hub complementar, CompanionPortNumber não será zero. Caso contrário, CompanionHubSymbolicLinkName [0] é NULL.
Observações
Um hub SuperSpeed 3.0 contém duas implementações de hub independentes. Uma delas é para dispositivos USB 2.0 e a implementação do hub é semelhante aos hubs 2.0 existentes. O outro hub é apenas para dispositivos SuperSpeed. Como a sinalização de ônibus USB 2.0 e 3.0 é eletricamente independente, ambos os hubs operam simultaneamente. Portanto, quando um hub SuperSpeed é conectado ao host, o Windows enumera os dois hubs de forma independente; um hub está associado a uma porta USB 2.0 e ao outro hub com uma porta USB 3.0. Cada hub tem suas portas downstream e upstream. Conectores físicos USB são compartilhados entre portas associadas a essas duas implementações de hub.
Da mesma forma, um controlador xHCI deve ser capaz de lidar com dispositivos SuperSpeed, de alta velocidade, de velocidade total e de baixa velocidade. A especificação USB 3.0 requer um controlador xHCI para conter duas unidades de execução independentes cada para as velocidades de barramento USB 3.0 e USB 2.0. A unidade de execução USB 3.0 manipula o tráfego SuperSpeed no ônibus. A unidade de execução USB 2.0 deve lidar com tráfego baixo, completo e de alta velocidade. Esse requisito pode ser atendido de várias maneiras. Por exemplo, em uma implementação, a unidade de execução USB 2.0 pode ter uma unidade de execução USB 1.1 downstream ou um hub USB 2.0 downstream. A outra unidade de execução lida com o tráfego SuperSpeed no ônibus. Por exemplo, em uma implementação, o controlador xHCI pode ter um hub USB 2.0 downstream (em vez de um controlador de host USB 2.0) com um tradutor de transações para lidar com tráfego de velocidade total e baixa velocidade. Esse hub downstream compartilha conectores com as portas do hub raiz SuperSpeed.
Nos casos em que os conectores USB são compartilhados, a porta que está sendo consultada por meio da solicitação de controle de E/S IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES é especificada por ConnectionIndex e a porta que compartilha o conector é chamada de porta complementar . Após a conclusão da solicitação, o CompanionIndex, CompanionPortNumbere CompanionHubSymbolicLinkName membros de USB_PORT_CONNECTOR_PROPERTIES podem ser usados para determinar o roteamento de porta nesses casos.
Se mais de uma porta complementar estiver associada à porta que está sendo consultada, o aplicativo poderá obter informações sobre todas as portas complementares enviando a solicitação de controle de E/S IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES em um loop e incrementando o valor CompanionIndex em cada iteração. Quando todas as portas foram enumeradas e não há nenhuma porta associada ao índice especificado em CompanionIndex, a solicitação é concluída com êxito, CompanionPortNumber é definido como 0 e CompanionHubSymbolicLinkName é NULL.
Para obter informações sobre a velocidade operacional de um dispositivo anexado a uma porta específica, o aplicativo pode enviar o IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 solicitação de controle de E/S.
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_NODE_CONNECTION_INFORMATION_EX_V2