//
// Copyright (C) 1999, 2000 by MultiBug Software
//
// Windows NT Data Structures.
// EPROCESS
//

static main()
{
    auto id;

    /* EPROCESS: Size: 0x1F8 (KPROCESS: Size: 0x6C) */

    id = AddStrucEx( -1, "EPROCESS", 0 );
    id = GetStrucIdByName( "EPROCESS" );

    /* DISPATCHER_HEADER */

    AddStrucMember( id, /*000 BYTE*/ "Type", 0x0, 0x000400, -1, 1 );
    AddStrucMember( id, /*001 BYTE*/ "Absolute", 0x1, 0x000400, -1, 1 );
    AddStrucMember( id, /*002 BYTE*/ "Size", 0x2, 0x000400, -1, 1 );
    AddStrucMember( id, /*003 BYTE*/ "Inserted", 0x3, 0x000400, -1, 1 );
    AddStrucMember( id, /*004 BYTE*/ "SignalState", 0x4, 0x20000400, -1, 4 );
    AddStrucMember( id, /*008 LIST_ENTRY*/ "WaitListHead", 0x8, 0x30000400, -1, 8 );

    /* KPROCESS */

    AddStrucMember( id, /*010 LIST_ENTRY*/ "ProfileListHead", 0x10, 0x30000400, -1, 8 );
    AddStrucMember( id, /*018 LARGE_INTEGER*/ "DirectoryTableBase", 0x18, 0x30000400, -1, 8 );
    AddStrucMember( id, /*020 LARGE_INTEGER*/ "LdtDescriptor", 0x20, 0x30000400, -1, 8 );
    AddStrucMember( id, /*028 LARGE_INTEGER*/ "Int21Descriptor", 0x28, 0x30000400, -1, 8 );
    AddStrucMember( id, /*030 WORD*/ "IopmOffset", 0x30, 0x10000400, -1, 2 );
    AddStrucMember( id, /*032 BYTE*/ "Iopl", 0x32, 0x000400, -1, 1 );
    AddStrucMember( id, /*033 BYTE*/ "VdmFlag", 0x33, 0x000400, -1, 1 );
    AddStrucMember( id, /*034 ULONG*/ "ActiveProcessors", 0x34, 0x20000400, -1, 4 );
    AddStrucMember( id, /*038 ULONG*/ "KernelTime", 0x38, 0x20000400, -1, 4 );
    AddStrucMember( id, /*03C ULONG*/ "UserTime", 0x3C, 0x20000400, -1, 4 );
    AddStrucMember( id, /*040 LIST_ENTRY*/ "ReadyListHead", 0x40, 0x30000400, -1, 8 );
    AddStrucMember( id, /*048 LIST_ENTRY*/ "SwapListEntry", 0x48, 0x30000400, -1, 8 );
    AddStrucMember( id, /*050 LIST_ENTRY*/ "ThreadListHead", 0x50, 0x30000400, -1, 8 );
    AddStrucMember( id, /*058 KSPIN_LOCK*/ "ProcessLock", 0x58, 0x20000400, -1, 4 );
    AddStrucMember( id, /*05C ULONG*/ "Affinity", 0x5C, 0x20000400, -1, 4 );
    AddStrucMember( id, /*060 WORD*/ "StackCount", 0x60, 0x10000400, -1, 2 );
    AddStrucMember( id, /*062 BYTE*/ "BasePriority", 0x62, 0x000400, -1, 1 );
    AddStrucMember( id, /*063 BYTE*/ "ThreadQuantum", 0x63, 0x000400, -1, 1 );
    AddStrucMember( id, /*064 BYTE*/ "AutoAlignment", 0x64, 0x000400, -1, 1 );
    AddStrucMember( id, /*065 BYTE*/ "State", 0x65, 0x000400, -1, 1 );
    AddStrucMember( id, /*066 BYTE*/ "ThreadSeed", 0x66, 0x000400, -1, 1 );
    AddStrucMember( id, /*067 BYTE*/ "DisableBoost", 0x67, 0x000400, -1, 1 );

    /* EPROCESS */

    AddStrucMember( id, /*068 ULONG*/ "ExitStatus", 0x68, 0x20000400, -1, 4 );
    AddStrucMember( id, /*06C BYTE[0x10]*/ "LockEvent", 0x6C, 0x000400, -1, 0x10 );
    AddStrucMember( id, /*07C ULONG*/ "LockCount", 0x7C, 0x20000400, -1, 4 );
    AddStrucMember( id, /*080 LARGE_INTEGER*/ "CreateTime", 0x80, 0x30000400, -1, 8 );
    AddStrucMember( id, /*088 LARGE_INTEGER*/ "ExitTime", 0x88, 0x30000400, -1, 8 );
    AddStrucMember( id, /*090 HANDLE*/ "LockOwner", 0x90, 0x20000400, -1, 4 );
    AddStrucMember( id, /*094 ULONG*/ "UniqueProcessId", 0x94, 0x20000400, -1, 4 );
    AddStrucMember( id, /*098 LARGE_INTEGER*/ "ActiveProcessLinks", 0x98, 0x30000400, -1, 8 );
    AddStrucMember( id, /*0A0 LARGE_INTEGER*/ "QuotaPeakPoolUsage", 0xA0, 0x30000400, -1, 8 );
    AddStrucMember( id, /*0A8 LARGE_INTEGER*/ "QuotaPoolUsage", 0xA8, 0x30000400, -1, 8 );
    AddStrucMember( id, /*0B0 ULONG*/ "PagefileUsage", 0xB0, 0x20000400, -1, 4 );
    AddStrucMember( id, /*0B4 ULONG*/ "CommitCharge", 0xB4, 0x20000400, -1, 4 );
    AddStrucMember( id, /*0B8 ULONG*/ "PeakPagefileUsage", 0xB8, 0x20000400, -1, 4 );
    AddStrucMember( id, /*0BC ULONG*/ "PeakVirtualSize", 0xBC, 0x20000400, -1, 4 );
    AddStrucMember( id, /*0C0 LARGE_INTEGER*/ "VirtualSize", 0xC0, 0x30000400, -1, 8 );
    AddStrucMember( id, /*0C8 BYTE[0x30]*/ "Vm", 0xC8, 0x000400, -1, 0x30 );
    AddStrucMember( id, /*0F8 ULONG*/ "LastProtoPteFault", 0xF8, 0x20000400, -1, 4 );
    AddStrucMember( id, /*0FC HANDLE*/ "DebugPort", 0xFC 0x20000400, -1, 4 );
    AddStrucMember( id, /*100 HANDLE*/ "ExceptionPort", 0x100 0x20000400, -1, 4 );
    AddStrucMember( id, /*104 HANDLE*/ "ObjectTable", 0x104 0x20000400, -1, 4 );
    AddStrucMember( id, /*108 HANDLE*/ "Token", 0x108 0x20000400, -1, 4 );
    AddStrucMember( id, /*10C BYTE[0x20]*/ "WorkingSetLock", 0x10C, 0x000400, -1, 0x20 );
    AddStrucMember( id, /*12C ULONG*/ "WorkingSetPage", 0x12C, 0x20000400, -1, 4 );
    AddStrucMember( id, /*130 BYTE*/ "ProcessOutswapEnabled", 0x130, 0x000400, -1, 1 );
    AddStrucMember( id, /*131 BYTE*/ "ProcessOutswapped", 0x131, 0x000400, -1, 1 );
    AddStrucMember( id, /*132 BYTE*/ "AddressSpaceInitialized", 0x132, 0x000400, -1, 1 );
    AddStrucMember( id, /*133 BYTE*/ "AddressSpaceDeleted", 0x133, 0x000400, -1, 1 );
    AddStrucMember( id, /*134 BYTE[0x20]*/ "AddressCreationLock", 0x134, 0x000400, -1, 0x20 );
    AddStrucMember( id, /*154 KSPIN_LOCK*/ "HyperSpaceLock", 0x154, 0x20000400, -1, 4 );
    AddStrucMember( id, /*158 ULONG*/ "ForkInProgress", 0x158, 0x20000400, -1, 4 );
    AddStrucMember( id, /*15C WORD*/ "VmOperation", 0x15C, 0x10000400, -1, 2 );
    AddStrucMember( id, /*15E BYTE*/ "ForkWasSuccessful", 0x15E, 0x000400, -1, 1 );
    AddStrucMember( id, /*15F BYTE*/ "MmAgressiveWsTrimMask", 0x15F, 0x000400, -1, 1 );
    AddStrucMember( id, /*160 HANDLE*/ "VmOperationEvent", 0x160, 0x20000400, -1, 4 );
    AddStrucMember( id, /*164 ULONG*/ "PageDirectoryPte", 0x164, 0x20000400, -1, 4 );
    AddStrucMember( id, /*168 ULONG*/ "LastFaultCount", 0x168, 0x20000400, -1, 4 );
    AddStrucMember( id, /*16C ULONG*/ "ModifiedPageCount", 0x16C, 0x20000400, -1, 4 );
    AddStrucMember( id, /*170 ULONG*/ "VadRoot", 0x170, 0x20000400, -1, 4 );
    AddStrucMember( id, /*174 ULONG*/ "VadHint", 0x174, 0x20000400, -1, 4 );
    AddStrucMember( id, /*178 ULONG*/ "CloneRoot", 0x178, 0x20000400, -1, 4 );
    AddStrucMember( id, /*17C ULONG*/ "NumberOfPrivatePages", 0x17C, 0x20000400, -1, 4 );
    AddStrucMember( id, /*180 ULONG*/ "NumberOfLockedPages", 0x180, 0x20000400, -1, 4 );
    AddStrucMember( id, /*184 WORD*/ "NextPageColor", 0x184, 0x10000400, -1, 2 );
    AddStrucMember( id, /*186 BYTE*/ "ExitProcessCalled", 0x186, 0x000400, -1, 1 );
    AddStrucMember( id, /*187 BYTE*/ "CreateProcessReported", 0x187, 0x000400, -1, 1 );
    AddStrucMember( id, /*188 HANDLE*/ "SectionHandle", 0x188, 0x20000400, -1, 4 );
    AddStrucMember( id, /*18C PEB* */ "Peb", 0x18C, 0x20500400, -1, 4 );
    AddStrucMember( id, /*190 VOID* */ "SectionBaseAddress", 0x190, 0x20500400, -1, 4 );
    AddStrucMember( id, /*194 ULONG*/ "QuotaBlock", 0x194, 0x20000400, -1, 4 );
    AddStrucMember( id, /*198 ULONG*/ "LastThreadExitStatus", 0x198, 0x20000400, -1, 4 );
    AddStrucMember( id, /*19C ULONG*/ "WorkingSetWatch", 0x19C, 0x20000400, -1, 4 );
    AddStrucMember( id, /*1A0 ULONG*/ "Win32WindowStation", 0x1A0, 0x20000400, -1, 4 );
    AddStrucMember( id, /*1A4 ULONG*/ "InheritedFromUniqueProcessId", 0x1A4, 0x20000400, -1, 4 );
    AddStrucMember( id, /*1A8 ULONG*/ "GrantedAccess", 0x1A8, 0x20000400, -1, 4 );
    AddStrucMember( id, /*1AC ULONG*/ "DefaultHardErrorProcessing", 0x1AC, 0x20000400, -1, 4 );
    AddStrucMember( id, /*1B0 ULONG*/ "LdtInformation", 0x1B0, 0x20000400, -1, 4 );
    AddStrucMember( id, /*1B4 ULONG*/ "VadFreeHint", 0x1B4, 0x20000400, -1, 4 );
    AddStrucMember( id, /*1B8 ULONG*/ "VdmObjects", 0x1B8, 0x20000400, -1, 4 );
    AddStrucMember( id, /*1BC BYTE[0x20]*/ "ProcessMutant", 0x1BC, 0x000400, -1, 0x20 );
    AddStrucMember( id, /*1DC CHAR[0x10]*/ "ImageFileName", 0x1DC, 0x000400, -1, 0x10 );
    AddStrucMember( id, /*1EC ULONG*/ "VmTrimFaultValue", 0x1EC, 0x20000400, -1, 4 );
    AddStrucMember( id, /*1F0 BYTE*/ "SetTimerResolution", 0x1F0, 0x000400, -1, 1 );
    AddStrucMember( id, /*1F1 BYTE*/ "PriorityClass", 0x1F1, 0x000400, -1, 1 );
    AddStrucMember( id, /*1F2 WORD*/ "SubSystemVersion", 0x1F2, 0x10000400, -1, 2 );
    AddStrucMember( id, /*1F4 HANDLE*/ "Win32Process", 0x1F4, 0x20000400, -1, 4 );
}