IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 IOCTL (usbioctl.h)
Il controllo I/O IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 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
associatedIrp.SystemBuffer punta a una struttura di USB_NODE_CONNECTION_INFORMATION_EX_V2 allocata dal chiamante.
In caso di input, il chiamante deve impostare i membri della struttura come segue:
- Il chiamante deve specificare il numero di porta nel membro ConnectionIndex. ConnectionIndex deve essere un valore compreso nell'intervallo da 1 a n, dove n è il numero di porta più alto recuperato in una richiesta di controllo di I/O IOCTL_USB_GET_HUB_INFORMATION_EX precedente.
- 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 sulle dimensioni, in byte, del buffer allocato dal chiamante a cui punta AssociatedIrp.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 a sizeof(USB_NODE_CONNECTION_INFORMATION_EX_V2)
.
Buffer di output
Nell'output, la struttura USB_NODE_CONNECTION_INFORMATION_EX_V2 a cui punta AssociatedIrp.SystemBuffer viene compilata 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 di 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 Status sulla condizione di errore appropriata, ad esempio STATUS_INVALID_PARAMETER o STATUS_INSUFFICIENT_RESOURCES.
Osservazioni
Il IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 richiede di eseguire query sull'hub della porta specificata per ottenere informazioni sui protocolli supportati dalla porta e dalla funzionalità di velocità operativa, se un dispositivo è collegato alla porta.
Se la richiesta viene completata correttamente, il SupportedUsbProtocols.Usb200 membro 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, SupportedUsbProtocols.Usb200 è impostato su 1.
Si noti che SupportedUsbProtocols.Usb110 è sempre impostato su 1 per hub ad alta velocità e a velocità intera. Questo perché un hub con supporto ad alta velocità supporta il protocollo USB 1.1 tramite transazioni suddivise e traduttori di 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 operare in SuperSpeed. In caso affermativo, il membro Flags.DeviceIsSuperSpeedCapableOrHigher è impostato su 1. Se il dispositivo collegato alla porta è attualmente operativo in SuperSpeed, DeviceIsOperatingAtSuperSpeedOrHigher è impostato su 1.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 8 |
server minimo supportato | Nessuna supportata |
intestazione | usbioctl.h (include Usbioctl.h) |