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_V2 structure (wdm.h)

A structure containing the set of IOMMU Version 2 (V2) functions.

Syntax

typedef struct _DMA_IOMMU_INTERFACE_V2 {
 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;
} DMA_IOMMU_INTERFACE_V2, *PDMA_IOMMU_INTERFACE_V2;

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.

Requirements

Requirement Value
Minimum supported server Windows Server 2022
Header wdm.h (include Wdm.h)

See also

DMA_IOMMU_INTERFACE_EX


Feedback

Was this page helpful?

Additional resources