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 要求の完了」を参照してください。

完了パラメーター構造体には、ドライバーが次のいずれかを呼び出して要求を書式設定した場合にのみ、有効な情報が完全に設定されます。

  • WdfIoTargetFormatXxx メソッド (WdfIoTargetFormatRequestForRead など)
  • WdfUsbTargetDeviceFormatRequestForXxx メソッド (たとえば、WdfUsbTargetDeviceFormatRequestForString
  • WdfUsbTargetPipeFormatRequestForXxx メソッド (たとえば、WdfUsbTargetPipeFormatRequestForWrite

ドライバーが WdfRequestFormatRequestUsingCurrentTypeまたは WdfRequestWdmFormatUsingStackLocationを使用して要求を書式設定した場合、完了パラメーター構造体の IoStatus フィールドのみが有効です。

KMDF ドライバーの CompletionRoutine は、I/O 要求オブジェクトの WDF_OBJECT_ATTRIBUTES 構造体で指定された ExecutionLevel に関係なく、IRQL <= DISPATCH_LEVEL で実行できます。

関数型は、次のように Wdfrequest.h で宣言されます。

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

MyCompletionRoutine という名前の CompletionRoutine コールバック関数を定義するには、まず、SDV やその他の検証ツールで必要な関数宣言を次のように指定する必要があります。

EVT_WDF_REQUEST_COMPLETION_ROUTINE  MyCompletionRoutine;

次に、次のようにコールバック関数を実装します。

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

必要条件

要件 価値
ターゲット プラットフォーム 万国
最小 KMDF バージョン 1.0
UMDF の最小バージョン する 2.0
ヘッダー wdfrequest.h (Wdf.h を含む)
IRQL <=DISPATCH_LEVEL

関連項目

WDF_REQUEST_COMPLETION_PARAMS

WdfRequestSetCompletionRoutine