Freigeben über


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:

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

Weitere Informationen

WDF_REQUEST_COMPLETION_PARAMS

WdfRequestSetCompletionRoutine