struct _EXT_IOMMU_FUNCTION_TABLE { long (*ConfigureSettings)(struct _EXT_IOMMU*, struct _EXT_IOMMU_SETTINGS*);/* 0x0 8 */ long (*Initialize)(struct _EXT_IOMMU*, unsigned long, unsigned char, unsigned char);/* 0x8 8 */ long (*PrepareForReboot)(struct _EXT_IOMMU*, unsigned char, unsigned char);/* 0x10 8 */ long (*AllocateDomain)(struct _EXT_IOMMU*, struct _EXT_IOMMU_DOMAIN*, struct _EXT_IOMMU_DOMAIN*, void*);/* 0x18 8 */ void (*FreeDomain)(struct _EXT_IOMMU*, struct _EXT_IOMMU_DOMAIN*, void*);/* 0x20 8 */ long (*CreateDevice)(struct _EXT_IOMMU*, struct _EXT_IOMMU_DEVICE_ID*, union _EXT_IOMMU_CREATE_DEVICE_FLAGS, void*, struct _EXT_IOMMU_DEVICE**, void*);/* 0x28 8 */ void (*DeleteDevice)(struct _EXT_IOMMU*, struct _EXT_IOMMU_DEVICE*, void*);/* 0x30 8 */ unsigned char (*OwnDevice)(struct _EXT_IOMMU*, struct _EXT_IOMMU_DEVICE_ID*);/* 0x38 8 */ /* ── cacheline 1 boundary (64 bytes) ── */ void (*ConfigureDeviceFaultReporting)(struct _EXT_IOMMU*, struct _EXT_IOMMU_DEVICE*, unsigned char);/* 0x40 8 */ long (*AttachDeviceDomain)(struct _EXT_IOMMU*, struct _EXT_IOMMU_DEVICE*, struct _EXT_IOMMU_DOMAIN*, void*);/* 0x48 8 */ void (*DetachDeviceDomain)(struct _EXT_IOMMU*, struct _EXT_IOMMU_DEVICE*, void*);/* 0x50 8 */ void (*FlushDomainTb)(struct _EXT_IOMMU*, struct _EXT_IOMMU_DOMAIN*, struct _EXT_IOMMU_FLUSH_CONTEXT*, unsigned, struct _KTB_FLUSH_VA*);/* 0x58 8 */ void (*SyncFlush)(struct _EXT_IOMMU*, struct _EXT_IOMMU_FLUSH_CONTEXT*);/* 0x60 8 */ void (*CompleteFlush)(struct _EXT_IOMMU*, struct _EXT_IOMMU_FLUSH_CONTEXT*);/* 0x68 8 */ long (*AllocateRemappingTableEntry)(void*, unsigned long, unsigned long, unsigned long, unsigned short, unsigned char, unsigned char, unsigned long, struct _EXT_IOMMU_DEVICE_ID*);/* 0x70 8 */ long (*FreeRemappingTableEntry)(void*, unsigned long, unsigned long);/* 0x78 8 */ /* ── cacheline 2 boundary (128 bytes) ── */ unsigned char (*UpdateRemappingTableEntry)(void*, unsigned char, unsigned long, struct _INTERRUPT_LINE_STATE*);/* 0x80 8 */ void (*InvalidateRemappingTableEntry)(void*, unsigned long);/* 0x88 8 */ void (*UpdateRemappingDestination)(void*, unsigned char, unsigned long*, unsigned long*, unsigned long);/* 0x90 8 */ long (*InitializeFirmwareDomain)(struct _EXT_IOMMU*, struct _EXT_IOMMU_DOMAIN*);/* 0x98 8 */ void (*ConfigureDomain)(struct _EXT_IOMMU*, struct _EXT_IOMMU_DOMAIN*);/* 0xa0 8 */ long (*Deinitialize)(struct _EXT_IOMMU*);/* 0xa8 8 */ void (*CaptureGlobalCrashdumpState)(void*);/* 0xb0 8 */ long (*SetDeviceMpam)(struct _EXT_IOMMU*, struct _EXT_IOMMU_DEVICE_ID*, unsigned short, unsigned char);/* 0xb8 8 */ /* ── cacheline 3 boundary (192 bytes) ── */ long (*GetDeviceMpam)(struct _EXT_IOMMU*, struct _EXT_IOMMU_DEVICE_ID*, unsigned short*, unsigned char*);/* 0xc0 8 */};size 200 (0xc8)25 members0 holespadding 04 cachelines
Used in (2)