//0x140 bytes (sizeof)
struct _DMA_OPERATIONS
{
    ULONG Size;                                                             //0x0
    VOID (*PutDmaAdapter)(struct
 _DMA_ADAPTER* arg1);                       //0x8
    VOID* (*AllocateCommonBuffer)(struct
 _DMA_ADAPTER* arg1, ULONG arg2, union
 _LARGE_INTEGER* arg3, UCHAR arg4); //0x10
    VOID (*FreeCommonBuffer)(struct
 _DMA_ADAPTER* arg1, ULONG arg2, union
 _LARGE_INTEGER arg3, VOID* arg4, UCHAR arg5); //0x18
    LONG (*AllocateAdapterChannel)(struct
 _DMA_ADAPTER* arg1, struct
 _DEVICE_OBJECT* arg2, ULONG arg3, enum
 _IO_ALLOCATION_ACTION (*arg4)(struct
 _DEVICE_OBJECT* arg1, struct
 _IRP* arg2, VOID* arg3, VOID* arg4), VOID* arg5); //0x20
    UCHAR (*FlushAdapterBuffers)(struct
 _DMA_ADAPTER* arg1, struct
 _MDL* arg2, VOID* arg3, VOID* arg4, ULONG arg5, UCHAR arg6); //0x28
    VOID (*FreeAdapterChannel)(struct
 _DMA_ADAPTER* arg1);                  //0x30
    VOID (*FreeMapRegisters)(struct
 _DMA_ADAPTER* arg1, VOID* arg2, ULONG arg3); //0x38
    union
 _LARGE_INTEGER (*MapTransfer)(struct
 _DMA_ADAPTER* arg1, struct
 _MDL* arg2, VOID* arg3, VOID* arg4, ULONG* arg5, UCHAR arg6); //0x40
    ULONG (*GetDmaAlignment)(struct
 _DMA_ADAPTER* arg1);                    //0x48
    ULONG (*ReadDmaCounter)(struct
 _DMA_ADAPTER* arg1);                     //0x50
    LONG (*GetScatterGatherList)(struct
 _DMA_ADAPTER* arg1, struct
 _DEVICE_OBJECT* arg2, struct
 _MDL* arg3, VOID* arg4, ULONG arg5, VOID (*arg6)(struct
 _DEVICE_OBJECT* arg1, struct
 _IRP* arg2, struct
 _SCATTER_GATHER_LIST* arg3, VOID* arg4), VOID* arg7, UCHAR arg8); //0x58
    VOID (*PutScatterGatherList)(struct
 _DMA_ADAPTER* arg1, struct
 _SCATTER_GATHER_LIST* arg2, UCHAR arg3); //0x60
    LONG (*CalculateScatterGatherList)(struct
 _DMA_ADAPTER* arg1, struct
 _MDL* arg2, VOID* arg3, ULONG arg4, ULONG* arg5, ULONG* arg6); //0x68
    LONG (*BuildScatterGatherList)(struct
 _DMA_ADAPTER* arg1, struct
 _DEVICE_OBJECT* arg2, struct
 _MDL* arg3, VOID* arg4, ULONG arg5, VOID (*arg6)(struct
 _DEVICE_OBJECT* arg1, struct
 _IRP* arg2, struct
 _SCATTER_GATHER_LIST* arg3, VOID* arg4), VOID* arg7, UCHAR arg8, VOID* arg9, ULONG arg10); //0x70
    LONG (*BuildMdlFromScatterGatherList)(struct
 _DMA_ADAPTER* arg1, struct
 _SCATTER_GATHER_LIST* arg2, struct
 _MDL* arg3, struct
 _MDL** arg4); //0x78
    LONG (*GetDmaAdapterInfo)(struct
 _DMA_ADAPTER* arg1, union
 _DMA_ADAPTER_INFO* arg2); //0x80
    LONG (*GetDmaTransferInfo)(struct
 _DMA_ADAPTER* arg1, struct
 _MDL* arg2, ULONGLONG arg3, ULONG arg4, UCHAR arg5, struct
 _DMA_TRANSFER_INFO* arg6); //0x88
    LONG (*InitializeDmaTransferContext)(struct
 _DMA_ADAPTER* arg1, VOID* arg2); //0x90
    VOID* (*AllocateCommonBufferEx)(struct
 _DMA_ADAPTER* arg1, union
 _LARGE_INTEGER* arg2, ULONG arg3, union
 _LARGE_INTEGER* arg4, UCHAR arg5, ULONG arg6); //0x98
    LONG (*AllocateAdapterChannelEx)(struct
 _DMA_ADAPTER* arg1, struct
 _DEVICE_OBJECT* arg2, VOID* arg3, ULONG arg4, ULONG arg5, enum
 _IO_ALLOCATION_ACTION (*arg6)(struct
 _DEVICE_OBJECT* arg1, struct
 _IRP* arg2, VOID* arg3, VOID* arg4), VOID* arg7, VOID** arg8); //0xa0
    LONG (*ConfigureAdapterChannel)(struct
 _DMA_ADAPTER* arg1, ULONG arg2, VOID* arg3); //0xa8
    UCHAR (*CancelAdapterChannel)(struct
 _DMA_ADAPTER* arg1, struct
 _DEVICE_OBJECT* arg2, VOID* arg3); //0xb0
    LONG (*MapTransferEx)(struct
 _DMA_ADAPTER* arg1, struct
 _MDL* arg2, VOID* arg3, ULONGLONG arg4, ULONG arg5, ULONG* arg6, UCHAR arg7, struct
 _SCATTER_GATHER_LIST* arg8, ULONG arg9, VOID (*arg10)(struct
 _DMA_ADAPTER* arg1, struct
 _DEVICE_OBJECT* arg2, VOID* arg3, enum
 DMA_COMPLETION_STATUS arg4), VOID* arg11); //0xb8
    LONG (*GetScatterGatherListEx)(struct
 _DMA_ADAPTER* arg1, struct
 _DEVICE_OBJECT* arg2, VOID* arg3, struct
 _MDL* arg4, ULONGLONG arg5, ULONG arg6, ULONG arg7, VOID (*arg8)(struct
 _DEVICE_OBJECT* arg1, struct
 _IRP* arg2, struct
 _SCATTER_GATHER_LIST* arg3, VOID* arg4), VOID* arg9, UCHAR arg10, VOID (*arg11)(struct
 _DMA_ADAPTER* arg1, struct
 _DEVICE_OBJECT* arg2, VOID* arg3, enum
 DMA_COMPLETION_STATUS arg4), VOID* arg12, struct
 _SCATTER_GATHER_LIST** arg13); //0xc0
    LONG (*BuildScatterGatherListEx)(struct
 _DMA_ADAPTER* arg1, struct
 _DEVICE_OBJECT* arg2, VOID* arg3, struct
 _MDL* arg4, ULONGLONG arg5, ULONG arg6, ULONG arg7, VOID (*arg8)(struct
 _DEVICE_OBJECT* arg1, struct
 _IRP* arg2, struct
 _SCATTER_GATHER_LIST* arg3, VOID* arg4), VOID* arg9, UCHAR arg10, VOID* arg11, ULONG arg12, VOID (*arg13)(struct
 _DMA_ADAPTER* arg1, struct
 _DEVICE_OBJECT* arg2, VOID* arg3, enum
 DMA_COMPLETION_STATUS arg4), VOID* arg14, VOID* arg15); //0xc8
    LONG (*FlushAdapterBuffersEx)(struct
 _DMA_ADAPTER* arg1, struct
 _MDL* arg2, VOID* arg3, ULONGLONG arg4, ULONG arg5, UCHAR arg6); //0xd0
    VOID (*FreeAdapterObject)(struct
 _DMA_ADAPTER* arg1, enum
 _IO_ALLOCATION_ACTION arg2); //0xd8
    LONG (*CancelMappedTransfer)(struct
 _DMA_ADAPTER* arg1, VOID* arg2);    //0xe0
    LONG (*AllocateDomainCommonBuffer)(struct
 _DMA_ADAPTER* arg1, VOID* arg2, union
 _LARGE_INTEGER* arg3, ULONG arg4, ULONG arg5, enum
 _MEMORY_CACHING_TYPE* arg6, ULONG arg7, union
 _LARGE_INTEGER* arg8, VOID** arg9); //0xe8
    LONG (*FlushDmaBuffer)(struct
 _DMA_ADAPTER* arg1, struct
 _MDL* arg2, UCHAR arg3); //0xf0
    LONG (*JoinDmaDomain)(struct
 _DMA_ADAPTER* arg1, VOID* arg2);           //0xf8
    LONG (*LeaveDmaDomain)(struct
 _DMA_ADAPTER* arg1);                      //0x100
    VOID* (*GetDmaDomain)(struct
 _DMA_ADAPTER* arg1);                       //0x108
    VOID* (*AllocateCommonBufferWithBounds)(struct
 _DMA_ADAPTER* arg1, union
 _LARGE_INTEGER* arg2, union
 _LARGE_INTEGER* arg3, ULONG arg4, ULONG arg5, enum
 _MEMORY_CACHING_TYPE* arg6, ULONG arg7, union
 _LARGE_INTEGER* arg8); //0x110
    LONG (*AllocateCommonBufferVector)(struct
 _DMA_ADAPTER* arg1, union
 _LARGE_INTEGER arg2, union
 _LARGE_INTEGER arg3, enum
 _MEMORY_CACHING_TYPE arg4, ULONG arg5, ULONG arg6, ULONG arg7, ULONGLONG arg8, struct
 _DMA_COMMON_BUFFER_VECTOR** arg9); //0x118
    VOID (*GetCommonBufferFromVectorByIndex)(struct
 _DMA_ADAPTER* arg1, struct
 _DMA_COMMON_BUFFER_VECTOR* arg2, ULONG arg3, VOID** arg4, union
 _LARGE_INTEGER* arg5); //0x120
    VOID (*FreeCommonBufferFromVector)(struct
 _DMA_ADAPTER* arg1, struct
 _DMA_COMMON_BUFFER_VECTOR* arg2, ULONG arg3); //0x128
    VOID (*FreeCommonBufferVector)(struct
 _DMA_ADAPTER* arg1, struct
 _DMA_COMMON_BUFFER_VECTOR* arg2); //0x130
    LONG (*CreateCommonBufferFromMdl)(struct
 _DMA_ADAPTER* arg1, struct
 _MDL* arg2, struct
 _DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION* arg3, ULONG arg4, union
 _LARGE_INTEGER* arg5); //0x138
};