IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME IOCTL (usbioctl.h)
La richiesta di I/O IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME esegue una query sul driver del bus per il nome del dispositivo del controller host USB.
IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME è una richiesta di controllo I/O in modalità kernel. Questa richiesta è destinata all'hub USB PDO. Questa richiesta deve essere inviata a un IRQL di PASSIVE_LEVEL.
Codice principale
IRP_MJ_INTERNAL_DEVICE_CONTROL
Buffer di input
Parameters.Others.Argument1 deve essere un puntatore a una struttura USB_HUB_NAME che verrà compilata con il nome del controller host.
Lunghezza del buffer di input
Parameters.Others.Argument2 deve essere una ULONG che specifica la lunghezza del buffer (in byte) in Parameters.Others.Argument1.
Buffer di output
Il driver del bus riempie il buffer a cui punta Parameters.Others.Argument1 con il nome del dispositivo del controller host.
Lunghezza del buffer di output
Verrà riempito solo fino alla lunghezza specificata in Parameters.Others.Argument2.
Blocco di stato
Il driver bus o porta imposta Irp->IoStatus.Status su STATUS_SUCCESS o sullo stato di errore appropriato.
Osservazioni
Il chiamante deve fornire un buffer sufficientemente grande da contenere una struttura USB_HUB_NAME. Il valore Parameters.Others.Argument2 indica le dimensioni del buffer. Al termine, il membro HubName di USB_HUB_NAME contiene il nome del controller e il membro ActualLength indica la lunghezza della stringa del nome del controller. Si noti che ActualLength non indica le dimensioni dell'intera struttura USB_HUB_NAME. Se il buffer fornito in Parameters.Others.Argument1 non è sufficientemente grande da contenere la stringa, il valore HubName potrebbe mostrare una stringa troncata.
Per ottenere le dimensioni del buffer necessario per contenere la stringa, inviare la richiesta due volte. Nella prima richiesta specificare un buffer che sia almeno sizeof(USB_HUB_NAME)
byte. In caso contrario, actualLength non indica la lunghezza corretta della stringa e la richiesta ha esito negativo con STATUS_BUFFER_TOO_SMALL.
Al termine della prima richiesta, allocare un buffer di ActualLength + sizeof(ULONG)
byte e inviare di nuovo la richiesta. Al termine della richiesta, HubName indica l'intera stringa del nome del controller.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | usbioctl.h |