//0x68 bytes (sizeof)
struct _DMA_IOMMU_INTERFACE_V1
{
    LONG (*CreateDomain)(UCHAR arg1, struct
 _IOMMU_DMA_DOMAIN** arg2);      //0x0
    LONG (*DeleteDomain)(struct
 _IOMMU_DMA_DOMAIN* arg1);                   //0x8
    LONG (*AttachDevice)(struct
 _IOMMU_DMA_DOMAIN* arg1, struct
 _DEVICE_OBJECT* arg2, ULONG arg3, ULONG arg4); //0x10
    LONG (*DetachDevice)(struct
 _IOMMU_DMA_DOMAIN* arg1, struct
 _DEVICE_OBJECT* arg2, ULONG arg3); //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 (*MapLogicalRange)(struct
 _IOMMU_DMA_DOMAIN* arg1, ULONG arg2, struct
 _MDL* arg3, ULONGLONG arg4); //0x38
    LONG (*UnmapLogicalRange)(struct
 _IOMMU_DMA_DOMAIN* arg1, ULONGLONG arg2, ULONGLONG arg3); //0x40
    LONG (*MapIdentityRange)(struct
 _IOMMU_DMA_DOMAIN* arg1, ULONG arg2, struct
 _MDL* arg3); //0x48
    LONG (*UnmapIdentityRange)(struct
 _IOMMU_DMA_DOMAIN* arg1, struct
 _MDL* arg2); //0x50
    LONG (*SetDeviceFaultReporting)(struct
 _DEVICE_OBJECT* arg1, ULONG arg2, UCHAR arg3, struct
 _DEVICE_FAULT_CONFIGURATION* arg4); //0x58
    LONG (*ConfigureDomain)(struct
 _IOMMU_DMA_DOMAIN* arg1, struct
 _DOMAIN_CONFIGURATION* arg2); //0x60
};