DMA_IOMMU_INTERFACE_V3结构包含一组 IOMMU 版本 3 (V3) 函数。
语法
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;
成员
CreateDomainEx
指向创建 DMA 重新映射设备域的 IOMMU_DOMAIN_CREATE_EX 函数的指针。
DeleteDomain
指向删除设备域的 IOMMU_DOMAIN_DELETE 函数的指针。
AttachDeviceEx
指向将设备附加到域的 IOMMU_DOMAIN_ATTACH_DEVICE_EX 函数的指针。
DetachDeviceEx
指向从域分离设备的 IOMMU_DOMAIN_DETACH_DEVICE_EX 函数的指针。
FlushDomain
指向 IOMMU_FLUSH_DOMAIN 函数的指针,该函数刷新与此域匹配的所有条目的 TLB。
FlushDomainByVaList
指向 IOMMU_FLUSH_DOMAIN_VA_LIST 函数的指针,该函数刷新与指定域的 ASID 和提供的列表中的某个地址匹配的所有条目的 TLB。
QueryInputMappings
指向 IOMMU_QUERY_INPUT_MAPPINGS 函数的指针,该函数尝试查找对给定设备有效的输入映射 ID,并使用这些 ID 填充提供的缓冲区。
MapLogicalRangeEx
指向 IOMMU_MAP_LOGICAL_RANGE_EX 函数的指针,该函数将一系列页面映射到指定域的地址空间。
UnmapLogicalRange
指向取消映射页面范围的 IOMMU_UNMAP_LOGICAL_RANGE 函数的指针。
MapIdentityRangeEx
指向 IOMMU_MAP_IDENTITY_RANGE_EX 函数的指针,该函数为提供的域中提供的物理地址创建标识映射。
UnmapIdentityRangeEx
指向 IOMMU_UNMAP_IDENTITY_RANGE_EX 函数的指针,用于删除指定物理地址的标识映射。
SetDeviceFaultReportingEx
指向 IOMMU_SET_DEVICE_FAULT_REPORTING_EX 函数的指针,用于设置设备上已附加到域的设备故障报告状态。
ConfigureDomain
指向配置要使用的域的 IOMMU_DOMAIN_CONFIGURE 函数的指针。
QueryAvailableDomainTypes
指向 IOMMU_DEVICE_QUERY_DOMAIN_TYPES 函数的指针,该函数根据平台和 DMA Guard 策略等环境因素,查询允许设备附加到的可用域类型。
RegisterInterfaceStateChangeCallback
指向 IOMMU_REGISTER_INTERFACE_STATE_CHANGE_CALLBACK 函数的指针,该函数允许调用方在发生与 IOMMU 接口相关的任何状态更改时注册要调用的回调。
UnregisterInterfaceStateChangeCallback
指向 IOMMU_UNREGISTER_INTERFACE_STATE_CHANGE_CALLBACK 函数的指针,该函数允许调用方取消注册已注册的回调。
ReserveLogicalAddressRange
指向 IOMMU_RESERVE_LOGICAL_ADDRESS_RANGE 函数的指针,该函数预分配可用于将来映射的逻辑地址空间。
FreeReservedLogicalAddressRange
指向释放逻辑地址令牌的 IOMMU_FREE_RESERVED_LOGICAL_ADDRESS_RANGE 函数的指针。
MapReservedLogicalRange
指向映射保留逻辑范围的 IOMMU_MAP_RESERVED_LOGICAL_RANGE 函数的指针。
UnmapReservedLogicalRange
指向 IOMMU_UNMAP_RESERVED_LOGICAL_RANGE 函数的指针,该函数取消映射以前映射的保留逻辑范围。
CreateDevice
指向 IOMMU_DEVICE_CREATE 函数的指针,该函数采用物理设备对象并创建 IOMMU_DMA_DEVICE。
DeleteDevice
指向删除 IOMMU_DMA_DEVICE的 IOMMU_DEVICE_DELETE 函数的指针。
CreatePasidDevice
指向 IOMMU_PASID_DEVICE_CREATE 函数的指针,该函数使用其自己的 PASID 从 IOMMU DMA 设备创建一个新的子设备。
DeletePasidDevice
指向删除 PASID 子设备的 IOMMU_PASID_DEVICE_DELETE 函数的指针,并释放其 ASID。
AttachPasidDevice
指向将 PASID 子设备附加到现有内存域 的IOMMU_DOMAIN_ATTACH_PASID_DEVICE 函数的指针。
DetachPasidDevice
指向 IOMMU_DOMAIN_DETACH_PASID_DEVICE 函数的指针,该函数从当前附加到的域中分离 PASID 子设备。
QueryDeviceInfo
指向 IOMMU_DEVICE_QUERY_INFORMATION 函数的指针,用于查询有关 IOMMU DMA 设备的信息。
注解
此结构使用附加的 PASID(进程地址空间标识符)支持函数扩展 DMA_IOMMU_INTERFACE_V2 。 V3 接口包括 V2 中的所有功能以及用于创建和管理 PASID 子设备以及查询设备信息的新功能。
要求
| 要求 | 价值 |
|---|---|
| 最低支持的客户端 | Windows 11 版本 22H2 |
| 标头 | wdm.h (包括 Wdm.h) |
另请参阅
IOMMU_DOMAIN_ATTACH_PASID_DEVICE