//0xb0 bytes (sizeof)
struct _DMA_IOMMU_INTERFACE_V2
{
    LONG (*CreateDomainEx)(enum
 _IOMMU_DMA_DOMAIN_TYPE arg1, union
 _IOMMU_DMA_DOMAIN_CREATION_FLAGS arg2, struct
 _IOMMU_DMA_LOGICAL_ALLOCATOR_CONFIG* arg3, struct
 _IOMMU_DMA_RESERVED_REGION* arg4, struct
 _IOMMU_DMA_DOMAIN** arg5); //0x0
    LONG (*DeleteDomain)(struct
 _IOMMU_DMA_DOMAIN* arg1);                   //0x8
    LONG (*AttachDeviceEx)(struct
 _IOMMU_DMA_DOMAIN* arg1, struct
 _IOMMU_DMA_DEVICE* arg2); //0x10
    LONG (*DetachDeviceEx)(struct
 _IOMMU_DMA_DEVICE* arg1);                 //0x18
    LONG (*FlushDomain)(struct
 _IOMMU_DMA_DOMAIN* arg1);                    //0x20
    LONG (*FlushDomainByVaList)(struct
 _IOMMU_DMA_DOMAIN* arg1, UCHAR arg2, ULONG arg3, VOID* arg4); //0x28
    LONG (*QueryInputMappings)(struct
 _DEVICE_OBJECT* arg1, struct
 _INPUT_MAPPING_ELEMENT* arg2, ULONG arg3, ULONG* arg4); //0x30
    LONG (*MapLogicalRangeEx)(struct
 _IOMMU_DMA_DOMAIN* arg1, ULONG arg2, struct
 _IOMMU_MAP_PHYSICAL_ADDRESS* arg3, ULONGLONG* arg4, ULONGLONG* arg5, ULONGLONG* arg6, ULONGLONG* arg7); //0x38
    LONG (*UnmapLogicalRange)(struct
 _IOMMU_DMA_DOMAIN* arg1, ULONGLONG arg2, ULONGLONG arg3); //0x40
    LONG (*MapIdentityRangeEx)(struct
 _IOMMU_DMA_DOMAIN* arg1, ULONG arg2, struct
 _IOMMU_MAP_PHYSICAL_ADDRESS* arg3); //0x48
    LONG (*UnmapIdentityRangeEx)(struct
 _IOMMU_DMA_DOMAIN* arg1, struct
 _IOMMU_MAP_PHYSICAL_ADDRESS* arg2); //0x50
    LONG (*SetDeviceFaultReportingEx)(struct
 _IOMMU_DMA_DEVICE* arg1, ULONG arg2, UCHAR arg3, struct
 _DEVICE_FAULT_CONFIGURATION* arg4); //0x58
    LONG (*ConfigureDomain)(struct
 _IOMMU_DMA_DOMAIN* arg1, struct
 _DOMAIN_CONFIGURATION* arg2); //0x60
    VOID (*QueryAvailableDomainTypes)(struct
 _IOMMU_DMA_DEVICE* arg1, ULONG* arg2); //0x68
    LONG (*RegisterInterfaceStateChangeCallback)(VOID (*arg1)(struct
 _IOMMU_INTERFACE_STATE_CHANGE* arg1, VOID* arg2), VOID* arg2, struct
 _IOMMU_DMA_DEVICE* arg3, union
 _IOMMU_INTERFACE_STATE_CHANGE_FIELDS* arg4); //0x70
    LONG (*UnregisterInterfaceStateChangeCallback)(VOID (*arg1)(struct
 _IOMMU_INTERFACE_STATE_CHANGE* arg1, VOID* arg2), struct
 _IOMMU_DMA_DEVICE* arg2); //0x78
    LONG (*ReserveLogicalAddressRange)(struct
 _IOMMU_DMA_DOMAIN* arg1, ULONGLONG arg2, ULONGLONG* arg3, ULONGLONG* arg4, ULONGLONG* arg5, struct
 _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN** arg6); //0x80
    LONG (*FreeReservedLogicalAddressRange)(struct
 _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN* arg1); //0x88
    LONG (*MapReservedLogicalRange)(struct
 _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN* arg1, ULONGLONG arg2, ULONG arg3, struct
 _IOMMU_MAP_PHYSICAL_ADDRESS* arg4, struct
 _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN_MAPPED_SEGMENT* arg5); //0x90
    LONG (*UnmapReservedLogicalRange)(struct
 _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN_MAPPED_SEGMENT* arg1); //0x98
    LONG (*CreateDevice)(struct
 _DEVICE_OBJECT* arg1, struct
 _IOMMU_DEVICE_CREATION_CONFIGURATION* arg2, struct
 _IOMMU_DMA_DEVICE** arg3); //0xa0
    LONG (*DeleteDevice)(struct
 _IOMMU_DMA_DEVICE* arg1);                   //0xa8
};