IRP_MN_QUERY_PNP_DEVICE_STATE

Le funzioni, i filtri e i driver del bus possono gestire questa richiesta.

Valore47

0x14

Codice principale

IRP_MJ_PNP

Data di invio

Il gestore PnP invia l'IRP dopo che i driver per un dispositivo restituiscono esito positivo dalla richiesta di IRP_MN_START_DEVICE inviata quando viene avviato un dispositivo. L'IRP non viene inviato in un avvio dopo un arresto per il ribilanciamento delle risorse. Il gestore PnP invia anche questo IRP quando un driver per il dispositivo chiama IoInvalidateDeviceState.

Il gestore PnP invia l'IRP in IRQL PASSIVE_LEVEL nel contesto di un thread arbitrario.

Parametri di input

Nessuno

Parametri di output

Restituito nel blocco di stato di I/O.

Blocco dello stato I/O

Un driver imposta Irp-IoStatus.Status> su STATUS_SUCCESS o su uno stato di errore appropriato, ad esempio STATUS_UNSUCCESSFUL.

In caso di esito positivo, un driver imposta Irp-IoStatus.Information> su una maschera PNP_DEVICE_STATE bit.

Se un driver di funzione o filtro non gestisce l'IRP, chiama IoSkipCurrentIrpStackLocation, non imposta una routine IoCompletion e passa l'IRP fino al driver successivo. Tale driver non deve modificare Irp-IoStatus> e non deve completare l'IRP.

Se un conducente del bus non gestisce questo IRP, lascia Irp-IoStatus.Status> come è e completa l'IRP.

Operazione

Questa IRP viene gestita prima dal driver nella parte superiore dello stack di dispositivi e quindi da ogni driver inferiore successivo nello stack.

Un driver gestisce questo IRP se contiene informazioni sullo stato PnP di un dispositivo. Un driver può impostare o cancellare i flag nella maschera di bit PNP_DEVICE_STATE. Se un altro driver ha impostato un PNP_DEVICE_STATE in Irp-IoStatus.Information>, un driver deve prestare attenzione a modificare i flag in tale maschera bit anziché sovrascrivere l'intera struttura.

Vedere Plug and Play per le regole generali per la gestione di irp secondari Plug and Play.

Invio di questo IRP

Riservato per l'utilizzo nel sistema. I driver non devono inviare questo IRP.

Requisiti

Intestazione

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

Vedi anche

IoInvalidateDeviceState

PNP_DEVICE_STATE