IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 IOCTL (usbioctl.h)
Il controllo IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 I/O viene inviato da un'applicazione per recuperare informazioni sui protocolli supportati da una determinata porta USB in un hub. La richiesta recupera anche la funzionalità di velocità della porta.
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 è una richiesta di controllo I/O in modalità utente. Questa richiesta è destinata al dispositivo hub USB (Universal Serial Bus) (GUID_DEVINTERFACE_USB_HUB).
Codice principale
Buffer di input
AssociateIrp.SystemBuffer punta a una struttura di USB_NODE_CONNECTION_INFORMATION_EX_V2 allocata dal chiamante.
In input, il chiamante deve impostare i membri della struttura come indicato di seguito:
- Il chiamante deve specificare il numero di porta nel membro ConnectionIndex . ConnectionIndex deve essere un valore nell'intervallo da 1 a n, dove n è il numero di porta più alto recuperato in una richiesta di controllo di I /O precedente IOCTL_USB_GET_HUB_INFORMATION_EX.
- Il chiamante deve impostare un flag di protocollo nel membro SupportedUsbProtocols (vedere USB_PROTOCOLS). In Windows 8, SupportedUsbProtocols.Usb300 deve essere impostato su 1. In caso contrario, la richiesta ha esito negativo con il codice di errore STATUS_INVALID_PARAMETER.
- Il chiamante deve impostare il membro Length sulla dimensione, in byte, del buffer allocato dal chiamante a cui punta AssociateIrp.SystemBuffer. Le dimensioni del buffer devono essere
sizeof (USB_NODE_CONNECTION_INFORMATION_EX_V2)
.
Lunghezza del buffer di input
Il membro Parameters.DeviceIoControl.InputBufferLength indica le dimensioni, in byte, del buffer allocato dal chiamante la cui dimensione è uguale sizeof(USB_NODE_CONNECTION_INFORMATION_EX_V2)
a .
Buffer di output
Nell'output, la struttura USB_NODE_CONNECTION_INFORMATION_EX_V2 a cui fa riferimento AssociateIrp.SystemBuffer viene riempita con informazioni sul dispositivo collegato.
Lunghezza del buffer di output
Il membro Parameters.DeviceIoControl.OutputBufferLength indica le dimensioni, in byte, del buffer di output SystemBuffer.
Blocco dello stato
Lo stack USB imposta Irp-IoStatus.Status> su STATUS_SUCCESS se la richiesta ha esito positivo. In caso contrario, lo stack di driver USB imposta Stato sulla condizione di errore appropriata, ad esempio STATUS_INVALID_PARAMETER o STATUS_INSUFFICIENT_RESOURCES.
Commenti
La IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 richiede la query dell'hub della porta specificata per ottenere informazioni sui protocolli supportati dalla porta e dalla funzionalità velocità operativa, se un dispositivo è collegato alla porta.
Se la richiesta viene completata correttamente, il membro SupportedUsbProtocols.Usb200 di USB_NODE_CONNECTION_INFORMATION_EX_V2 indica i protocolli supportati dalla porta. Ad esempio, se la porta supporta il protocollo di segnalazione definito dalla specifica USB 2.0, SupportUsbProtocols.Usb200 è impostato su 1.
Si noti che SupportedUsbProtocols.Usb110 è sempre impostato su 1 per hub ad alta velocità e a velocità completa. In questo caso, un hub con funzionalità ad alta velocità supporta il protocollo USB 1.1 tramite transazioni di divisione e traduzione delle transazioni. SupportedUsbProtocols.Usb110 non è mai impostato su 1 per una porta USB 3.0.
Inoltre, la richiesta determina anche se la porta e il dispositivo collegato sono in grado di funzionare in SuperSpeed. Se sono, il membro Flags.DeviceIsSuperSpeedCapableOrHigher è impostato su 1. Se il dispositivo collegato alla porta è attualmente operativo in SuperSpeed, DeviceIsOperatingAtSuperSpeedOrHigher è impostato su 1.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 |
Server minimo supportato | Nessuno supportato |
Intestazione | usbioctl.h (include Usbioctl.h) |