次の方法で共有


DMA トランザクションの完了

ドライバーのデバイスが DMA 転送を完了するたびに、ドライバーは、WdfDmaTransactionDmaCompletedWdfDmaTransactionDmaCompletedWithLength、または WdfDmaTransactionDmaCompletedFinal を呼び出して、戻り値をチェックする必要があります。

戻り値が TRUE の場合、DMA トランザクションでそれ以上転送を行う必要がないため、ドライバーは DMA トランザクションを完了する必要があります。通常、EvtInterruptDpc コールバック関数から、まだドライバーに制御が戻っていません。このため、このコールバック関数が、次の方法で DMA トランザクションを完了します。

  1. WdfObjectDelete を呼び出してトランザクション オブジェクトを削除するか、ドライバーが DMA トランザクション オブジェクトを再利用する場合は、WdfDmaTransactionRelease を呼び出します。

  2. トランザクションがフレームワークの要求オブジェクトに関連付けられている場合は、WdfRequestComplete または WdfRequestCompleteWithInformation を呼び出します。

WdfRequestCompleteWithInformation を呼び出す場合、ドライバーは、通常、まず WdfDmaTransactionGetBytesTransferred を呼び出して、トランザクションのすべての転送の合計長 (バイト数) を取得します。