struct _DMA_OPERATIONS { unsigned long Size;/* 0x0 4 */ /* 4 bytes padding */ void (*PutDmaAdapter)(struct _DMA_ADAPTER*);/* 0x8 8 */ void* (*AllocateCommonBuffer)(struct _DMA_ADAPTER*, unsigned long, union _LARGE_INTEGER*, unsigned char);/* 0x10 8 */ void (*FreeCommonBuffer)(struct _DMA_ADAPTER*, unsigned long, union _LARGE_INTEGER, void*, unsigned char);/* 0x18 8 */ long (*AllocateAdapterChannel)(struct _DMA_ADAPTER*, struct _DEVICE_OBJECT*, unsigned long, enum _IO_ALLOCATION_ACTION (*)(struct _DEVICE_OBJECT*, struct _IRP*, void*, void*), void*);/* 0x20 8 */ unsigned char (*FlushAdapterBuffers)(struct _DMA_ADAPTER*, struct _MDL*, void*, void*, unsigned long, unsigned char);/* 0x28 8 */ void (*FreeAdapterChannel)(struct _DMA_ADAPTER*);/* 0x30 8 */ void (*FreeMapRegisters)(struct _DMA_ADAPTER*, void*, unsigned long);/* 0x38 8 */ /* ── cacheline 1 boundary (64 bytes) ── */ union _LARGE_INTEGER (*MapTransfer)(struct _DMA_ADAPTER*, struct _MDL*, void*, void*, unsigned long*, unsigned char);/* 0x40 8 */ unsigned long (*GetDmaAlignment)(struct _DMA_ADAPTER*);/* 0x48 8 */ unsigned long (*ReadDmaCounter)(struct _DMA_ADAPTER*);/* 0x50 8 */ long (*GetScatterGatherList)(struct _DMA_ADAPTER*, struct _DEVICE_OBJECT*, struct _MDL*, void*, unsigned long, void (*)(struct _DEVICE_OBJECT*, struct _IRP*, struct _SCATTER_GATHER_LIST*, void*), void*, unsigned char);/* 0x58 8 */ void (*PutScatterGatherList)(struct _DMA_ADAPTER*, struct _SCATTER_GATHER_LIST*, unsigned char);/* 0x60 8 */ long (*CalculateScatterGatherList)(struct _DMA_ADAPTER*, struct _MDL*, void*, unsigned long, unsigned long*, unsigned long*);/* 0x68 8 */ long (*BuildScatterGatherList)(struct _DMA_ADAPTER*, struct _DEVICE_OBJECT*, struct _MDL*, void*, unsigned long, void (*)(struct _DEVICE_OBJECT*, struct _IRP*, struct _SCATTER_GATHER_LIST*, void*), void*, unsigned char, void*, unsigned long);/* 0x70 8 */ long (*BuildMdlFromScatterGatherList)(struct _DMA_ADAPTER*, struct _SCATTER_GATHER_LIST*, struct _MDL*, struct _MDL**);/* 0x78 8 */ /* ── cacheline 2 boundary (128 bytes) ── */ long (*GetDmaAdapterInfo)(struct _DMA_ADAPTER*, union _DMA_ADAPTER_INFO*);/* 0x80 8 */ long (*GetDmaTransferInfo)(struct _DMA_ADAPTER*, struct _MDL*, unsigned __int64, unsigned long, unsigned char, struct _DMA_TRANSFER_INFO*);/* 0x88 8 */ long (*InitializeDmaTransferContext)(struct _DMA_ADAPTER*, void*);/* 0x90 8 */ void* (*AllocateCommonBufferEx)(struct _DMA_ADAPTER*, union _LARGE_INTEGER*, unsigned long, union _LARGE_INTEGER*, unsigned char, unsigned long);/* 0x98 8 */ long (*AllocateAdapterChannelEx)(struct _DMA_ADAPTER*, struct _DEVICE_OBJECT*, void*, unsigned long, unsigned long, enum _IO_ALLOCATION_ACTION (*)(struct _DEVICE_OBJECT*, struct _IRP*, void*, void*), void*, void**);/* 0xa0 8 */ long (*ConfigureAdapterChannel)(struct _DMA_ADAPTER*, unsigned long, void*);/* 0xa8 8 */ unsigned char (*CancelAdapterChannel)(struct _DMA_ADAPTER*, struct _DEVICE_OBJECT*, void*);/* 0xb0 8 */ long (*MapTransferEx)(struct _DMA_ADAPTER*, struct _MDL*, void*, unsigned __int64, unsigned long, unsigned long*, unsigned char, struct _SCATTER_GATHER_LIST*, unsigned long, void (*)(struct _DMA_ADAPTER*, struct _DEVICE_OBJECT*, void*, enum DMA_COMPLETION_STATUS), void*);/* 0xb8 8 */ /* ── cacheline 3 boundary (192 bytes) ── */ long (*GetScatterGatherListEx)(struct _DMA_ADAPTER*, struct _DEVICE_OBJECT*, void*, struct _MDL*, unsigned __int64, unsigned long, unsigned long, void (*)(struct _DEVICE_OBJECT*, struct _IRP*, struct _SCATTER_GATHER_LIST*, void*), void*, unsigned char, void (*)(struct _DMA_ADAPTER*, struct _DEVICE_OBJECT*, void*, enum DMA_COMPLETION_STATUS), void*, struct _SCATTER_GATHER_LIST**);/* 0xc0 8 */ long (*BuildScatterGatherListEx)(struct _DMA_ADAPTER*, struct _DEVICE_OBJECT*, void*, struct _MDL*, unsigned __int64, unsigned long, unsigned long, void (*)(struct _DEVICE_OBJECT*, struct _IRP*, struct _SCATTER_GATHER_LIST*, void*), void*, unsigned char, void*, unsigned long, void (*)(struct _DMA_ADAPTER*, struct _DEVICE_OBJECT*, void*, enum DMA_COMPLETION_STATUS), void*, void*);/* 0xc8 8 */ long (*FlushAdapterBuffersEx)(struct _DMA_ADAPTER*, struct _MDL*, void*, unsigned __int64, unsigned long, unsigned char);/* 0xd0 8 */ void (*FreeAdapterObject)(struct _DMA_ADAPTER*, enum _IO_ALLOCATION_ACTION);/* 0xd8 8 */ long (*CancelMappedTransfer)(struct _DMA_ADAPTER*, void*);/* 0xe0 8 */ long (*AllocateDomainCommonBuffer)(struct _DMA_ADAPTER*, void*, union _LARGE_INTEGER*, unsigned long, unsigned long, enum _MEMORY_CACHING_TYPE*, unsigned long, union _LARGE_INTEGER*, void**);/* 0xe8 8 */ long (*FlushDmaBuffer)(struct _DMA_ADAPTER*, struct _MDL*, unsigned char);/* 0xf0 8 */ long (*JoinDmaDomain)(struct _DMA_ADAPTER*, void*);/* 0xf8 8 */ /* ── cacheline 4 boundary (256 bytes) ── */ long (*LeaveDmaDomain)(struct _DMA_ADAPTER*);/* 0x100 8 */ void* (*GetDmaDomain)(struct _DMA_ADAPTER*);/* 0x108 8 */ void* (*AllocateCommonBufferWithBounds)(struct _DMA_ADAPTER*, union _LARGE_INTEGER*, union _LARGE_INTEGER*, unsigned long, unsigned long, enum _MEMORY_CACHING_TYPE*, unsigned long, union _LARGE_INTEGER*);/* 0x110 8 */ long (*AllocateCommonBufferVector)(struct _DMA_ADAPTER*, union _LARGE_INTEGER, union _LARGE_INTEGER, enum _MEMORY_CACHING_TYPE, unsigned long, unsigned long, unsigned long, unsigned __int64, struct _DMA_COMMON_BUFFER_VECTOR**);/* 0x118 8 */ void (*GetCommonBufferFromVectorByIndex)(struct _DMA_ADAPTER*, struct _DMA_COMMON_BUFFER_VECTOR*, unsigned long, void**, union _LARGE_INTEGER*);/* 0x120 8 */ void (*FreeCommonBufferFromVector)(struct _DMA_ADAPTER*, struct _DMA_COMMON_BUFFER_VECTOR*, unsigned long);/* 0x128 8 */ void (*FreeCommonBufferVector)(struct _DMA_ADAPTER*, struct _DMA_COMMON_BUFFER_VECTOR*);/* 0x130 8 */ long (*CreateCommonBufferFromMdl)(struct _DMA_ADAPTER*, struct _MDL*, struct _DMA_COMMON_BUFFER_EXTENDED_CONFIGURATION*, unsigned long, union _LARGE_INTEGER*);/* 0x138 8 */ /* ── cacheline 5 boundary (320 bytes) ── */ long (*RegisterFaultCallback)(struct _DMA_ADAPTER*, struct _DEVICE_FAULT_CONFIGURATION*);/* 0x140 8 */ long (*UnregisterFaultCallback)(struct _DMA_ADAPTER*, struct _DEVICE_FAULT_CONFIGURATION*);/* 0x148 8 */};size 336 (0x150)42 members1 hole (4 bytes)padding 06 cachelines
Used in (1)