Condividi tramite


IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME IOCTL (usbioctl.h)

La IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME richiesta di I/O 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 un 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 dello stato

Il driver del bus o della porta imposta Irp-IoStatus.Status> su STATUS_SUCCESS o lo stato di errore appropriato.

Commenti

Il chiamante deve fornire un buffer sufficiente per contenere una struttura USB_HUB_NAME . Il valore Parameters.Others.Argument2 indica la dimensione del buffer. Al termine del completamento, 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 è abbastanza grande per 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 non riesce con STATUS_BUFFER_TOO_SMALL.

Al termine della prima richiesta, allocare un buffer di ActualLength + sizeof(ULONG) byte e inviare nuovamente la richiesta. Al termine della richiesta, HubName indica l'intera stringa del nome del controller.

Requisiti

Requisito Valore
Intestazione usbioctl.h

Vedi anche

USB_HUB_NAME