EVT_WDF_REQUEST_COMPLETION_ROUTINE Rückruffunktion (wdfrequest.h)
[Gilt für KMDF und UMDF]
Die CompletionRoutine-Ereignisrückruffunktion eines Treibers wird ausgeführt, wenn ein anderer Treiber eine angegebene E/A-Anforderung abschließt.
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 für ein Frameworkanforderungsobjekt, das die abgeschlossene E/A-Anforderung darstellt.
[in] Target
Ein Handle für ein 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 über die abgeschlossene Anforderung enthält. Weitere Informationen zur Gültigkeit der Vervollständigungsparameter finden Sie weiter unten.
[in] Context
Vom Treiber bereitgestellte Kontextinformationen, die der Treiber in einem vorherigen Aufruf von WdfRequestSetCompletionRoutine angegeben hat.
Rückgabewert
Keine
Bemerkungen
Um eine CompletionRoutine-Rückruffunktion für eine E/A-Anforderung zu registrieren, muss ein Treiber WdfRequestSetCompletionRoutine aufrufen. Weitere Informationen zu dieser Rückruffunktion finden Sie unter Abschließen von E/A-Anforderungen.
Die Struktur der Vervollständigungsparameter wird nur dann vollständig mit gültigen Informationen aufgefü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 WdfRequestWdmFormatUsingStackLocation formatiert hat, ist nur das Feld IoStatus in der Vervollständigungsparameterstruktur gültig.
Die CompletionRoutine eines KMDF-Treibers kann unter IRQL <= DISPATCH_LEVEL unabhängig von dem ExecutionLevel ausgeführt werden, der in der WDF_OBJECT_ATTRIBUTES-Struktur für das E/A-Anforderungsobjekt angegeben ist.
Beispiele
Der Funktionstyp wird in Wdfrequest.h wie folgt deklariert.
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 namens MyCompletionRoutine zu definieren, müssen Sie zunächst wie folgt eine Funktionsdeklaration bereitstellen, die SDV und andere Überprüfungstools erfordern:
EVT_WDF_REQUEST_COMPLETION_ROUTINE MyCompletionRoutine;
Implementieren Sie dann Ihre 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 | Universell |
KMDF-Mindestversion | 1.0 |
UMDF-Mindestversion | 2.0 |
Kopfzeile | wdfrequest.h (include Wdf.h) |
IRQL | <=DISPATCH_LEVEL |