//0x88 bytes (sizeof)
struct _EXT_IOMMU_FUNCTION_TABLE
{
LONG (*ConfigureSettings)(struct
_EXT_IOMMU* arg1, struct
_EXT_IOMMU_SETTINGS* arg2); //0x0
LONG (*Initialize)(struct
_EXT_IOMMU* arg1, ULONG arg2, UCHAR arg3); //0x8
LONG (*AllocateDomain)(struct
_EXT_IOMMU* arg1, struct
_EXT_IOMMU_DOMAIN* arg2, struct
_EXT_IOMMU_DOMAIN* arg3, VOID* arg4); //0x10
VOID (*FreeDomain)(struct
_EXT_IOMMU* arg1, struct
_EXT_IOMMU_DOMAIN* arg2, VOID* arg3); //0x18
LONG (*CreateDevice)(struct
_EXT_IOMMU* arg1, struct
_EXT_IOMMU_DEVICE_ID* arg2, union
_EXT_IOMMU_CREATE_DEVICE_FLAGS arg3, struct
_EXT_IOMMU_DEVICE** arg4, VOID* arg5); //0x20
VOID (*DeleteDevice)(struct
_EXT_IOMMU* arg1, struct
_EXT_IOMMU_DEVICE* arg2, VOID* arg3); //0x28
VOID (*ConfigureDeviceFaultReporting)(struct
_EXT_IOMMU* arg1, struct
_EXT_IOMMU_DEVICE* arg2, UCHAR arg3); //0x30
LONG (*AttachDeviceDomain)(struct
_EXT_IOMMU* arg1, struct
_EXT_IOMMU_DEVICE* arg2, struct
_EXT_IOMMU_DOMAIN* arg3, VOID* arg4); //0x38
VOID (*DetachDeviceDomain)(struct
_EXT_IOMMU* arg1, struct
_EXT_IOMMU_DEVICE* arg2, VOID* arg3); //0x40
VOID (*FlushDomainTb)(struct
_EXT_IOMMU* arg1, struct
_EXT_IOMMU_DOMAIN* arg2, struct
_EXT_IOMMU_FLUSH_CONTEXT* arg3, ULONG arg4, struct
_KTB_FLUSH_VA* arg5); //0x48
VOID (*SyncFlush)(struct
_EXT_IOMMU* arg1, struct
_EXT_IOMMU_FLUSH_CONTEXT* arg2); //0x50
VOID (*CompleteFlush)(struct
_EXT_IOMMU* arg1, struct
_EXT_IOMMU_FLUSH_CONTEXT* arg2); //0x58
LONG (*AllocateRemappingTableEntry)(VOID* arg1, ULONG arg2, ULONG arg3, ULONG arg4, USHORT arg5, UCHAR arg6, UCHAR arg7, ULONG arg8, struct
_EXT_IOMMU_DEVICE_ID* arg9); //0x60
LONG (*FreeRemappingTableEntry)(VOID* arg1, ULONG arg2, ULONG arg3); //0x68
UCHAR (*UpdateRemappingTableEntry)(VOID* arg1, UCHAR arg2, ULONG arg3, struct
_INTERRUPT_LINE_STATE* arg4); //0x70
VOID (*InvalidateRemappingTableEntry)(VOID* arg1, ULONG arg2); //0x78
VOID (*UpdateRemappingDestination)(VOID* arg1, UCHAR arg2, ULONG* arg3, ULONG* arg4, ULONG arg5); //0x80
};