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.

Nota Para o hub raiz de um controlador xHCI, a porta compartilhada pode estar no mesmo 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

IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES

USB_HUB_INFORMATION_EX

USB_PORT_CONNECTOR_PROPERTIES

USB_PORT_PROPERTIES