EVT_WDF_REQUEST_COMPLETION_ROUTINE Rückruffunktion (wdfrequest.h)
[Gilt für KMDF und UMDF]
Die CompletionRoutine eines Treibers Ereignisrückruffunktion wird ausgeführt, wenn ein anderer Treiber eine angegebene E/A-Anforderung abgeschlossen hat.
Syntax
EVT_WDF_REQUEST_COMPLETION_ROUTINE EvtWdfRequestCompletionRoutine;
void EvtWdfRequestCompletionRoutine(
[in] WDFREQUEST Request,
[in] WDFIOTARGET Target,
[in] PWDF_REQUEST_COMPLETION_PARAMS Params,
[in] WDFCONTEXT Context
)
{...}
Parameter
[in] Request
Ein Handle zu einem Framework-Anforderungsobjekt, das die abgeschlossene E/A-Anforderung darstellt.
[in] Target
Ein Handle zu einem E/A-Zielobjekt, das das E/A-Ziel darstellt, das die Anforderung abgeschlossen hat.
[in] Params
Ein Zeiger auf eine WDF_REQUEST_COMPLETION_PARAMS Struktur, die Informationen zur abgeschlossenen Anforderung enthält. Weitere Informationen zur Gültigkeit der Abschlussparameter finden Sie weiter unten.
[in] Context
Vom Treiber bereitgestellte Kontextinformationen, die der Treiber in einem vorherigen Aufruf von WdfRequestSetCompletionRoutineangegeben hat.
Rückgabewert
Nichts
Bemerkungen
Um eine CompletionRoutine- Rückruffunktion für eine E/A-Anforderung zu registrieren, muss ein Treiber WdfRequestSetCompletionRoutineaufrufen. Weitere Informationen zu dieser Rückruffunktion finden Sie unter Abschließen von E/A-Anforderungen.
Die Struktur der Abschlussparameter wird vollständig mit gültigen Informationen ausgefüllt, wenn der Treiber die Anforderung durch Aufrufen einer der folgenden Elemente formatiert hat:
- WdfIoTargetFormatXxx- Methoden, z. B. WdfIoTargetFormatRequestForRead-
- WdfUsbTargetDeviceFormatRequestForXxx Methoden, z. B. WdfUsbTargetDeviceFormatRequestForString
- WdfUsbTargetPipeFormatRequestForXxx Methoden, z. B. WdfUsbTargetPipeFormatRequestForWrite
Wenn der Treiber die Anforderung entweder mit WdfRequestFormatRequestUsingCurrentType oder WdfRequestWdmFormatUsingStackLocationformatiert hat, ist nur das IoStatus Feld in der Struktur der Abschlussparameter gültig.
Die CompletionRou tine eines KMDF-Treibers kann bei IRQL <= DISPATCH_LEVEL ausgeführt werden, unabhängig von der in der WDF_OBJECT_ATTRIBUTES Struktur für das E/A-Anforderungsobjekt angegebenen ExecutionLevel-.
Beispiele
Der Funktionstyp wird wie folgt in Wdfrequest.hdeklariert.
typedef VOID
(EVT_WDF_REQUEST_COMPLETION_ROUTINE)(
IN WDFREQUEST Request,
IN WDFIOTARGET Target,
IN PWDF_REQUEST_COMPLETION_PARAMS Params,
IN WDFCONTEXT Context
);
Um eine CompletionRoutine Rückruffunktion zu definieren, die MyCompletionRoutine-heißt, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die SDV und andere Überprüfungstools erfordern:
EVT_WDF_REQUEST_COMPLETION_ROUTINE MyCompletionRoutine;
Implementieren Sie dann die Rückruffunktion wie folgt:
VOID
MyCompletionRoutine (
IN WDFREQUEST Request,
IN WDFIOTARGET Target,
IN PWDF_REQUEST_COMPLETION_PARAMS Params,
IN WDFCONTEXT Context
)
{...}
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform- | Universal |
Minimale KMDF-Version | 1.0 |
Mindest-UMDF-Version | 2.0 |
Header- | wdfrequest.h (include Wdf.h) |
IRQL- | <=DISPATCH_LEVEL |