WdfDmaTransactionSetTransferCompleteCallback function (wdfdmatransaction.h)

[Applies to KMDF only]

The WdfDmaTransactionSetTransferCompleteCallback method registers a transfer completion event callback function for a system-mode DMA transaction.

Syntax

void WdfDmaTransactionSetTransferCompleteCallback(
  [in]           WDFDMATRANSACTION                             DmaTransaction,
  [in, optional] PFN_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE DmaCompletionRoutine,
  [in, optional] PVOID                                         DmaCompletionContext
);

Parameters

[in] DmaTransaction

A handle to an initialized DMA transaction object for which to set or clear the transfer completion callback.

[in, optional] DmaCompletionRoutine

A pointer to the driver's EvtDmaTransactionDmaTransferComplete event callback function, or NULL to clear a previously set callback function.

[in, optional] DmaCompletionContext

A pointer to a buffer containing the driver-specified context to be provided to the driver's EvtDmaTransactionDmaTransferComplete event callback function, or NULL.

Return value

None

Remarks

The driver calls this method to set a completion routine that the framework calls after the system DMA controller completes a transfer. The framework calls the driver's EvtDmaTransactionDmaTransferComplete callback once for each transfer in the transaction.

Typically from within an I/O queue event callback function, a driver performs the following steps, in this order:

  1. Calls WdfDmaTransactionInitializeUsingRequest, WdfDmaTransactionInitialize, or WdfDmaTransactionInitializeUsingOffset to initialize the transaction object.
  2. Calls WdfDmaTransactionSetTransferCompleteCallback on the transaction object.
  3. Calls WdfDmaTransactionExecute.
If the driver has specified an EvtDmaTransactionDmaTransferComplete event callback function by calling WdfDmaTransactionSetTransferCompleteCallback and the driver subsequently calls WdfDmaTransactionRelease, the callback is cleared.

WdfDmaTransactionSetTransferCompleteCallback can only be used with a DMA enabler that specifies a system-mode DMA profile.

If your driver calls this method on an operating system earlier than Windows 8, the framework's verifier reports an error.

Requirements

Requirement Value
Minimum supported client Windows 8
Target Platform Universal
Minimum KMDF version 1.11
Header wdfdmatransaction.h (include Wdf.h)
Library Wdf01000.sys (see Framework Library Versioning.)
IRQL <=DISPATCH_LEVEL
DDI compliance rules DriverCreate(kmdf)

See also

EvtDmaTransactionDmaTransferComplete

WdfDmaTransactionRelease