Condividi tramite


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

Vedere anche

USB_HUB_NAME