Condividi tramite


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.
Per altre informazioni su come implementare un EvtDeviceWdmIrpPreprocess funzione di callback, vedere Handling WDM IRPs Outside of the Framework.

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

Vedere anche

WdfDeviceInitAssignWdmIrpPreprocessCallback

WdfDeviceWdmDispatchPreprocessedIrp