Condividi tramite


EVT_WDFDEVICE_WDM_IRP_DISPATCH funzione di callback (wdfdevice.h)

[Si applica a KMDF e UMDF]

Un driver EvtDeviceWdmIrpDispatch funzione di callback degli eventi riceve un IRP prima che il framework elabori l'IRP.

Sintassi

EVT_WDFDEVICE_WDM_IRP_DISPATCH EvtWdfdeviceWdmIrpDispatch;

NTSTATUS EvtWdfdeviceWdmIrpDispatch(
  [in]      WDFDEVICE Device,
  [in]      UCHAR MajorFunction,
  [in]      UCHAR MinorFunction,
  [in]      ULONG Code,
  [in]      WDFCONTEXT DriverContext,
  [in, out] PIRP Irp,
  [in]      WDFCONTEXT DispatchContext
)
{...}

Parametri

[in] Device

Handle per un oggetto dispositivo framework.

[in] MajorFunction

Uno dei codici di funzione principali di IRP definiti in wdm.h.

[in] MinorFunction

Uno dei codici di funzione secondaria I/O IRP definiti in wdm.h per il codice MajorFunction.

[in] Code

Specifica un valore del codice di controllo di I/O. Questo parametro è valido solo se MajorFunction è impostato su IRP_MJ_DEVICE_CONTROL.

[in] DriverContext

Puntatore non tipizzato alle informazioni sul contesto definite dal driver fornite dal driver quando viene chiamato WdfDeviceConfigureWdmIrpDispatchCallback.

[in, out] Irp

Puntatore a una struttura IRP.

[in] DispatchContext

Puntatore non tipizzato alle informazioni sul contesto di invio del framework. Il driver deve fornire questo parametro quando chiama WdfDeviceWdmDispatchIrp.

Valore restituito

La funzione di callback evtDeviceWdmIrpDispatch deve:

  • Restituisce il valore restituito dal metodo WdfDeviceWdmDispatchIrp, se la funzione di callback chiama tale metodo.
  • Restituisce il valore restituito dal metodo WdfDeviceWdmDispatchIrpToIoQueue, se la funzione di callback chiama tale metodo.
  • solo KMDF

    Impostare il IoStatus.Status membro di IRP su STATUS_SUCCESS o su 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.
  • solo KMDF

    Impostare il IoStatus.Status membro 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.
  • solo KMDF

    Restituisce STATUS_PENDING se la funzione di callback chiama IoMarkIrpPending.

Osservazioni

La EvtDeviceWdmIrpDispatch funzione di callback deve essere usata solo per selezionare una coda specifica per un IRP. A tale scopo, il driver chiama il metodo WdfDeviceWdmDispatchIrpToIoQueue dall'interno della funzione di callback.

Se, dopo aver esaminato un IRP in questa funzione di callback, il driver non sa come inviare l'IRP, il driver può chiamare WdfDeviceWdmDispatchIrp per restituire l'IRP al framework per la gestione predefinita.

Un driver UMDF deve chiamare WdfDeviceWdmDispatchIrp o WdfDeviceWdmDispatchIrpToIoQueue da questa funzione di callback. Un driver KMDF ha l'opzione aggiuntiva di chiamare nessuno dei due e di completare l'IRP o contrassegnarlo in sospeso.

Per registrare un EvtDeviceWdmIrpDispatch funzione di callback, il driver deve chiamare WdfDeviceConfigureWdmIrpDispatchCallback.

Nel EvtDeviceWdmIrpDispatch funzione di callback, un driver non deve impostare una routine di completamento. Se è necessaria una routine di completamento, un driver KMDF può fornire un EvtDeviceWdmIrpPreprocess funzione di callback anziché EvtDeviceWdmIrpDispatch.

Per altre informazioni sulla specifica delle code per i runtime di integrazione man mano che arrivano, vedere Invio di indirizzi DI runtime di integrazione alle code di I/O.

Fabbisogno

Requisito Valore
piattaforma di destinazione Universale
versione minima di KMDF 1.11
versione minima di UMDF 2.17
intestazione wdfdevice.h (include Wdf.h)
IRQL <=DISPATCH_LEVEL

Vedere anche

WdfDeviceConfigureWdmIrpDispatchCallback

WdfDeviceWdmDispatchIrp

WdfDeviceWdmDispatchIrpToIoQueue