#include <ntddk.h>
typedef struct _MMSECTION_FLAGS {
/*0x000*/ UINT32 BeingDeleted : 1;
/*0x000*/ UINT32 BeingCreated : 1;
/*0x000*/ UINT32 BeingPurged : 1;
/*0x000*/ UINT32 NoModifiedWriting : 1;
/*0x000*/ UINT32 FailAllIo : 1;
/*0x000*/ UINT32 Image : 1;
/*0x000*/ UINT32 Based : 1;
/*0x000*/ UINT32 File : 1;
/*0x000*/ UINT32 Networked : 1;
/*0x000*/ UINT32 NoCache : 1;
/*0x000*/ UINT32 PhysicalMemory : 1;
/*0x000*/ UINT32 CopyOnWrite : 1;
/*0x000*/ UINT32 Reserve : 1;
/*0x000*/ UINT32 Commit : 1;
/*0x000*/ UINT32 FloppyMedia : 1;
/*0x000*/ UINT32 WasPurged : 1;
/*0x000*/ UINT32 UserReference : 1;
/*0x000*/ UINT32 GlobalMemory : 1;
/*0x000*/ UINT32 DeleteOnClose : 1;
/*0x000*/ UINT32 FilePointerNull : 1;
/*0x000*/ UINT32 DebugSymbolsLoaded : 1;
/*0x000*/ UINT32 SetMappedFileIoComplete : 1;
/*0x000*/ UINT32 CollidedFlush : 1;
/*0x000*/ UINT32 NoChange : 1;
/*0x000*/ UINT32 HadUserReference : 1;
/*0x000*/ UINT32 ImageMappedInSystemSpace : 1;
/*0x000*/ UINT32 UserWritable : 1;
/*0x000*/ UINT32 Accessed : 1;
/*0x000*/ UINT32 GlobalOnlyPerSession : 1;
/*0x000*/ UINT32 Rom : 1;
/*0x000*/ UINT32 filler : 2;
}MMSECTION_FLAGS, *PMMSECTION_FLAGS;
typedef struct _MMVAD_FLAGS {
/*0x000*/ ULONG32 CommitCharge : 19;
/*0x000*/ ULONG32 PhysicalMapping : 1;
/*0x000*/ ULONG32 ImageMap : 1;
/*0x000*/ ULONG32 UserPhysicalPages : 1;
/*0x000*/ ULONG32 NoChange : 1;
/*0x000*/ ULONG32 WriteWatch : 1;
/*0x000*/ ULONG32 Protection : 5;
/*0x000*/ ULONG32 LargePages : 1;
/*0x000*/ ULONG32 MemCommit : 1;
/*0x000*/ ULONG32 PrivateMemory : 1;
}MMVAD_FLAGS, *PMMVAD_FLAGS;
typedef struct _MMVAD_FLAGS2 {
/*0x000*/ UINT32 FileOffset : 24;
/*0x000*/ UINT32 SecNoChange : 1;
/*0x000*/ UINT32 OneSecured : 1;
/*0x000*/ UINT32 MultipleSecured : 1;
/*0x000*/ UINT32 ReadOnly : 1;
/*0x000*/ UINT32 LongVad : 1;
/*0x000*/ UINT32 ExtendableFile : 1;
/*0x000*/ UINT32 Inherit : 1;
/*0x000*/ UINT32 CopyOnWrite : 1;
}MMVAD_FLAGS2, *PMMVAD_FLAGS2;
typedef struct CONTROL_AREA {
/*0x000*/ struct _SEGMENT* Segment;
/*0x004*/ struct _LIST_ENTRY DereferenceList;
/*0x00C*/ ULONG32 NumberOfSectionReferences;
/*0x010*/ ULONG32 NumberOfPfnReferences;
/*0x014*/ ULONG32 NumberOfMappedViews;
/*0x018*/ UINT16 NumberOfSubsections;
/*0x01A*/ UINT16 FlushInProgressCount;
/*0x01C*/ ULONG32 NumberOfUserReferences;
union
{
/*0x020*/ ULONG32 LongFlags;
/*0x020*/ struct _MMSECTION_FLAGS Flags;
}u;
/*0x024*/ struct _FILE_OBJECT* FilePointer;
/*0x028*/ struct _EVENT_COUNTER* WaitingForDeletion;
/*0x02C*/ UINT16 ModifiedWriteCount;
/*0x02E*/ UINT16 NumberOfSystemCacheViews;
}CONTROL_AREA, *PCONTROL_AREA;
typedef struct MMVAD {
/*0x000*/ ULONG32 StartingVpn;
/*0x004*/ ULONG32 EndingVpn;
/*0x008*/ struct _MMVAD* Parent;
/*0x00C*/ struct _MMVAD* LeftChild;
/*0x010*/ struct _MMVAD* RightChild;
union
{
/*0x014*/ ULONG32 LongFlags;
/*0x014*/ struct _MMVAD_FLAGS VadFlags;
}u;
/*0x018*/ struct _CONTROL_AREA* ControlArea;
/*0x01C*/ struct _MMPTE* FirstPrototypePte;
/*0x020*/ struct _MMPTE* LastContiguousPte;
union
{
/*0x024*/ ULONG32 LongFlags2;
/*0x024*/ struct _MMVAD_FLAGS2 VadFlags2;
}u2;
}MMVAD, *PMMVAD;