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