WDF_DMA_SYSTEM_PROFILE_CONFIG structure (wdfdmaenabler.h)

[Applies to KMDF only]

The WDF_DMA_SYSTEM_PROFILE_CONFIG structure describes the hardware-specific settings related to a system-mode DMA enabler.

Syntax

typedef struct _WDF_DMA_SYSTEM_PROFILE_CONFIG {
  ULONG                           Size;
  BOOLEAN                         DemandMode;
  BOOLEAN                         LoopedTransfer;
  DMA_WIDTH                       DmaWidth;
  PHYSICAL_ADDRESS                DeviceAddress;
  PCM_PARTIAL_RESOURCE_DESCRIPTOR DmaDescriptor;
} WDF_DMA_SYSTEM_PROFILE_CONFIG, *PWDF_DMA_SYSTEM_PROFILE_CONFIG;

Members

Size

The size of this structure in bytes.

DemandMode

Specifies that the transfer is controlled by the device's DMA
request line specified in the DmaDescriptor member of this structure. See more information in Remarks.

LoopedTransfer

Specifies that the DMA adapter should loop around the specified transfer if the length is greater than the size of the buffer.

DmaWidth

The width of the register specified by DeviceAddress. Possible values are Width8Bits, Width16Bits, Width32Bits, and Width64Bits.

DeviceAddress

The translated address to or from which the DMA controller transfers. The driver can specify an offset from this base address on each transaction by calling WdfDmaTransactionSetDeviceAddressOffset.

DmaDescriptor

The translated resource descriptor for the DMA channel assigned the device during EvtDevicePrepareHardware. This provides the DMA request line for the adapter.

Remarks

The driver provides this structure to WdfDmaEnablerConfigureSystemProfile after creating a system-profile DMA enabler.

Typically, drivers set DemandMode to TRUE. The driver's EvtProgramDma callback function then programs the device to assert its DMA request line and initiate the transfer. In this case, the transfer might begin while EvtProgramDma is still running.

The driver must ensure that the device's DMA request line is not asserted before the driver's EvtProgramDma callback function begins execution. Otherwise, it is possible for the DMA transfer to begin before the framework calls EvtProgramDma.

If DemandMode is set to FALSE, the DMA transfer may begin before the framework calls the driver’s EvtProgramDma function.

Requirements

Requirement Value
Minimum supported client Windows 8
Minimum KMDF version 1.11
Header wdfdmaenabler.h (include Wdf.h)

See also

WDF_DMA_SYSTEM_PROFILE_CONFIG_INIT

WdfDmaEnablerConfigureSystemProfile