Define Thread Environment Block and related types
All checks were successful
Builds / ExectOS (i686, debug) (push) Successful in 33s
Builds / ExectOS (amd64, debug) (push) Successful in 35s
Builds / ExectOS (amd64, release) (push) Successful in 43s
Builds / ExectOS (i686, release) (push) Successful in 42s

This commit is contained in:
2026-07-14 21:11:43 +02:00
parent 34620b182a
commit 2a140661fd
3 changed files with 98 additions and 11 deletions

View File

@@ -12,6 +12,7 @@
#include <xttypes.h> #include <xttypes.h>
#include <xtstruct.h> #include <xtstruct.h>
#include <extypes.h> #include <extypes.h>
#include <iotypes.h>
#include <mmtypes.h> #include <mmtypes.h>
#include <setypes.h> #include <setypes.h>
@@ -195,12 +196,12 @@ typedef struct _PEB
ULONG TlsBitmapBits[2]; ULONG TlsBitmapBits[2];
PVOID ReadOnlySharedMemoryBase; PVOID ReadOnlySharedMemoryBase;
PVOID HotpatchInformation; PVOID HotpatchInformation;
PVOID* ReadOnlyStaticServerData; PVOID *ReadOnlyStaticServerData;
PVOID AnsiCodePageData; PVOID AnsiCodePageData;
PVOID OemCodePageData; PVOID OemCodePageData;
PVOID UnicodeCaseTableData; PVOID UnicodeCaseTableData;
ULONG NumberOfProcessors; ULONG NumberOfProcessors;
ULONG NtGlobalFlag; ULONG GlobalFlag;
LARGE_INTEGER CriticalSectionTimeout; LARGE_INTEGER CriticalSectionTimeout;
ULONG_PTR HeapSegmentReserve; ULONG_PTR HeapSegmentReserve;
ULONG_PTR HeapSegmentCommit; ULONG_PTR HeapSegmentCommit;
@@ -208,15 +209,8 @@ typedef struct _PEB
ULONG_PTR HeapDeCommitFreeBlockThreshold; ULONG_PTR HeapDeCommitFreeBlockThreshold;
ULONG NumberOfHeaps; ULONG NumberOfHeaps;
ULONG MaximumNumberOfHeaps; ULONG MaximumNumberOfHeaps;
PVOID* ProcessHeaps; PVOID *ProcessHeaps;
PVOID GdiSharedHandleTable;
PVOID ProcessStarterHelper; PVOID ProcessStarterHelper;
ULONG GdiDCAttributeList;
ULONG OSMajorVersion;
ULONG OSMinorVersion;
USHORT OSBuildNumber;
USHORT OSCSDVersion;
ULONG OSPlatformId;
ULONG ImageSubsystem; ULONG ImageSubsystem;
ULONG ImageSubsystemMajorVersion; ULONG ImageSubsystemMajorVersion;
ULONG ImageSubsystemMinorVersion; ULONG ImageSubsystemMinorVersion;
@@ -230,7 +224,7 @@ typedef struct _PEB
PVOID AppCompatInfo; PVOID AppCompatInfo;
UNICODE_STRING CSDVersion; UNICODE_STRING CSDVersion;
ULONG_PTR MinimumStackCommit; ULONG_PTR MinimumStackCommit;
PVOID* FlsCallback; PVOID *FlsCallback;
LIST_ENTRY FlsListHead; LIST_ENTRY FlsListHead;
PVOID FlsBitmap; PVOID FlsBitmap;
ULONG FlsBitmapBits[4]; ULONG FlsBitmapBits[4];
@@ -244,5 +238,75 @@ typedef struct _PEB_FREE_BLOCK
ULONG Size; ULONG Size;
} PEB_FREE_BLOCK, *PPEB_FREE_BLOCK; } PEB_FREE_BLOCK, *PPEB_FREE_BLOCK;
/* Kernel's representation of a thread environment block */
typedef struct _TEB
{
THREAD_INFORMATION_BLOCK ThreadInformationBlock;
PVOID EnvironmentPointer;
CLIENT_ID ClientId;
PVOID ActiveRpcHandle;
PVOID ThreadLocalStoragePointer;
PPEB ProcessEnvironmentBlock;
ULONG LastErrorValue;
ULONG CountOfOwnedCriticalSections;
ULONG UserReserved[5];
LCID CurrentLocale;
ULONG FpSoftwareStatusRegister;
PVOID SystemReserved1[54];
LONG ExceptionCode;
PACTIVATION_CONTEXT_STACK ActivationContextStackPointer;
CLIENT_ID RealClientId;
ULONG LastStatusValue;
UNICODE_STRING StaticUnicodeString;
WCHAR StaticUnicodeBuffer[261];
PVOID DeallocationStack;
PVOID TlsSlots[64];
LIST_ENTRY TlsLinks;
PVOID ReservedForNtRpc;
PVOID DbgSsReserved[2];
ULONG HardErrorMode;
PVOID Instrumentation[14];
PVOID SubProcessTag;
PVOID EtwTraceData;
PVOID WinSockData;
BOOLEAN InDbgPrint;
BOOLEAN FreeStackOnTermination;
BOOLEAN HasFiberData;
UCHAR IdealProcessor;
ULONG GuaranteedStackBytes;
PVOID ReservedForPerf;
PVOID ReservedForOle;
ULONG WaitingOnLoaderLock;
ULONG_PTR SparePointer1;
ULONG_PTR SoftPatchPtr1;
ULONG_PTR SoftPatchPtr2;
PVOID *TlsExpansionSlots;
ULONG ImpersonationLocale;
ULONG IsImpersonating;
PVOID NlsCache;
PVOID ShimData;
ULONG HeapVirtualAffinity;
HANDLE CurrentTransactionHandle;
PTEB_ACTIVE_FRAME ActiveFrame;
PVOID FlsData;
BOOLEAN SafeThunkCall;
BOOLEAN BooleanSpare[3];
} TEB, *PTEB;
/* Thread Environment Block Active Frame structure definition */
typedef struct _TEB_ACTIVE_FRAME
{
ULONG Flags;
PTEB_ACTIVE_FRAME Previous;
PTEB_ACTIVE_FRAME_CONTEXT Context;
} TEB_ACTIVE_FRAME, *PTEB_ACTIVE_FRAME;
/* Thread Environment Block Active Frame Context structure definition */
typedef struct _TEB_ACTIVE_FRAME_CONTEXT
{
ULONG Flags;
LPSTR FrameName;
} TEB_ACTIVE_FRAME_CONTEXT, *PTEB_ACTIVE_FRAME_CONTEXT;
#endif /* __XTOS_ASSEMBLER__ */ #endif /* __XTOS_ASSEMBLER__ */
#endif /* __XTDK_PSTYPES_H */ #endif /* __XTDK_PSTYPES_H */

View File

@@ -182,6 +182,24 @@ typedef enum _RTL_VARIABLE_TYPE
TypeWideString TypeWideString
} RTL_VARIABLE_TYPE, *PRTL_VARIABLE_TYPE; } RTL_VARIABLE_TYPE, *PRTL_VARIABLE_TYPE;
/* Activation context stack structure definition */
typedef struct _ACTIVATION_CONTEXT_STACK
{
PRTL_ACTIVATION_CONTEXT_STACK_FRAME ActiveFrame;
LIST_ENTRY FrameListCache;
ULONG Flags;
ULONG NextCookieSequenceNumber;
ULONG StackId;
} ACTIVATION_CONTEXT_STACK, *PACTIVATION_CONTEXT_STACK;
/* Activation context stack frame structure definition */
typedef struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME
{
PRTL_ACTIVATION_CONTEXT_STACK_FRAME Previous;
PVOID ActivationContext;
ULONG Flags;
} RTL_ACTIVATION_CONTEXT_STACK_FRAME, *PRTL_ACTIVATION_CONTEXT_STACK_FRAME;
/* Runtime Library red-black tree balanced node structure definition */ /* Runtime Library red-black tree balanced node structure definition */
typedef struct _RTL_BALANCED_NODE typedef struct _RTL_BALANCED_NODE
{ {

View File

@@ -105,6 +105,7 @@ typedef struct _ACPI_SUBTABLE_HEADER ACPI_SUBTABLE_HEADER, *PACPI_SUBTABLE_HEADE
typedef struct _ACPI_SYSTEM_INFO ACPI_SYSTEM_INFO, *PACPI_SYSTEM_INFO; typedef struct _ACPI_SYSTEM_INFO ACPI_SYSTEM_INFO, *PACPI_SYSTEM_INFO;
typedef struct _ACPI_TIMER_INFO ACPI_TIMER_INFO, *PACPI_TIMER_INFO; typedef struct _ACPI_TIMER_INFO ACPI_TIMER_INFO, *PACPI_TIMER_INFO;
typedef struct _ACPI_XSDT ACPI_XSDT, *PACPI_XSDT; typedef struct _ACPI_XSDT ACPI_XSDT, *PACPI_XSDT;
typedef struct _ACTIVATION_CONTEXT_STACK ACTIVATION_CONTEXT_STACK, *PACTIVATION_CONTEXT_STACK;
typedef struct _ANSI_STRING ANSI_STRING, *PANSI_STRING; typedef struct _ANSI_STRING ANSI_STRING, *PANSI_STRING;
typedef struct _ANSI_STRING32 ANSI_STRING32, *PANSI_STRING32; typedef struct _ANSI_STRING32 ANSI_STRING32, *PANSI_STRING32;
typedef struct _ANSI_STRING64 ANSI_STRING64, *PANSI_STRING64; typedef struct _ANSI_STRING64 ANSI_STRING64, *PANSI_STRING64;
@@ -440,6 +441,7 @@ typedef struct _PRIVILEGE_SET PRIVILEGE_SET, *PPRIVILEGE_SET;
typedef struct _PROCESSOR_IDENTITY PROCESSOR_IDENTITY, *PPROCESSOR_IDENTITY; typedef struct _PROCESSOR_IDENTITY PROCESSOR_IDENTITY, *PPROCESSOR_IDENTITY;
typedef struct _PROCESSOR_POWER_STATE PROCESSOR_POWER_STATE, *PPROCESSOR_POWER_STATE; typedef struct _PROCESSOR_POWER_STATE PROCESSOR_POWER_STATE, *PPROCESSOR_POWER_STATE;
typedef struct _QUAD QUAD, *PQUAD; typedef struct _QUAD QUAD, *PQUAD;
typedef struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME RTL_ACTIVATION_CONTEXT_STACK_FRAME, *PRTL_ACTIVATION_CONTEXT_STACK_FRAME;
typedef struct _RTL_BALANCED_NODE RTL_BALANCED_NODE, *PRTL_BALANCED_NODE; typedef struct _RTL_BALANCED_NODE RTL_BALANCED_NODE, *PRTL_BALANCED_NODE;
typedef struct _RTL_BITMAP RTL_BITMAP, *PRTL_BITMAP; typedef struct _RTL_BITMAP RTL_BITMAP, *PRTL_BITMAP;
typedef struct _RTL_PRINT_CONTEXT RTL_PRINT_CONTEXT, *PRTL_PRINT_CONTEXT; typedef struct _RTL_PRINT_CONTEXT RTL_PRINT_CONTEXT, *PRTL_PRINT_CONTEXT;
@@ -460,6 +462,9 @@ typedef struct _STRING STRING, *PSTRING;
typedef struct _STRING32 STRING32, *PSTRING32; typedef struct _STRING32 STRING32, *PSTRING32;
typedef struct _STRING64 STRING64, *PSTRING64; typedef struct _STRING64 STRING64, *PSTRING64;
typedef struct _SYSTEM_POWER_STATE_CONTEXT SYSTEM_POWER_STATE_CONTEXT, *PSYSTEM_POWER_STATE_CONTEXT; typedef struct _SYSTEM_POWER_STATE_CONTEXT SYSTEM_POWER_STATE_CONTEXT, *PSYSTEM_POWER_STATE_CONTEXT;
typedef struct _TEB TEB, *PTEB;
typedef struct _TEB_ACTIVE_FRAME TEB_ACTIVE_FRAME, *PTEB_ACTIVE_FRAME;
typedef struct _TEB_ACTIVE_FRAME_CONTEXT TEB_ACTIVE_FRAME_CONTEXT, *PTEB_ACTIVE_FRAME_CONTEXT;
typedef struct _THREAD_INFORMATION_BLOCK THREAD_INFORMATION_BLOCK, *PTHREAD_INFORMATION_BLOCK; typedef struct _THREAD_INFORMATION_BLOCK THREAD_INFORMATION_BLOCK, *PTHREAD_INFORMATION_BLOCK;
typedef struct _TIME_FIELDS TIME_FIELDS, *PTIME_FIELDS; typedef struct _TIME_FIELDS TIME_FIELDS, *PTIME_FIELDS;
typedef struct _TIMER_ROUTINES TIMER_ROUTINES, *PTIMER_ROUTINES; typedef struct _TIMER_ROUTINES TIMER_ROUTINES, *PTIMER_ROUTINES;