次の方法で共有


WdfDmaTransactionCancel 関数 (wdfdmatransaction.h)

[KMDF にのみ適用]

WdfDmaTransactionCancel メソッドは、マップ レジスタの割り当てを待機している DMA トランザクションを取り消そうとします。

構文

BOOLEAN WdfDmaTransactionCancel(
  [in] WDFDMATRANSACTION DmaTransaction
);

パラメーター

[in] DmaTransaction

取り消されるトランザクションを表す DMA トランザクション オブジェクトへのハンドル。 このトランザクションは、ドライバーによって既に初期化されている必要があります。

戻り値

フレームワークがマップ レジスタの割り当てを正常に取り消した場合、WdfDmaTransactionCancel は TRUE を返します。 この場合、転送は完了せず、フレームワークはトランザクションが再開されるまで追加の DMA コールバックを行いません。

別のスレッドがこのトランザクションを既に処理している場合、またはドライバーがまだ WdfDmaTransactionExecute を呼び出していない場合、メソッドは FALSE を返します。 最初のケースでは、フレームワークは現在、 を呼び出しているか、 EvtProgramDma または EvtReserveDma を呼び出します。 この時点で、システム モード DMA プロファイルを指定したドライバーは 、WdfDmaTransactionStopSystemTransfer を呼び出す可能性があります。

メソッドは、DMA バージョン 2 イネーブラーから割り当てられたトランザクションで呼び出された場合にも FALSE を返します。

注釈

ドライバーは、WdfRequestMarkCancelableEx の呼び出しで提供される EvtRequestCancel イベント コールバック関数から WdfDmaTransactionCancel を呼び出す場合があります。 これを行う方法を示すコード例については、「 WdfDmaTransactionStopSystemTransfer」を参照してください。

ドライバーは、EvtIoCanceledOnQueue イベント コールバック関数から WdfDmaTransactionCancel を呼び出すこともできます。

WdfDmaTransactionCancel への呼び出しが WdfDmaTransactionExecute の呼び出しの後、WdfDmaTransactionExecute メソッドが DMA 割り当てを開始する前に発生した場合にのみ、取り消しは成功します。 詳細については、「 DMA トランザクションの取り消し」を参照してください。

ドライバーは、WdfDmaTransactionInitialize を呼び出した後、WdfDmaTransactionRelease または WdfObjectDelete を呼び出してトランザクション オブジェクトを削除する前に、WdfDmaTransactionCancel を呼び出す必要があります。

フレームワークが EvtProgramDma または EvtReserveDma を呼び出した後は、WdfDmaTransactionCancel を呼び出さないでください。

ドライバーは 、WdfDmaTransactionCancel を呼び出す前に DMA バージョン 3 の使用を要求する必要があります。 DMA バージョン 3 を選択するには、WDF_DMA_ENABLER_CONFIGWdmDmaVersionOverride メンバーを 3 に設定します。

ドライバーが DMA バージョン 2 イネーブラーから割り当てられたトランザクションで WdfDmaTransactionCancel を呼び出した場合、フレームワークは検証エラーを生成し、 WdfDmaTransactionCancel は FALSE を返します。 この場合、トランザクションを取り消す試みは行われません。

要件

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

こちらもご覧ください

EvtProgramDma

EvtReserveDma

WdfDmaTransactionStopSystemTransfer