Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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
IOMMU_DOMAIN_ATTACH_PASID_DEVICE