Introduce working set list types and extend EPROCESS structure
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in 39s
Builds / ExectOS (amd64, debug) (push) Successful in 40s
Builds / ExectOS (i686, release) (push) Successful in 1m8s
Builds / ExectOS (i686, debug) (push) Successful in 1m10s

This commit is contained in:
2026-07-14 19:05:38 +02:00
parent e1c422c992
commit 34620b182a
9 changed files with 328 additions and 0 deletions

View File

@@ -12,6 +12,8 @@
#include <xttypes.h>
#include <xtstruct.h>
#include <extypes.h>
#include <mmtypes.h>
#include <setypes.h>
/* Quota bypass marker */
@@ -74,11 +76,62 @@ typedef struct _EPROCESS
LARGE_INTEGER ExitTime;
EX_RUNDOWN_REFERENCE RundownProtect;
HANDLE UniqueProcessId;
LIST_ENTRY ActiveProcessLinks;
SIZE_T QuotaUsage[PsQuotaTypes];
SIZE_T QuotaPeak[PsQuotaTypes];
PVOID DebugPort;
PVOID ExceptionPort;
PHANDLE_TABLE ObjectTable;
PVOID Job;
PVOID SectionObject;
PVOID SectionBaseAddress;
PEPROCESS_QUOTA_BLOCK QuotaBlock;
HANDLE InheritedFromUniqueProcessId;
CHAR ImageFileName[16];
LIST_ENTRY ThreadListHead;
ACCESS_MASK GrantedAccess;
ULONG DefaultHardErrorProcessing;
PPEB ProcessEnvironmentBlock;
SECURITY_AUDIT_PROCESS_CREATION_INFO AuditProcessCreationInfo;
MMSUPPORT Vm;
union
{
struct
{
ULONG CreateReported:1;
ULONG NoDebugInherit:1;
ULONG ProcessExiting:1;
ULONG ProcessDelete:1;
ULONG Reserved1:1;
ULONG VmDeleted:1;
ULONG OutswapEnabled:1;
ULONG Outswapped:1;
ULONG ForkFailed:1;
ULONG Reserved2:1;
ULONG AddressSpaceInitialized:2;
ULONG SetTimerResolution:1;
ULONG BreakOnTermination:1;
ULONG DeprioritizeViews:1;
ULONG WriteWatch:1;
ULONG ProcessInSession:1;
ULONG OverrideAddressSpace:1;
ULONG HasAddressSpace:1;
ULONG LaunchPrefetched:1;
ULONG InjectInpageErrors:1;
ULONG VmTopDown:1;
ULONG ImageNotifyDone:1;
ULONG PdeUpdateNeeded:1;
ULONG Reserved3:1;
ULONG SmapAllowed:1;
ULONG ProcessInserted:1;
ULONG DefaultIoPriority:3;
ULONG Reserved4:1;
ULONG Reserved5:1;
};
ULONG Flags;
};
XTSTATUS ExitStatus;
UCHAR PriorityClass;
} EPROCESS, *PEPROCESS;
/* Kernel's representation of a process quota entry*/
@@ -106,5 +159,90 @@ typedef struct _ETHREAD
ACCESS_MASK GrantedAccess;
} ETHREAD, *PETHREAD;
/* Kernel's representation of a process environment block */
typedef struct _PEB
{
BOOLEAN InheritedAddressSpace;
BOOLEAN ReadImageFileExecOptions;
BOOLEAN BeingDebugged;
union
{
BOOLEAN BitField;
struct
{
BOOLEAN ImageUsesLargePages:1;
BOOLEAN IsProtectedProcess:1;
BOOLEAN IsLegacyProcess:1;
BOOLEAN IsImageDynamicallyRelocated:1;
BOOLEAN SkipPatchingUser32Forwarders:1;
BOOLEAN SpareBits:3;
};
};
HANDLE Mutant;
PVOID ImageBaseAddress;
PLDR_PEB_DATA Ldr;
PVOID SubSystemData;
PVOID ProcessHeap;
PVOID AltThunkSListPtr;
PVOID SparePtr2;
ULONG EnvironmentUpdateCount;
PVOID KernelCallbackTable;
ULONG SystemReserved[1];
ULONG SpareUlong;
PPEB_FREE_BLOCK FreeList;
ULONG TlsExpansionCounter;
PVOID TlsBitmap;
ULONG TlsBitmapBits[2];
PVOID ReadOnlySharedMemoryBase;
PVOID HotpatchInformation;
PVOID* ReadOnlyStaticServerData;
PVOID AnsiCodePageData;
PVOID OemCodePageData;
PVOID UnicodeCaseTableData;
ULONG NumberOfProcessors;
ULONG NtGlobalFlag;
LARGE_INTEGER CriticalSectionTimeout;
ULONG_PTR HeapSegmentReserve;
ULONG_PTR HeapSegmentCommit;
ULONG_PTR HeapDeCommitTotalFreeThreshold;
ULONG_PTR HeapDeCommitFreeBlockThreshold;
ULONG NumberOfHeaps;
ULONG MaximumNumberOfHeaps;
PVOID* ProcessHeaps;
PVOID GdiSharedHandleTable;
PVOID ProcessStarterHelper;
ULONG GdiDCAttributeList;
ULONG OSMajorVersion;
ULONG OSMinorVersion;
USHORT OSBuildNumber;
USHORT OSCSDVersion;
ULONG OSPlatformId;
ULONG ImageSubsystem;
ULONG ImageSubsystemMajorVersion;
ULONG ImageSubsystemMinorVersion;
ULONG_PTR ImageProcessAffinityMask;
PVOID TlsExpansionBitmap;
ULONG TlsExpansionBitmapBits[32];
ULONG SessionId;
ULARGE_INTEGER AppCompatFlags;
ULARGE_INTEGER AppCompatFlagsUser;
PVOID pShimData;
PVOID AppCompatInfo;
UNICODE_STRING CSDVersion;
ULONG_PTR MinimumStackCommit;
PVOID* FlsCallback;
LIST_ENTRY FlsListHead;
PVOID FlsBitmap;
ULONG FlsBitmapBits[4];
ULONG FlsHighIndex;
} PEB, *PPEB;
/* Process Environment Block Free Block structure definition */
typedef struct _PEB_FREE_BLOCK
{
PPEB_FREE_BLOCK Next;
ULONG Size;
} PEB_FREE_BLOCK, *PPEB_FREE_BLOCK;
#endif /* __XTOS_ASSEMBLER__ */
#endif /* __XTDK_PSTYPES_H */