DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION structure (wdm.h)

Defines a configuration that further describes constraints and features when creating a common buffer. The driver can provide an array of DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION structures in the CreateCommonBufferFromMdl callback routine.

Syntax

typedef struct _DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION {
  DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION_TYPE ConfigType;
  union {
    struct {
      PHYSICAL_ADDRESS MinimumAddress;
      PHYSICAL_ADDRESS MaximumAddress;
    } LogicalAddressLimits;
    struct {
      ULONGLONG Offset;
      ULONG     Length;
    } SubSection;
    DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION_ACCESS_TYPE HardwareAccessType;
    ULONGLONG                                            Reserved[4];
  };
} DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION, *PDMA_COMMON_BUFFER_EXTENDED_CONFIGURATION;

Members

ConfigType

A DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION_TYPE-typed value that indicates the type of common buffer extended configuration this instance represents.

LogicalAddressLimits

When ConfigType is CommonBufferConfigTypeLogicalAddressLimits, describes the logical address limits for the common buffer being created.

LogicalAddressLimits.MinimumAddress

Provides the (inclusive) minimum starting logical address of the common buffer being created.

LogicalAddressLimits.MaximumAddress

Provides the (inclusive) maximum final logical address of the common buffer being created.

SubSection

When ConfigType is CommonBufferConfigTypeSubSection, describes the subsection within a backing MDL that should be used to back the common buffer being created.

A subsection must only be contained within a single MDL in an MDL chain.

SubSection.Offset

Provides the offset into the MDL to indicate the starting address of the common buffer. Must be page-aligned.

SubSection.Length

Provides the length of the common buffer subsection. Must be page-aligned.

HardwareAccessType

When ConfigType is CommonBufferConfigTypeHardwareAccessPermissions, this is a DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION_ACCESS_TYPE-typed value that describes the hardware access permissions for the common buffer being created.

Common buffer creation fails if the access type is not possible on the system. ReadOnly and WriteOnly are only permissible if the DMA Adapter is using DMA Remapping.

Reserved[4]

This field is unused.

Remarks

The extended configurations are an optional parameter for the CreateCommonBufferFromMdl callback routine.

If no extended configurations are provided, common buffer creation uses the entire MDL as backing memory, with a minimum logical address of zero and a maximum logical address defined by the DMA_ADAPTER being used.

Requirements

Requirement Value
Minimum supported server Windows Server 2022
Header wdm.h

See also

DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION_TYPE enumeration

DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION_ACCESS_TYPE enumeration

PCREATE_COMMON_BUFFER_FROM_MDL callback routine