WDF_DMA_ENABLER_CONFIG structure (wdfdmaenabler.h)

[Applies to KMDF only]

The WDF_DMA_ENABLER_CONFIG structure supplies characteristics for a DMA enabler object.

Syntax

typedef struct _WDF_DMA_ENABLER_CONFIG {
  ULONG                                    Size;
  WDF_DMA_PROFILE                          Profile;
  size_t                                   MaximumLength;
  PFN_WDF_DMA_ENABLER_FILL                 EvtDmaEnablerFill;
  PFN_WDF_DMA_ENABLER_FLUSH                EvtDmaEnablerFlush;
  PFN_WDF_DMA_ENABLER_DISABLE              EvtDmaEnablerDisable;
  PFN_WDF_DMA_ENABLER_ENABLE               EvtDmaEnablerEnable;
  PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_START EvtDmaEnablerSelfManagedIoStart;
  PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP  EvtDmaEnablerSelfManagedIoStop;
  ULONG                                    AddressWidthOverride;
  ULONG                                    WdmDmaVersionOverride;
  ULONG                                    Flags;
} WDF_DMA_ENABLER_CONFIG, *PWDF_DMA_ENABLER_CONFIG;

Members

Size

The size, in bytes, of this structure.

Profile

A WDF_DMA_PROFILE-typed value, which identifies the type of bus-master DMA operation that will be associated with the DMA enabler object.

MaximumLength

The default maximum size, in bytes, that the device can handle in a single DMA transfer. (Drivers can override this default value for individual DMA transactions by calling WdfDmaTransactionSetMaximumLength.) If your driver must run on versions of Microsoft Windows operating systems that support a maximum of 16 map registers, MaximumLength must be less than 65,536.

EvtDmaEnablerFill

A pointer to the driver's EvtDmaEnablerFill event callback function, or NULL.

EvtDmaEnablerFlush

A pointer to the driver's EvtDmaEnablerFlush event callback function, or NULL.

EvtDmaEnablerDisable

A pointer to the driver's EvtDmaEnablerDisable event callback function, or NULL.

EvtDmaEnablerEnable

A pointer to the driver's EvtDmaEnablerEnable event callback function, or NULL.

EvtDmaEnablerSelfManagedIoStart

A pointer to the driver's EvtDmaEnablerSelfManagedIoStart event callback function, or NULL.

EvtDmaEnablerSelfManagedIoStop

A pointer to the driver's EvtDmaEnablerSelfManagedIoStop event callback function, or NULL.

AddressWidthOverride

Set to zero to accept the address width specified in Profile. A driver can override the Profile address width by setting this member to a value between 24 and 63. If your driver specifies a system-mode DMA profile, AddressWidthOverride must be zero. If your driver specifies a 32-bit DMA profile, AddressWidthOverride cannot be greater than 32. The AddressWidthOverride member is available in version 1.11 and later versions of KMDF. See more information in Remarks.

WdmDmaVersionOverride

Set to zero to accept the default DMA version. To request DMA version 3, set to 3. The WdmDmaVersionOverride member is available in version 1.11 and in later versions of KMDF. DMA version 3 is available starting in Windows 8.

Flags

A bitwise OR of one or more values from the WDF_DMA_ENABLER_CONFIG_FLAGS enumeration. The Flags member is available in version 1.11 and in later versions of KMDF.

Remarks

The WDF_DMA_ENABLER_CONFIG structure is used as an input parameter to the WdfDmaEnablerCreate method.

Drivers must call WDF_DMA_ENABLER_CONFIG_INIT to initialize the WDF_DMA_ENABLER_CONFIG structure.

In Windows 8 and later, when the driver provides a nonzero value for AddressWidthOverride, the framework requests DMA version 3 and passes the AddressWidthOverride value through to the HAL.

On Windows 7 and Windows Vista, when the driver provides a nonzero value for AddressWidthOverride, the framework uses either 32-bit or 24-bit DMA. For example, if the driver specifies a 64-bit profile and provides an AddressWidthOverride of 32, the framework uses 32-bit DMA. If the driver specifies a 32-bit profile and provides an AddressWidthOverride of 24, the framework uses 24-bit DMA.

Requirements

Requirement Value
Minimum KMDF version 1.0
Header wdfdmaenabler.h (include Wdf.h)

See also

EvtDmaEnablerDisable

EvtDmaEnablerEnable

EvtDmaEnablerFill

EvtDmaEnablerFlush

EvtDmaEnablerSelfManagedIoStart

EvtDmaEnablerSelfManagedIoStop

WDF_DMA_ENABLER_CONFIG_INIT

WDF_DMA_PROFILE

WdfDmaEnablerCreate

WdfDmaTransactionSetMaximumLength