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.
Per altre informazioni su come implementare una funzione di callback EvtDeviceWdmIrpPreprocess , vedere Handling WDM IRPs Outside of the Framework (Gestione di irP WDM all'esterno del framework).

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

Vedi anche

WdfDeviceInitAssignWdmIrpPreprocessCallback

WdfDeviceWdmDispatchPreprocessedIrp