次の方法で共有


WdfDmaTransactionSetTransferCompleteCallback 関数 (wdfdmatransaction.h)

[KMDF にのみ適用]

WdfDmaTransactionSetTransferCompleteCallback メソッドは、システム モード DMA トランザクションの転送完了イベント コールバック関数を登録します。

構文

void WdfDmaTransactionSetTransferCompleteCallback(
  [in]           WDFDMATRANSACTION                             DmaTransaction,
  [in, optional] PFN_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE DmaCompletionRoutine,
  [in, optional] PVOID                                         DmaCompletionContext
);

パラメーター

[in] DmaTransaction

転送完了コールバックを設定またはクリアする、初期化された DMA トランザクション オブジェクトへのハンドル。

[in, optional] DmaCompletionRoutine

ドライバーの EvtDmaTransactionDmaTransferComplete イベント コールバック関数へのポインター。以前に設定されたコールバック関数をクリアする場合は NULL。

[in, optional] DmaCompletionContext

ドライバーの EvtDmaTransactionDmaTransferComplete イベント コールバック関数に提供されるドライバー指定のコンテキストを含むバッファーへのポインター。NULL。

戻り値

なし

解説

ドライバーは、システム DMA コントローラーが転送を完了した後、フレームワークが呼び出す完了ルーチンを設定するには、このメソッドを呼び出します。 フレームワークは、トランザクション内の転送ごとにドライバーの EvtDmaTransactionDmaTransferComplete コールバックを 1 回呼び出します。

通常、 I/O キュー イベント コールバック関数内から、ドライバーは次の手順をこの順序で実行します。

  1. トランザクション オブジェクトを初期化するには、 WdfDmaTransactionInitializeUsingRequestWdfDmaTransactionInitialize、または WdfDmaTransactionInitializeUsingOffset を 呼び出します。
  2. トランザクション オブジェクトで WdfDmaTransactionSetTransferCompleteCallback を呼び出します。
  3. WdfDmaTransactionExecute を呼び出します。
ドライバーが WdfDmaTransactionSetTransferCompleteCallback を呼び出して EvtDmaTransactionDmaTransferComplete イベント コールバック関数 指定し、その後、ドライバーが WdfDmaTransactionRelease を呼び出した場合、コールバックはクリアされます。

WdfDmaTransactionSetTransferCompleteCallback は、システム モード DMA プロファイルを指定する DMA イネーブラーでのみ使用できます。

ドライバーがWindows 8より前のオペレーティング システムでこのメソッドを呼び出すと、フレームワークの検証ツールによってエラーが報告されます。

要件

要件
サポートされている最小のクライアント Windows 8
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.11
Header wdfdmatransaction.h (Wdf.h を含む)
Library Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。
IRQL <=DISPATCH_LEVEL
DDI コンプライアンス規則 DriverCreate(kmdf)

こちらもご覧ください

EvtDmaTransactionDmaTransferComplete

WdfDmaTransactionRelease