Condividi tramite


EVT_WDFDEVICE_WDM_IRP_DISPATCH funzione di callback (wdfdevice.h)

[Si applica a KMDF e UMDF]

La funzione di callback dell'evento EvtDeviceWdmIrpDispatch di un driver riceve un'IRP prima che il framework elabora 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 a informazioni di 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 callback chiama tale metodo.
  • Restituisce il valore restituito dal metodo WdfDeviceWdmDispatchIrpToIoQueue , se la funzione callback chiama tale metodo.
  • Solo KMDF

    Impostare il membro IoStatus.Status dell'IRP su STATUS_SUCCESS o un altro valore di stato per il quale NT_SUCCESS(stato) è uguale a TRUE e restituire lo stesso valore (dopo aver chiamato IoCompleteRequest) se la funzione di callback completa correttamente l'IRP ricevuta.
  • Solo KMDF

    Impostare il membro IoStatus.Status dell'IRP su un valore di stato per il quale NT_SUCCESS(stato) è 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.

Commenti

La funzione di callback EvtDeviceWdmIrpDispatch 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 e, invece, completare l'IRP o contrassegnarlo in sospeso.

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

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

Per altre informazioni sulla specifica delle code per i provider di servizi di integrazione al loro arrivo, vedere Invio di IRP alle code di I/O.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.11
Versione UMDF minima 2.17
Intestazione wdfdevice.h (includere Wdf.h)
IRQL <=DISPATCH_LEVEL

Vedi anche

WdfDeviceConfigureWdmIrpDispatchCallback

WdfDeviceWdmDispatchIrp

WdfDeviceWdmDispatchIrpToIoQueue