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 KMDFImpostare 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 KMDFRestituisce 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 |