Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

DMA_IOMMU_INTERFACE_V3 structure (wdm.h)

The DMA_IOMMU_INTERFACE_V3 structure contains the set of IOMMU Version 3 (V3) functions.

Syntax

typedef struct _DMA_IOMMU_INTERFACE_V3 {
 PIOMMU_DOMAIN_CREATE_EX CreateDomainEx;
 PIOMMU_DOMAIN_DELETE DeleteDomain;
 PIOMMU_DOMAIN_ATTACH_DEVICE_EX AttachDeviceEx;
 PIOMMU_DOMAIN_DETACH_DEVICE_EX DetachDeviceEx;
 PIOMMU_FLUSH_DOMAIN FlushDomain;
 PIOMMU_FLUSH_DOMAIN_VA_LIST FlushDomainByVaList;
 PIOMMU_QUERY_INPUT_MAPPINGS QueryInputMappings;
 PIOMMU_MAP_LOGICAL_RANGE_EX MapLogicalRangeEx;
 PIOMMU_UNMAP_LOGICAL_RANGE UnmapLogicalRange;
 PIOMMU_MAP_IDENTITY_RANGE_EX MapIdentityRangeEx;
 PIOMMU_UNMAP_IDENTITY_RANGE_EX UnmapIdentityRangeEx;
 PIOMMU_SET_DEVICE_FAULT_REPORTING_EX SetDeviceFaultReportingEx;
 PIOMMU_DOMAIN_CONFIGURE ConfigureDomain;
 PIOMMU_DEVICE_QUERY_DOMAIN_TYPES QueryAvailableDomainTypes;
 PIOMMU_REGISTER_INTERFACE_STATE_CHANGE_CALLBACK RegisterInterfaceStateChangeCallback;
 PIOMMU_UNREGISTER_INTERFACE_STATE_CHANGE_CALLBACK UnregisterInterfaceStateChangeCallback;
 PIOMMU_RESERVE_LOGICAL_ADDRESS_RANGE ReserveLogicalAddressRange;
 PIOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE FreeReservedLogicalAddressRange;
 PIOMMU_MAP_RESERVED_LOGICAL_RANGE MapReservedLogicalRange;
 PIOMMU_UNMAP_RESERVED_LOGICAL_RANGE UnmapReservedLogicalRange;
 PIOMMU_DEVICE_CREATE CreateDevice;
 PIOMMU_DEVICE_DELETE DeleteDevice;
 PIOMMU_PASID_DEVICE_CREATE CreatePasidDevice;
 PIOMMU_PASID_DEVICE_DELETE DeletePasidDevice;
 PIOMMU_DOMAIN_ATTACH_PASID_DEVICE AttachPasidDevice;
 PIOMMU_DOMAIN_DETACH_PASID_DEVICE DetachPasidDevice;
 PIOMMU_DEVICE_QUERY_INFORMATION QueryDeviceInfo;
} DMA_IOMMU_INTERFACE_V3, *PDMA_IOMMU_INTERFACE_V3;

Members

CreateDomainEx

A pointer to the IOMMU_DOMAIN_CREATE_EX function that creates a DMA remapping device domain.

DeleteDomain

A pointer to the IOMMU_DOMAIN_DELETE function that deletes a device domain.

AttachDeviceEx

A pointer to the IOMMU_DOMAIN_ATTACH_DEVICE_EX function that attaches a device to a domain.

DetachDeviceEx

A pointer to the IOMMU_DOMAIN_DETACH_DEVICE_EX function that detaches a device from a domain.

FlushDomain

A pointer to the IOMMU_FLUSH_DOMAIN function that flushes the TLB for all entries which match this domain.

FlushDomainByVaList

A pointer to the IOMMU_FLUSH_DOMAIN_VA_LIST function that flushes the TLB for all entries that match the specified domain's ASID and one of the addresses in the provided list.

QueryInputMappings

A pointer to the IOMMU_QUERY_INPUT_MAPPINGS function that attempts to find input mapping IDs which are valid for the given device and populate the provided buffer with those IDs.

MapLogicalRangeEx

A pointer to the IOMMU_MAP_LOGICAL_RANGE_EX function that maps a range of pages into the address space of the specified domain.

UnmapLogicalRange

A pointer to the IOMMU_UNMAP_LOGICAL_RANGE function that unmaps a range of pages.

MapIdentityRangeEx

A pointer to the IOMMU_MAP_IDENTITY_RANGE_EX function that creates an identity mapping for the provided physical address in the provided domain.

UnmapIdentityRangeEx

A pointer to the IOMMU_UNMAP_IDENTITY_RANGE_EX function that deletes an identity mapping for the specified physical address.

SetDeviceFaultReportingEx

A pointer to the IOMMU_SET_DEVICE_FAULT_REPORTING_EX function that sets the device fault reporting state on a device already attached to a domain.

ConfigureDomain

A pointer to the IOMMU_DOMAIN_CONFIGURE function that configures a domain for use.

QueryAvailableDomainTypes

A pointer to the IOMMU_DEVICE_QUERY_DOMAIN_TYPES function that queries for the available types of domains that a device is allowed to attach to, depending on environment factors, such as platform and the DMA Guard policy.

RegisterInterfaceStateChangeCallback

A pointer to the IOMMU_REGISTER_INTERFACE_STATE_CHANGE_CALLBACK function that allows the caller to register a callback to be invoked whenever any state change related to the IOMMU interface occurs.

UnregisterInterfaceStateChangeCallback

A pointer to the IOMMU_UNREGISTER_INTERFACE_STATE_CHANGE_CALLBACK function that allows the caller to deregister a registered callback.

ReserveLogicalAddressRange

A pointer to the IOMMU_RESERVE_LOGICAL_ADDRESS_RANGE function that preallocates logical address space that can be used for future mappings.

FreeReservedLogicalAddressRange

A pointer to the IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE function that frees a logical address token.

MapReservedLogicalRange

A pointer to the IOMMU_MAP_RESERVED_LOGICAL_RANGE function that maps a reserved logical range.

UnmapReservedLogicalRange

A pointer to the IOMMU_UNMAP_RESERVED_LOGICAL_RANGE function that unmaps a previously mapped reserved logical range.

CreateDevice

A pointer to the IOMMU_DEVICE_CREATE function that takes a physical device object and creates an IOMMU_DMA_DEVICE.

DeleteDevice

A pointer to the IOMMU_DEVICE_DELETE function that deletes an IOMMU_DMA_DEVICE.

CreatePasidDevice

A pointer to the IOMMU_PASID_DEVICE_CREATE function that creates a new sub-device with its own PASID from an IOMMU DMA device.

DeletePasidDevice

A pointer to the IOMMU_PASID_DEVICE_DELETE function that deletes a PASID sub-device and frees its ASID.

AttachPasidDevice

A pointer to the IOMMU_DOMAIN_ATTACH_PASID_DEVICE function that attaches a PASID sub-device to an existing memory domain.

DetachPasidDevice

A pointer to the IOMMU_DOMAIN_DETACH_PASID_DEVICE function that detaches a PASID sub-device from the domain it is currently attached to.

QueryDeviceInfo

A pointer to the IOMMU_DEVICE_QUERY_INFORMATION function that queries information about an IOMMU DMA device.

Remarks

This structure extends DMA_IOMMU_INTERFACE_V2 with additional PASID (Process Address Space Identifier) support functions. The V3 interface includes all the functions from V2 plus new capabilities for creating and managing PASID sub-devices and querying device information.

Requirements

Requirement Value
Minimum supported client Windows 11, version 22H2
Header wdm.h (include Wdm.h)

See also

DMA_IOMMU_INTERFACE_V2

DMA_IOMMU_INTERFACE_EX

IOMMU_PASID_DEVICE_CREATE

IOMMU_PASID_DEVICE_DELETE

IOMMU_DOMAIN_ATTACH_PASID_DEVICE

IOMMU_DOMAIN_DETACH_PASID_DEVICE

IOMMU_DEVICE_QUERY_INFORMATION


Feedback

Was this page helpful?

Additional resources