IRP_MJ_DEVICE_CONTROL

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

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

Data di invio

In qualsiasi momento dopo il completamento di una richiesta di creazione.

Parametri di input

Il codice di controllo di I/O è contenuto in Parameters.DeviceIoControl.IoControlCode nel percorso dello stack di 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 di 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 di I/O.

Operazione

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

Alla ricezione di una richiesta di controllo di I/O del dispositivo, un driver di livello superiore passa in genere l'IRP al driver inferiore successivo. Esistono tuttavia alcune eccezioni a questa procedura. Ad esempio, un driver di classe in cui sono archiviate le informazioni di configurazione ottenute dal driver di porta sottostante potrebbe completare determinate richieste IOCTL_XXX senza passare il provider di funzionalità al driver di porta corrispondente.

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

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

Requisiti

Intestazione

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

Vedi anche

DispatchDeviceControl