USB_PORT_CONNECTOR_PROPERTIES struttura (usbioctl.h)
La struttura USB_PORT_CONNECTOR_PROPERTIES viene usata con la richiesta di controllo I/O di IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES per recuperare informazioni su una porta in un particolare hub SuperSpeed.
Sintassi
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;
Members
ConnectionIndex
Numero di porta sottoposto a query nella richiesta. ConnectionIndex viene specificato dal chiamante. Se nell'hub SuperSpeed sono presenti n porte, le porte vengono numerate da 1 a n. Per ottenere il numero di porte, il chiamante invia prima un IOCTL_USB_GET_HUB_INFORMATION_EX richiesta di controllo I/O. La richiesta recupera il numero di porta più alto nell'hub.
ActualLength
Numero di byte necessari per contenere l'intera struttura USB_PORT_CONNECTOR_PROPERTIES inclusa la stringa contenente il nome simbolico del collegamento dell'hub complementare. Tale stringa viene archiviata nel membro CompanionHubSymbolicLinkName . Il valore ActualLength viene restituito dalla richiesta di IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES e utilizzata dal chiamante per allocare un buffer per contenere le informazioni ricevute. Per informazioni dettagliate, vedere IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES.
UsbPortProperties
Proprietà della porta. Al termine della richiesta di IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES , UsbPortProperties contiene un OR bit per bit di uno o più flag che indicano le proprietà e le funzionalità della porta. I flag sono definiti in USB_PORT_PROPERTIES.
CompanionIndex
Indice della porta complementare associata alla porta sottoposta a query (specificata da ConnectionIndex). Se sono presenti n porte complementari, tali porte vengono indicizzate da 0 a n-1.
Se viene eseguito il mapping di una porta a più porte complementari, CompanionIndex viene incrementato in più query per enumerare tutte le porte complementari.
Per gli hub SuperSpeed e i controller xHCI, CompanionIndex è sempre 0. Per altre informazioni, vedere la sezione Osservazioni.
CompanionPortNumber
Numero di porta della porta complementare specificata da CompanionIndex. Se la porta sottoposta a query condivide un connettore USB con una porta in un altro hub, CompanionPortNumber indica il numero di porta della porta nell'altro hub.
CompanionHubSymbolicLinkName[1]
Stringa Unicode contenente il collegamento simbolico dell'hub complementare che condivide il connettore USB. Se esiste un hub complementare, CompanionPortNumber è diverso da zero. In caso contrario, CompanionHubSymbolicLinkName [0] è NULL.
Commenti
Un hub SuperSpeed 3.0 contiene due implementazioni di hub indipendenti. Uno è per i dispositivi USB 2.0 e l'implementazione dell'hub è simile agli hub 2.0 esistenti. L'altro hub è solo per i dispositivi SuperSpeed. Poiché il segnale del bus USB 2.0 e 3.0 è indipendente in modo elettrico, entrambi gli hub funzionano simultaneamente. Pertanto, quando un hub SuperSpeed è connesso all'host, Windows enumera in modo indipendente i due hub; un hub è associato a una porta USB 2.0 e l'altro hub con una porta USB 3.0. Ogni hub ha le porte downstream e upstream. I connettori fisici USB sono condivisi tra porte associate a queste due implementazioni hub.
Analogamente, un controller xHCI deve essere in grado di gestire SuperSpeed, alta velocità, full-speed e dispositivi a bassa velocità. La specifica USB 3.0 richiede un controller xHCI per contenere due unità di esecuzione indipendenti ognuna per la velocità del bus USB 3.0 e USB 2.0. L'unità di esecuzione USB 3.0 gestisce il traffico SuperSpeed sul bus. L'unità di esecuzione USB 2.0 deve gestire traffico basso, pieno e ad alta velocità. Tale requisito può essere soddisfatto in molti modi. Ad esempio, in un'implementazione, l'unità di esecuzione USB 2.0 può avere un'unità di esecuzione USB 1.1 downstream o un hub USB 2.0 downstream. L'altra unità di esecuzione gestisce il traffico SuperSpeed sul bus. Ad esempio, in un'implementazione, il controller xHCI può avere un hub USB 2.0 downstream (anziché un controller host USB 2.0) con un traduttore delle transazioni per gestire il traffico a velocità completa e bassa velocità. Tale hub downstream condivide i connettori con le porte dell'hub radice SuperSpeed.
Nei casi in cui i connettori USB vengono condivisi, la porta che viene eseguita una query tramite la richiesta di controllo I/O IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES viene specificata da ConnectionIndex e la porta che condivide il connettore viene chiamata porta complementare. Al termine della richiesta, è possibile usare i membri CompanionIndex, CompanionPortNumber e CompanionHubSymbolicLinkName di USB_PORT_CONNECTOR_PROPERTIES per determinare il routing delle porte in questi casi.
Se più di una porta complementare è associata alla porta eseguita una query, l'applicazione può ottenere informazioni su tutte le porte complementari inviando la richiesta di controllo I/O di IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES in un ciclo e incrementando il valore CompanionIndex in ogni iterazione. Quando tutte le porte sono state enumerate e non esiste alcuna porta associata all'indice specificato in CompanionIndex, la richiesta viene completata correttamente, CompanionPortNumber è impostata su 0 e CompanionHubSymbolicLinkName è NULL.
Per ottenere informazioni sulla velocità operativa di un dispositivo collegato a una determinata porta, l'applicazione può inviare la richiesta di controllo I/O IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 |
Server minimo supportato | Nessuno supportato |
Intestazione | usbioctl.h (include Usbioctl.h) |
Vedi anche
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2