共用方式為


EVT_WDF_REQUEST_COMPLETION_ROUTINE回呼函式 (wdfrequest.h)

[適用於 KMDF 和 UMDF]

驅動程式的 CompletionRoutine 事件回呼函式會在另一個驅動程式完成指定的 I/O 要求時執行。

語法

EVT_WDF_REQUEST_COMPLETION_ROUTINE EvtWdfRequestCompletionRoutine;

void EvtWdfRequestCompletionRoutine(
  [in] WDFREQUEST Request,
  [in] WDFIOTARGET Target,
  [in] PWDF_REQUEST_COMPLETION_PARAMS Params,
  [in] WDFCONTEXT Context
)
{...}

參數

[in] Request

架構要求物件的句柄,表示已完成的 I/O 要求。

[in] Target

I/O 目標物件的句柄,代表完成要求的 I/O 目標。

[in] Params

包含已完成要求相關信息 之WDF_REQUEST_COMPLETION_PARAMS 結構的指標。 請參閱下面的附註,以瞭解完成參數的有效性。

[in] Context

驅動程式提供的內容資訊,這是先前呼叫 WdfRequestSetCompletionRoutine 中指定的驅動程式。

傳回值

備註

若要註冊 I/O 要求的 CompletionRoutine 回呼函式,驅動程式必須呼叫 WdfRequestSetCompletionRoutine。 如需此回呼函式的詳細資訊,請參閱 完成 I/O 要求

只有在驅動程式藉由呼叫下列其中一項來格式化要求時,完成參數結構才會完整填入有效的資訊:

如果驅動程式使用 WdfRequestFormatRequestUsingCurrentTypeWdfRequestWdmFormatUsingStackLocation 格式化要求,則只有完成參數結構中的 IoStatus 字段有效。

KMDF 驅動程式的 CompletionRoutine 可以在 IRQL <= DISPATCH_LEVEL執行,而不論 I/O 要求物件之 WDF_OBJECT_ATTRIBUTES 結構中指定的 ExecutionLevel 為何。

範例

函式類型在 Wdfrequest.h 中宣告,如下所示。

typedef VOID
  (EVT_WDF_REQUEST_COMPLETION_ROUTINE)(
    IN WDFREQUEST  Request,
    IN WDFIOTARGET  Target,
    IN PWDF_REQUEST_COMPLETION_PARAMS  Params,
    IN WDFCONTEXT  Context
    );

若要定義名為 MyCompletionRoutineCompletionRoutine 回呼函式,您必須先提供 SDV 和其他驗證工具所需的函式宣告,如下所示:

EVT_WDF_REQUEST_COMPLETION_ROUTINE  MyCompletionRoutine;

然後,實作回呼函式,如下所示:

VOID
 MyCompletionRoutine (
    IN WDFREQUEST  Request,
    IN WDFIOTARGET  Target,
    IN PWDF_REQUEST_COMPLETION_PARAMS  Params,
    IN WDFCONTEXT  Context
    )
  {...}

規格需求

需求
目標平台 Universal
最低 KMDF 版本 1.0
最低UMDF版本 2.0
標頭 wdfrequest.h (包含 Wdf.h)
IRQL <=DISPATCH_LEVEL

另請參閱

WDF_REQUEST_COMPLETION_PARAMS

WdfRequestSetCompletionRoutine