Condividi tramite


IRP_MJ_DEVICE_CONTROL

Ogni driver il cui oggetto dispositivo appartiene a un tipo di dispositivo specifico (vedere Specifica dei tipi di dispositivo) è necessario per supportare questa richiesta in una routine DispatchDeviceControl , se esiste un set di codici di controllo I/O definiti dal sistema (IOCTLs) per il tipo. Per altre informazioni sugli IOCTLs, vedere Introduzione ai codici di controllo I/O.

I driver di livello superiore passano in genere queste richieste a un driver di dispositivo sottostante. Ogni driver di dispositivo in uno stack di driver viene assunto per supportare questa richiesta, insieme a un set di IOCTL specifici del tipo di dispositivo, pubblici o privati. Per altre informazioni sugli IOCTLs per tipi di dispositivo specifici, vedere la documentazione specifica del tipo di dispositivo in Microsoft Windows Driver Kit (WDK).

Data di invio

Ogni volta che segue il completamento corretto di una richiesta di creazione.

Parametri di input

Il codice di controllo I/O è contenuto in Parameters.DeviceIoControl.IoControlCode nella posizione dello stack I/O del driver dell'IRP.

Altri parametri di input dipendono dal valore del codice di controllo di I/O. Per altre informazioni, vedere Descrizioni del buffer per i codici di controllo I/O.

Parametri di output

I parametri di output dipendono dal valore del codice di controllo di I/O. Per altre informazioni, vedere Descrizioni del buffer per i codici di controllo I/O.

Operazione

Un driver riceve questo codice di controllo di I/O perché il thread in modalità utente ha chiamato la funzione DeviceIoControl Microsoft Win32 o un driver in modalità kernel di livello superiore ha configurato la richiesta. Eventualmente, un driver in modalità utente ha chiamato DeviceIoControl, passando un codice di controllo di I/O (definito anche privato), per richiedere il supporto specifico del dispositivo o del driver da un driver strettamente accoppiato, driver di dispositivo in modalità kernel.

In caso di ricezione di una richiesta di controllo I/O del dispositivo, un driver di livello superiore passa in genere l'IRP al driver inferiore successivo. Tuttavia, esistono alcune eccezioni a questa procedura. Ad esempio, un driver di classe con informazioni di configurazione archiviate ottenute dal driver di porta sottostante potrebbe completare determinate richieste IOCTL_ XXX senza passare l'IRP verso il basso al driver di porta corrispondente.

Quando si riceve una richiesta di controllo I/O del dispositivo, un driver di dispositivo esamina il codice di controllo I/O per determinare come soddisfare la richiesta. Per la maggior parte dei codici di controllo I/O pubblici, i driver di dispositivo trasferisce una piccola quantità di dati da o verso il buffer in Irp-AssociatedIrp.SystemBuffer>.

Per informazioni generali sui codici di controllo di I/O per le richieste di IRP_MJ_DEVICE_CONTROL o IRP_MJ_INTERNAL_DEVICE_CONTROL , vedere Uso dei codici di controllo I/O. Vedere anche Device Type-Specific Richieste di I/O.

Requisiti

Intestazione

Wdm.h (include Wdm.h, Ntddk.h o Ntifs.h)

Vedi anche

DispatchDeviceControl