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