次の方法で共有


WdfDmaTransactionGetCurrentDmaTransferLength 関数 (wdfdmatransaction.h)

[KMDF にのみ適用]

WdfDmaTransactionGetCurrentDmaTransferLength メソッドは、現在の DMA 転送のサイズを返します。

構文

size_t WdfDmaTransactionGetCurrentDmaTransferLength(
  [in] WDFDMATRANSACTION DmaTransaction
);

パラメーター

[in] DmaTransaction

WdfDmaTransactionCreateへの以前の呼び出しからドライバーが取得した DMA トランザクション オブジェクトへのハンドル。

戻り値

WdfDmaTransactionGetCurrentDmaTransferLength は、現在の DMA 転送の長さを返します。

ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。

注釈

ドライバーが WdfDmaTransactionGetCurrentDmaTransferLength 呼び出す場合は、現在の DMA 転送を完了するために、WdfDmaTransactionDmaCompletedなどの転送完了ルーチンのいずれかを呼び出す前に、これを行う必要があります。 通常、ドライバーは、EvtInterruptDpc イベント コールバック関数内から WdfDmaTransactionGetCurrentDmaTransferLength を呼び出します。

通常、ドライバーは、残留 DMA 転送の長さ (つまり、転送されなかったデータのバイト数) を報告するデバイスの WdfDmaTransactionGetCurrentDmaTransferLength 呼び出します。 返される WdfDmaTransactionGetCurrentDmaTransferLength 値から残余転送長を減算することで、ドライバーは実際の転送長を決定できます。 その後、ドライバー WdfDmaTransactionDmaCompletedWithLength を呼び出して、デバイスが実際に転送したバイト数をフレームワークに知らせます。

完全な DMA 転送の詳細については、「DMA 転送の完了」を参照してください。

例示

WdfDmaTransactionGetCurrentDmaTransferLengthを使用するコード例については、「WdfDmaTransactionDmaCompletedWithLengthを参照してください。

必要条件

要件 価値
ターゲット プラットフォーム 普遍
最小 KMDF バージョン 1.0
ヘッダー wdfdmatransaction.h (Wdf.h を含む)
図書館 Wdf01000.sys (フレームワーク ライブラリのバージョン管理を参照)。
IRQL <=DISPATCH_LEVEL
DDI コンプライアンス規則 する DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

こちらもご覧ください

EvtInterruptDpc

WdfDmaTransactionCreate

WdfDmaTransactionDmaCompleted

WdfDmaTransactionDmaCompletedWithLength