struct _DMA_IOMMU_INTERFACE_V2 { 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 */};size 176 (0xb0)22 members0 holespadding 03 cachelines
Used in (1)