EVT_WDFDEVICE_WDM_IRP_PREPROCESS funzione di callback (wdfdevice.h)
[Si applica solo a KMDF]
La funzione di callback di un driver EvtDeviceWdmIrpPreprocess riceve un IRP prima che il framework elabori l'IRP.
Sintassi
EVT_WDFDEVICE_WDM_IRP_PREPROCESS EvtWdfdeviceWdmIrpPreprocess;
NTSTATUS EvtWdfdeviceWdmIrpPreprocess(
[in] WDFDEVICE Device,
[in, out] PIRP Irp
)
{...}
Parametri
[in] Device
Handle per un oggetto dispositivo framework.
[in, out] Irp
Puntatore a una struttura di IRP.
Valore restituito
La funzione di callback evtDeviceWdmIrpPreprocess deve:
- Impostare il membro IoStatus.Status di IRP su STATUS_SUCCESS o su un altro valore di stato per cui NT_SUCCESS(stato) è uguale a TRUEe restituire lo stesso valore (dopo aver chiamato IoCompleteRequest), se la funzione di callback completa correttamente l'IRP ricevuto.
- Impostare il membro IoStatus.Status di IRP su un valore di stato per il quale NT_SUCCESS(stato) è uguale a FALSEe restituire lo stesso valore (dopo aver chiamato IoCompleteRequest), se la funzione di callback rileva un errore.
- Restituisce STATUS_PENDING, se la funzione di callback chiama IoMarkIrpPending.
- Restituisce il valore restituito dal metodo WdfDeviceWdmDispatchPreprocessedIrp, se la funzione di callback chiama tale metodo.
Osservazioni
Per registrare un EvtDeviceWdmIrpPreprocess funzione di callback, il driver deve chiamare WdfDeviceInitAssignWdmIrpPreprocessCallback.
Il driver può usare un EvtDeviceWdmIrpPreprocess funzione di callback per eseguire qualsiasi operazione o tutte le operazioni seguenti:
- Gestire un IRP non supportato dal framework, seguendo le regole WDM per la gestione dei runtime di integrazione.
- Pre-elaborare un IRP prima che il framework lo gestisca.
- Impostare una routine di completamento in modo che il driver possa post-elaborare un IRP dopo che il framework lo gestisce.
Se si vuole che il framework gestisca successivamente l'IRP come se il EvtDeviceWdmIrpPreprocess funzione di callback non fosse stata chiamata, la funzione di callback deve chiamare WdfDeviceWdmDispatchPreprocessedIrp per restituire l'IRP al framework.
Se il driver registra un EvtDeviceWdmIrpPreprocess funzione di callback, il framework aggiunge un percorso dello stack I/O aggiuntivo ai runtime di integrazione ricevuti dalla funzione di callback. Il percorso dello stack I/O aggiuntivo consente alla funzione di callback di impostare una routine IoCompletion prima di chiamare WdfDeviceWdmDispatchPreprocessedIrp.
Il EvtDeviceWdmIrpPreprocess funzione di callback viene chiamata in IRQL del thread chiamante. IrQL è determinato dal tipo di IRP che il framework passa a EvtDeviceWdmIrpPreprocess. Ad esempio, se il gestore PnP invia IRP_MN_QUERY_DEVICE_RELATIONS in IRQL = PASSIVE_LEVEL, il framework chiama EvtDeviceWdmIrpPreprocess in IRQL = PASSIVE_LEVEL.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
versione minima di KMDF | 1.0 |
intestazione | wdfdevice.h (include Wdf.h) |
IRQL | <=DISPATCH_LEVEL |