DMA トランザクションの完了
ドライバーのデバイスが DMA 転送を完了するたびに、ドライバーは、WdfDmaTransactionDmaCompleted、WdfDmaTransactionDmaCompletedWithLength、または WdfDmaTransactionDmaCompletedFinal を呼び出して、戻り値をチェックする必要があります。
戻り値が TRUE の場合、DMA トランザクションでそれ以上転送を行う必要がないため、ドライバーは DMA トランザクションを完了する必要があります。通常、EvtInterruptDpc コールバック関数から、まだドライバーに制御が戻っていません。このため、このコールバック関数が、次の方法で DMA トランザクションを完了します。
WdfObjectDelete を呼び出してトランザクション オブジェクトを削除するか、ドライバーが DMA トランザクション オブジェクトを再利用する場合は、WdfDmaTransactionRelease を呼び出します。
トランザクションがフレームワークの要求オブジェクトに関連付けられている場合は、WdfRequestComplete または WdfRequestCompleteWithInformation を呼び出します。
WdfRequestCompleteWithInformation を呼び出す場合、ドライバーは、通常、まず WdfDmaTransactionGetBytesTransferred を呼び出して、トランザクションのすべての転送の合計長 (バイト数) を取得します。