EVT_WDF_REQUEST_COMPLETION_ROUTINE funzione di callback (wdfrequest.h)
[Si applica a KMDF e UMDF]
La funzione di callback dell'evento Completamentoroutine di un driver viene eseguita quando un altro driver completa una richiesta di I/O specificata.
Sintassi
EVT_WDF_REQUEST_COMPLETION_ROUTINE EvtWdfRequestCompletionRoutine;
void EvtWdfRequestCompletionRoutine(
[in] WDFREQUEST Request,
[in] WDFIOTARGET Target,
[in] PWDF_REQUEST_COMPLETION_PARAMS Params,
[in] WDFCONTEXT Context
)
{...}
Parametri
[in] Request
Handle per un oggetto richiesta framework che rappresenta la richiesta di I/O completata.
[in] Target
Handle a un oggetto di destinazione I/O che rappresenta la destinazione di I/O che ha completato la richiesta.
[in] Params
Puntatore a una struttura WDF_REQUEST_COMPLETION_PARAMS contenente informazioni sulla richiesta completata. Per quanto riguarda la validità dei parametri di completamento, vedere la nota seguente.
[in] Context
Informazioni sul contesto fornite dal driver, che il driver specificato in una chiamata precedente a WdfRequestSetCompletionRoutine.
Valore restituito
nessuno
Osservazioni
Per registrare una funzione di callback di CompletamentoRoutine per una richiesta di I/O, un driver deve chiamare WdfRequestSetCompletionRoutine. Per altre informazioni su questa funzione di callback, vedere Completamento delle richieste di I/O.
La struttura dei parametri di completamento è completamente popolata con informazioni valide solo se il driver ha formattato la richiesta chiamando uno dei seguenti:
- Metodi WdfIoTargetFormat Xxx, ad esempio WdfIoTargetFormatRequestForRead
- Metodi WdfUsbTargetDeviceFormatRequestForXxx , ad esempio WdfUsbTargetDeviceFormatRequestForString
- Metodi WdfUsbTargetPipeFormatRequestForXxx , ad esempio WdfUsbTargetPipeFormatRequestForWrite
Se il driver ha formattato la richiesta usando WdfRequestFormatRequestUsingCurrentType o WdfRequestWdmFormatUsingStackLocation, solo il campo IoStatus nella struttura dei parametri di completamento è valido.
Il completamento di un driver KMDF può essere eseguito in IRQL <= DISPATCH_LEVEL indipendentemente dalla strutturaExecutionLevel specificata nella struttura WDF_OBJECT_ATTRIBUTES per l'oggetto richiesta I/O.
Esempio
Il tipo di funzione viene dichiarato in Wdfrequest.h, come indicato di seguito.
typedef VOID
(EVT_WDF_REQUEST_COMPLETION_ROUTINE)(
IN WDFREQUEST Request,
IN WDFIOTARGET Target,
IN PWDF_REQUEST_COMPLETION_PARAMS Params,
IN WDFCONTEXT Context
);
Per definire una funzione di callback di CompletamentoRoutine denominata MyCompletionRoutine, è prima necessario specificare una dichiarazione di funzione richiesta da SDV e altri strumenti di verifica, come indicato di seguito:
EVT_WDF_REQUEST_COMPLETION_ROUTINE MyCompletionRoutine;
Implementare quindi la funzione di callback come indicato di seguito:
VOID
MyCompletionRoutine (
IN WDFREQUEST Request,
IN WDFIOTARGET Target,
IN PWDF_REQUEST_COMPLETION_PARAMS Params,
IN WDFCONTEXT Context
)
{...}
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1.0 |
Versione UMDF minima | 2,0 |
Intestazione | wdfrequest.h (include Wdf.h) |
IRQL | <=DISPATCH_LEVEL |