EVT_WDFDEVICE_WDM_IRP_PREPROCESS funzione di callback (wdfdevice.h)
[Si applica solo a KMDF]
La funzione di callback dell'evento EvtDeviceWdmIrpPreprocess di un driver 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 IRP .
Valore restituito
La funzione di callback EvtDeviceWdmIrpPreprocess deve:
- Impostare il membro IoStatus.Status di IRP su STATUS_SUCCESS o un altro valore di stato per il quale NT_SUCCESS(status) è uguale a TRUE e 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(status) è uguale a FALSE e 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.
Commenti
Per registrare una funzione di callback EvtDeviceWdmIrpPreprocess , il driver deve chiamare WdfDeviceInitAssignWdmIrpPreprocessCallback.
Il driver può usare una funzione di callback EvtDeviceWdmIrpPreprocess per eseguire qualsiasi operazione o tutte le operazioni seguenti:
- Gestire un IRP che il framework non supporta, 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 la funzione di callback EvtDeviceWdmIrpPreprocess non fosse stata chiamata, la funzione di callback deve chiamare WdfDeviceWdmDispatchPreprocessedIrp per restituire l'IRP al framework.
Se il driver registra una funzione di callback EvtDeviceWdmIrpPreprocess , il framework aggiunge un percorso dello stack di I/O aggiuntivo ai provider 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.
La funzione di callback EvtDeviceWdmIrpPreprocess 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.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1,0 |
Intestazione | wdfdevice.h (include Wdf.h) |
IRQL | <=DISPATCH_LEVEL |