struct _DMA_IOMMU_INTERFACE_V3 { long (*CreateDomainEx)(enum _IOMMU_DMA_DOMAIN_TYPE, union _IOMMU_DMA_DOMAIN_CREATION_FLAGS, struct _IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG*, struct _IOMMU_DMA_RESERVED_REGION*, struct _IOMMU_DMA_DOMAIN**);/* 0x0 8 */ long (*DeleteDomain)(struct _IOMMU_DMA_DOMAIN*);/* 0x8 8 */ long (*AttachDeviceEx)(struct _IOMMU_DMA_DOMAIN*, struct _IOMMU_DMA_DEVICE*);/* 0x10 8 */ long (*DetachDeviceEx)(struct _IOMMU_DMA_DEVICE*);/* 0x18 8 */ long (*FlushDomain)(struct _IOMMU_DMA_DOMAIN*);/* 0x20 8 */ long (*FlushDomainByVaList)(struct _IOMMU_DMA_DOMAIN*, unsigned char, unsigned long, void*);/* 0x28 8 */ long (*QueryInputMappings)(struct _DEVICE_OBJECT*, struct _INPUT_MAPPING_ELEMENT*, unsigned long, unsigned long*);/* 0x30 8 */ long (*MapLogicalRangeEx)(struct _IOMMU_DMA_DOMAIN*, unsigned long, struct _IOMMU_MAP_PHYSICAL_ADDRESS*, unsigned __int64*, unsigned __int64*, unsigned __int64*, unsigned __int64*);/* 0x38 8 */ /* ── cacheline 1 boundary (64 bytes) ── */ long (*UnmapLogicalRange)(struct _IOMMU_DMA_DOMAIN*, unsigned __int64, unsigned __int64);/* 0x40 8 */ long (*MapIdentityRangeEx)(struct _IOMMU_DMA_DOMAIN*, unsigned long, struct _IOMMU_MAP_PHYSICAL_ADDRESS*);/* 0x48 8 */ long (*UnmapIdentityRangeEx)(struct _IOMMU_DMA_DOMAIN*, struct _IOMMU_MAP_PHYSICAL_ADDRESS*);/* 0x50 8 */ long (*SetDeviceFaultReportingEx)(struct _IOMMU_DMA_DEVICE*, unsigned long, unsigned char, struct _DEVICE_FAULT_CONFIGURATION*);/* 0x58 8 */ long (*ConfigureDomain)(struct _IOMMU_DMA_DOMAIN*, struct _DOMAIN_CONFIGURATION*);/* 0x60 8 */ void (*QueryAvailableDomainTypes)(struct _IOMMU_DMA_DEVICE*, unsigned long*);/* 0x68 8 */ long (*RegisterInterfaceStateChangeCallback)(void (*)(struct _IOMMU_INTERFACE_STATE_CHANGE*, void*), void*, struct _IOMMU_DMA_DEVICE*, union _IOMMU_INTERFACE_STATE_CHANGE_FIELDS*);/* 0x70 8 */ long (*UnregisterInterfaceStateChangeCallback)(void (*)(struct _IOMMU_INTERFACE_STATE_CHANGE*, void*), struct _IOMMU_DMA_DEVICE*);/* 0x78 8 */ /* ── cacheline 2 boundary (128 bytes) ── */ long (*ReserveLogicalAddressRange)(struct _IOMMU_DMA_DOMAIN*, unsigned __int64, unsigned __int64*, unsigned __int64*, unsigned __int64*, struct _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN**);/* 0x80 8 */ long (*FreeReservedLogicalAddressRange)(struct _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN*);/* 0x88 8 */ long (*MapReservedLogicalRange)(struct _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN*, unsigned __int64, unsigned long, struct _IOMMU_MAP_PHYSICAL_ADDRESS*, struct _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN_MAPPED_SEGMENT*);/* 0x90 8 */ long (*UnmapReservedLogicalRange)(struct _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN_MAPPED_SEGMENT*);/* 0x98 8 */ long (*CreateDevice)(struct _DEVICE_OBJECT*, struct _IOMMU_DEVICE_CREATION_CONFIGURATION*, struct _IOMMU_DMA_DEVICE**);/* 0xa0 8 */ long (*DeleteDevice)(struct _IOMMU_DMA_DEVICE*);/* 0xa8 8 */ long (*CreatePasidDevice)(struct _IOMMU_DMA_DEVICE*, struct _IOMMU_DMA_PASID_DEVICE**, unsigned long*);/* 0xb0 8 */ long (*DeletePasidDevice)(struct _IOMMU_DMA_PASID_DEVICE*);/* 0xb8 8 */ /* ── cacheline 3 boundary (192 bytes) ── */ long (*AttachPasidDevice)(struct _IOMMU_DMA_DOMAIN*, struct _IOMMU_DMA_PASID_DEVICE*);/* 0xc0 8 */ long (*DetachPasidDevice)(struct _IOMMU_DMA_PASID_DEVICE*);/* 0xc8 8 */ long (*QueryDeviceInfo)(struct _IOMMU_DMA_DEVICE*, unsigned long, unsigned long*, struct _IOMMU_DMA_DEVICE_INFORMATION*);/* 0xd0 8 */};size 216 (0xd8)27 members0 holespadding 04 cachelines
Used in (1)