Freigeben über


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:

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

Siehe auch

WDF_REQUEST_COMPLETION_PARAMS

WdfRequestSetCompletionRoutine-