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 |
Header | wdfdmatransaction.h (Wdf.h を含む) |
Library | Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。 |
IRQL | <=DISPATCH_LEVEL |
DDI コンプライアンス規則 | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |