estrutura USB_PORT_CONNECTOR_PROPERTIES (usbioctl.h)
A estrutura USB_PORT_CONNECTOR_PROPERTIES é usada com o IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES solicitação de controle de E/S 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 do 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 de um ou mais sinalizadores que indicam 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 existir um hub complementar, CompanionPortNumber será diferente de zero. Caso contrário, CompanionHubSymbolicLinkName [0] será NULL.
Comentários
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 exige que um controlador xHCI contenha duas unidades de execução independentes cada uma para as velocidades de barramento USB 3.0 e USB 2.0. A unidade de execução USB 3.0 lida com o tráfego SuperSpeed no barramento. 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, os membros CompanionIndex, CompanionPortNumber e CompanionHubSymbolicLinkName do 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 o IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES solicitação de controle de E/S em um loop e incrementando o valor CompanionIndex em cada iteração. Quando todas as portas tiverem sido enumeradas e não houver nenhuma porta associada ao índice especificado em CompanionIndex, a solicitação for concluída com êxito, CompanionPortNumber será definida como 0 e CompanionHubSymbolicLinkName será NULL.
Para obter informações sobre a velocidade de operação 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 |
---|---|
Cliente mínimo com suporte | Windows 8 |
Servidor mínimo com suporte | Nenhum compatível |
Cabeçalho | usbioctl.h (include Usbioctl.h) |
Confira também
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2