struct _ADAPTER_OBJECT { struct _HALP_DMA_ADAPTER_OBJECT AdapterObject;/* 0x0 160 */ /* ── cacheline 2 boundary (128 bytes) ── */ struct _HALP_DMA_MASTER_ADAPTER_OBJECT* MasterAdapter;/* 0xa0 8 */ struct _LIST_ENTRY WaitQueueEntry;/* 0xa8 16 */ union { struct _KDEVICE_QUEUE ChannelWaitQueue;/* 0xb8 40 */ struct { unsigned __int64 ResourceWaitLock;/* 0xb8 8 */ struct _LIST_ENTRY ResourceWaitQueue;/* 0xc0 16 */ struct _LIST_ENTRY ChannelResourceWaitQueue;/* 0xd0 16 */ };/* 0xb8 40 */ };/* 0xb8 40 */ /* ── cacheline 3 boundary (192 bytes) ── */ unsigned char ResourceQueueBusy;/* 0xe0 1 */ /* 7 bytes padding */ unsigned long MapRegistersPerChannel;/* 0xe8 4 */ /* 4 bytes padding */ void* MapRegisterBase;/* 0xf0 8 */ unsigned long NumberOfMapRegisters;/* 0xf8 4 */ unsigned long MaxTransferLength;/* 0xfc 4 */ /* ── cacheline 4 boundary (256 bytes) ── */ void* CrashDumpRegisterBase[2];/* 0x100 16 */ unsigned long NumberOfCrashDumpRegisters[2];/* 0x110 8 */ unsigned long CrashDumpRegisterRefCount[2];/* 0x118 8 */ struct _LIST_ENTRY AdapterCrashDumpList;/* 0x120 16 */ struct _MDL* MapRegisterMdl;/* 0x130 8 */ unsigned __int64 MapRegisterMdlLock;/* 0x138 8 */ /* ── cacheline 5 boundary (320 bytes) ── */ struct _EX_PUSH_LOCK ExpiredLock;/* 0x140 8 */ void* AllocationHandle;/* 0x148 8 */ void* VirtualAddress;/* 0x150 8 */ unsigned char IsAllocationMdlBased;/* 0x158 1 */ unsigned char NoLocalPool;/* 0x159 1 */ unsigned char ExpiredFlag;/* 0x15a 1 */ /* 5 bytes padding */ struct _WAIT_CONTEXT_BLOCK* CurrentWcb;/* 0x160 8 */ struct _DMA_TRANSFER_CONTEXT* CurrentTransferContext;/* 0x168 8 */ struct _HALP_DMA_CONTROLLER* DmaController;/* 0x170 8 */ unsigned long Controller;/* 0x178 4 */ unsigned long ChannelNumber;/* 0x17c 4 */ /* ── cacheline 6 boundary (384 bytes) ── */ unsigned long RequestLine;/* 0x180 4 */ unsigned long RequestedChannelCount;/* 0x184 4 */ unsigned long AllocatedChannelCount;/* 0x188 4 */ unsigned long AllocatedChannels[8];/* 0x18c 32 */ /* 4 bytes padding */ void* ChannelAdapter;/* 0x1b0 8 */ unsigned char NeedsMapRegisters;/* 0x1b8 1 */ unsigned char MasterDevice;/* 0x1b9 1 */ unsigned char ScatterGather;/* 0x1ba 1 */ unsigned char AutoInitialize;/* 0x1bb 1 */ unsigned char IgnoreCount;/* 0x1bc 1 */ unsigned char CacheCoherent;/* 0x1bd 1 */ /* 2 bytes padding */ /* ── cacheline 7 boundary (448 bytes) ── */ union { struct { unsigned char Dma32BitAddresses;/* 0x1c0 1 */ unsigned char Dma64BitAddresses;/* 0x1c1 1 */ };/* 0x1c0 2 */ unsigned long DmaAddressWidth;/* 0x1c0 4 */ };/* 0x1c0 4 */ enum _DMA_WIDTH DmaPortWidth;/* 0x1c4 4 */ union _LARGE_INTEGER DeviceAddress;/* 0x1c8 8 */ struct _LIST_ENTRY AdapterList;/* 0x1d0 16 */ struct _WORK_QUEUE_ITEM WorkItem;/* 0x1e0 32 */ /* ── cacheline 8 boundary (512 bytes) ── */ struct _HALP_DMA_DOMAIN_OBJECT* DomainPointer;/* 0x200 8 */ enum _HALP_DMA_TRANSLATION_TYPE TranslationType;/* 0x208 4 */ unsigned char AdapterInUse;/* 0x20c 1 */ /* 3 bytes padding */ struct _DEVICE_OBJECT* DeviceObject;/* 0x210 8 */ struct _EXT_IOMMU_DEVICE_ID* DeviceId;/* 0x218 8 */ struct _IOMMU_DMA_DEVICE* IommuDevice;/* 0x220 8 */ struct _MDL* ScatterGatherMdl;/* 0x228 8 */ struct _IOMMU_DMA_LOGICAL_ADDRESS_TOKEN* LowMemoryLogicalAddressToken;/* 0x230 8 */ unsigned __int64 LowMemoryLogicalAddressQueueLock;/* 0x238 8 */ /* ── cacheline 9 boundary (576 bytes) ── */ struct _LIST_ENTRY LowMemoryLogicalAddressQueue;/* 0x240 16 */ unsigned char LowMemoryLogicalAddressQueueInUse;/* 0x250 1 */ /* 7 bytes padding */ struct _HALP_EMERGENCY_LA_QUEUE_ENTRY LowMemoryLogicalAddressQueueEntry;/* 0x258 24 */ enum _HALP_DMA_ADAPTER_ALLOCATION_STATE AllocationState;/* 0x270 4 */ unsigned long ScatterGatherBufferLength;/* 0x274 4 */ struct _SCATTER_GATHER_LIST ScatterGatherBuffer;/* 0x278 16 */};size 648 (0x288)62 members7 holes (32 bytes)padding 011 cachelines
Used in (3)