Condividi tramite


IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE IOCTL (usbioctl.h)

La richiesta di I/O IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE registra il driver di un dispositivo a più funzioni USB (driver composito) con lo stack di driver USB sottostante.

Questa richiesta viene inviata da un driver che sostituisce il driver composito fornito da Microsoft, Usbccgp.syse implementa la funzionalità di sospensione della funzione e riattivazione remota, in base alla specifica USB (Universal Serial Bus) 3.0.

IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE è una richiesta di controllo I/O in modalità kernel. Questa richiesta è destinata all'oggetto dispositivo fisico (PDO) dell'hub USB. Questa richiesta deve essere inviata a livello di richiesta di interrupt (IRQL) di PASSIVE_LEVEL.

Codice principale

IRP_MJ_INTERNAL_DEVICE_CONTROL

Buffer di input

Parameters.Others.Argument1 è un puntatore a una struttura di REGISTER_COMPOSITE_DEVICE< allocata e inizializzata del chiamante che contiene informazioni sul driver padre. Per inizializzare la struttura, chiamare la routine USBD_BuildRegisterCompositeDevice.

Il AssociatedIrp.SystemBuffer membro punta a un buffer allocato dal chiamante sufficientemente grande da contenere una matrice di handle di funzione (USBD_FUNCTION_HANDLE tipizzato) per le funzioni nel dispositivo composito USB. Il numero di elementi nella matrice è indicato dal membro functionCount di REGISTER_COMPOSITE_DEVICE. Per ottenere il numero di funzioni, esaminare i descrittori restituiti da una richiesta di configurazione get.

Lunghezza del buffer di input

Dimensione di una struttura REGISTER_COMPOSITE_DEVICE.

Buffer di output

Nell'output, il buffer a cui punta membro AssociatedIrp.SystemBuffer viene riempito con handle di funzione per le funzioni nel dispositivo a più funzioni.

Lunghezza del buffer di output

Dimensioni degli handle di funzione per le funzioni nel dispositivo.

Blocco di stato

Lo stack di driver USB imposta Irp->IoStatus.Status su STATUS_SUCCESS se la richiesta viene completata correttamente. STATUS_SUCCESS indica che gli handle di funzione sono validi.

In caso di errore, Irp->IoStatus.Status contiene uno stato di errore appropriato. Ad esempio, se il driver composito invia la richiesta più volte, il stato è impostato su STATUS_INVALID_DEVICE_REQUEST.

Osservazioni

Lo scopo di IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE è che il driver composito invii una richiesta di registrazione allo stack di driver USB. Nella richiesta di registrazione il driver composito specifica il numero di funzioni supportate dal dispositivo. Pertanto, è necessario inviare la richiesta di IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE dopo aver determinato il numero di funzioni. In genere, tali informazioni vengono recuperate nella routine del dispositivo di avvio del driver composito IRP_MN_START_DEVICE. Si noti che il numero di interfacce in un di configurazione può indicare il numero di funzioni, ma non sempre. Alcuni dispositivi a più funzioni espongono più interfacce correlate a una sola funzione. Per ottenere il numero di funzioni, è necessario esaminare vari descrittori correlati a una configurazione specifica. Questi descrittori possono essere ottenuti tramite una richiesta get-descrittore.

In risposta alla richiesta di registrazione, lo stack di driver USB fornisce un elenco di handle per le funzioni nel dispositivo. Per un esempio di codice, vedere Come registrare un dispositivo composito.

Dopo la registrazione del driver composito, il driver può configurare la funzionalità di riattivazione remota. Usando l'handle di funzione, il driver composito può inviare una richiesta IOCTL_INTERNAL_USB_REQUEST_REMOTE_WAKE_NOTIFICATION per ricevere notifiche di riattivazione remota dallo stack di driver USB, quando la funzione associata invia un segnale di ripresa.

Per rimuovere l'associazione del driver composito allo stack di driver USB e rilasciare tutte le risorse allocate per la registrazione, il driver deve inviare la richiesta di IOCTL_INTERNAL_USB_UNREGISTER_COMPOSITE_DEVICE.

Fabbisogno

Requisito Valore
client minimo supportato Windows 8
intestazione usbioctl.h (include Usbioctl.h)
IRQL PASSIVE_LEVEL

Vedere anche

Come registrare un di un dispositivo composito

IOCTL_INTERNAL_USB_UNREGISTER_COMPOSITE_DEVICE