diff --git a/sdk/include/psdk/processthreadsapi.h b/sdk/include/psdk/processthreadsapi.h index 212a530559f..f2e892a99cb 100644 --- a/sdk/include/psdk/processthreadsapi.h +++ b/sdk/include/psdk/processthreadsapi.h @@ -11,13 +11,112 @@ extern "C" { #endif +typedef struct _STARTUPINFOA +{ + DWORD cb; + LPSTR lpReserved; + LPSTR lpDesktop; + LPSTR lpTitle; + DWORD dwX; + DWORD dwY; + DWORD dwXSize; + DWORD dwYSize; + DWORD dwXCountChars; + DWORD dwYCountChars; + DWORD dwFillAttribute; + DWORD dwFlags; + WORD wShowWindow; + WORD cbReserved2; + PBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; +} STARTUPINFOA, *LPSTARTUPINFOA; + +typedef struct _STARTUPINFOW +{ + DWORD cb; + LPWSTR lpReserved; + LPWSTR lpDesktop; + LPWSTR lpTitle; + DWORD dwX; + DWORD dwY; + DWORD dwXSize; + DWORD dwYSize; + DWORD dwXCountChars; + DWORD dwYCountChars; + DWORD dwFillAttribute; + DWORD dwFlags; + WORD wShowWindow; + WORD cbReserved2; + PBYTE lpReserved2; + HANDLE hStdInput; + HANDLE hStdOutput; + HANDLE hStdError; +} STARTUPINFOW,*LPSTARTUPINFOW; + +#ifdef UNICODE +typedef STARTUPINFOW STARTUPINFO, *LPSTARTUPINFO; +#else +typedef STARTUPINFOA STARTUPINFO, *LPSTARTUPINFO; +#endif // UNICODE + +typedef struct _PROCESS_INFORMATION +{ + HANDLE hProcess; + HANDLE hThread; + DWORD dwProcessId; + DWORD dwThreadId; +} PROCESS_INFORMATION,*PPROCESS_INFORMATION,*LPPROCESS_INFORMATION; + +typedef struct _PROC_THREAD_ATTRIBUTE_LIST *PPROC_THREAD_ATTRIBUTE_LIST, *LPPROC_THREAD_ATTRIBUTE_LIST; + WINBASEAPI BOOL WINAPI SetThreadStackGuarantee( _Inout_ PULONG StackSizeInBytes); +#if (_WIN32_WINNT >= 0x0600) + +WINBASEAPI +VOID +WINAPI +FlushProcessWriteBuffers( + VOID); + +WINBASEAPI +_Success_(return != FALSE) +BOOL +WINAPI +InitializeProcThreadAttributeList( + _Out_writes_bytes_to_opt_(*lpSize,*lpSize) LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, + _In_ DWORD dwAttributeCount, + _Reserved_ DWORD dwFlags, + _When_(lpAttributeList == nullptr,_Out_) _When_(lpAttributeList != nullptr,_Inout_) PSIZE_T lpSize); + +WINBASEAPI +BOOL +WINAPI +UpdateProcThreadAttribute( + _Inout_ LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, + _In_ DWORD dwFlags, + _In_ DWORD_PTR Attribute, + _In_reads_bytes_opt_(cbSize) PVOID lpValue, + _In_ SIZE_T cbSize, + _Out_writes_bytes_opt_(cbSize) PVOID lpPreviousValue, + _In_opt_ PSIZE_T lpReturnSize); + +WINBASEAPI +VOID +WINAPI +DeleteProcThreadAttributeList( + _Inout_ LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList); + +#endif // (_WIN32_WINNT >= 0x0600) || defined(__REACTOS__) + #if (_WIN32_WINNT >= 0x602) || defined(__REACTOS__) + FORCEINLINE HANDLE GetCurrentProcessToken( @@ -41,6 +140,7 @@ GetCurrentThreadEffectiveToken( { return (HANDLE)(LONG_PTR)-6; } + #endif // (_WIN32_WINNT >= 0x602) || defined(__REACTOS__) #ifdef __cplusplus diff --git a/sdk/include/psdk/winbase.h b/sdk/include/psdk/winbase.h index 16914f513ee..b8d629b0b0e 100644 --- a/sdk/include/psdk/winbase.h +++ b/sdk/include/psdk/winbase.h @@ -19,6 +19,7 @@ extern "C" { #include #include +#include #include #include #include @@ -701,54 +702,17 @@ typedef PEXCEPTION_RECORD LPEXCEPTION_RECORD; typedef PEXCEPTION_POINTERS LPEXCEPTION_POINTERS; #endif -typedef struct _STARTUPINFOA { - DWORD cb; - LPSTR lpReserved; - LPSTR lpDesktop; - LPSTR lpTitle; - DWORD dwX; - DWORD dwY; - DWORD dwXSize; - DWORD dwYSize; - DWORD dwXCountChars; - DWORD dwYCountChars; - DWORD dwFillAttribute; - DWORD dwFlags; - WORD wShowWindow; - WORD cbReserved2; - PBYTE lpReserved2; - HANDLE hStdInput; - HANDLE hStdOutput; - HANDLE hStdError; -} STARTUPINFOA,*LPSTARTUPINFOA; +typedef struct _STARTUPINFOEXA +{ + STARTUPINFOA StartupInfo; + LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList; +} STARTUPINFOEXA, *LPSTARTUPINFOEXA; -typedef struct _STARTUPINFOW { - DWORD cb; - LPWSTR lpReserved; - LPWSTR lpDesktop; - LPWSTR lpTitle; - DWORD dwX; - DWORD dwY; - DWORD dwXSize; - DWORD dwYSize; - DWORD dwXCountChars; - DWORD dwYCountChars; - DWORD dwFillAttribute; - DWORD dwFlags; - WORD wShowWindow; - WORD cbReserved2; - PBYTE lpReserved2; - HANDLE hStdInput; - HANDLE hStdOutput; - HANDLE hStdError; -} STARTUPINFOW,*LPSTARTUPINFOW; - -typedef struct _PROCESS_INFORMATION { - HANDLE hProcess; - HANDLE hThread; - DWORD dwProcessId; - DWORD dwThreadId; -} PROCESS_INFORMATION,*PPROCESS_INFORMATION,*LPPROCESS_INFORMATION; +typedef struct _STARTUPINFOEXW +{ + STARTUPINFOW StartupInfo; + LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList; +} STARTUPINFOEXW, *LPSTARTUPINFOEXW; #if (_WIN32_WINNT >= 0x0500) typedef WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK ; @@ -1164,6 +1128,7 @@ typedef enum _PROC_THREAD_ATTRIBUTE_NUM { ProcThreadAttributeParentProcess = 0, ProcThreadAttributeHandleList = 2, ProcThreadAttributeGroupAffinity = 3, + ProcThreadAttributePreferredNode = 4, ProcThreadAttributeIdealProcessor = 5, ProcThreadAttributeUmsThread = 6, ProcThreadAttributeMitigationPolicy = 7, @@ -1174,11 +1139,20 @@ typedef enum _PROC_THREAD_ATTRIBUTE_NUM { ProcThreadAttributeAllApplicationPackagesPolicy = 15, ProcThreadAttributeWin32kFilter = 16, ProcThreadAttributeSafeOpenPromptOriginClaim = 17, + ProcThreadAttributeDesktopAppPolicy = 18, + ProcThreadAttributePseudoConsole = 22, + ProcThreadAttributeMitigationAuditPolicy = 24, + ProcThreadAttributeMachineType = 25, + ProcThreadAttributeComponentFilter = 26, + ProcThreadAttributeEnableOptionalXStateFeatures = 27, + ProcThreadAttributeTrustedApp = 29, + ProcThreadAttributeSveVectorLength = 30, } PROC_THREAD_ATTRIBUTE_NUM; #define PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR (ProcThreadAttributeIdealProcessor | PROC_THREAD_ATTRIBUTE_THREAD | PROC_THREAD_ATTRIBUTE_INPUT) #define PROC_THREAD_ATTRIBUTE_HANDLE_LIST (ProcThreadAttributeHandleList | PROC_THREAD_ATTRIBUTE_INPUT) #define PROC_THREAD_ATTRIBUTE_PARENT_PROCESS (ProcThreadAttributeParentProcess | PROC_THREAD_ATTRIBUTE_INPUT) +#define PROC_THREAD_ATTRIBUTE_MACHINE_TYPE (ProcThreadAttributeMachineType | PROC_THREAD_ATTRIBUTE_INPUT) typedef DWORD (WINAPI *PFE_EXPORT_FUNC)( @@ -3241,7 +3215,6 @@ MapUserPhysicalPagesScatter( #endif #ifdef UNICODE -typedef STARTUPINFOW STARTUPINFO,*LPSTARTUPINFO; typedef HW_PROFILE_INFOW HW_PROFILE_INFO,*LPHW_PROFILE_INFO; typedef ENUMRESLANGPROCW ENUMRESLANGPROC; typedef ENUMRESNAMEPROCW ENUMRESNAMEPROC; @@ -3449,7 +3422,6 @@ typedef PCACTCTXW PCACTCTX; #define WriteProfileSection WriteProfileSectionW #define WriteProfileString WriteProfileStringW #else -typedef STARTUPINFOA STARTUPINFO,*LPSTARTUPINFO; typedef HW_PROFILE_INFOA HW_PROFILE_INFO,*LPHW_PROFILE_INFO; #if (_WIN32_WINNT >= 0x0501) typedef ACTCTXA ACTCTX,*PACTCTX; diff --git a/sdk/include/xdk/ketypes.h b/sdk/include/xdk/ketypes.h index 0680f93fe80..ad31b47d41b 100644 --- a/sdk/include/xdk/ketypes.h +++ b/sdk/include/xdk/ketypes.h @@ -1191,6 +1191,75 @@ typedef struct _TIMER_SET_COALESCABLE_TIMER_INFO { $endif (_NTDDK_) $if (_NTDDK_ || _WINNT_) +typedef union _ARM64_NT_NEON128 +{ + struct + { + ULONGLONG Low; + LONGLONG High; + } DUMMYSTRUCTNAME; + double D[2]; + float S[4]; + USHORT H[8]; + UCHAR B[16]; +} ARM64_NT_NEON128, *PARM64_NT_NEON128; + +#define ARM64_MAX_BREAKPOINTS 8 +#define ARM64_MAX_WATCHPOINTS 2 + +typedef struct DECLSPEC_ALIGN(16) DECLSPEC_NOINITALL _ARM64_NT_CONTEXT +{ + ULONG ContextFlags; + ULONG Cpsr; + union + { + struct + { + ULONG64 X0; + ULONG64 X1; + ULONG64 X2; + ULONG64 X3; + ULONG64 X4; + ULONG64 X5; + ULONG64 X6; + ULONG64 X7; + ULONG64 X8; + ULONG64 X9; + ULONG64 X10; + ULONG64 X11; + ULONG64 X12; + ULONG64 X13; + ULONG64 X14; + ULONG64 X15; + ULONG64 X16; + ULONG64 X17; + ULONG64 X18; + ULONG64 X19; + ULONG64 X20; + ULONG64 X21; + ULONG64 X22; + ULONG64 X23; + ULONG64 X24; + ULONG64 X25; + ULONG64 X26; + ULONG64 X27; + ULONG64 X28; + ULONG64 Fp; + ULONG64 Lr; + } DUMMYSTRUCTNAME; + ULONG64 X[31]; + } DUMMYUNIONNAME; + ULONG64 Sp; + ULONG64 Pc; + ARM64_NT_NEON128 V[32]; + ULONG Fpcr; + ULONG Fpsr; + ULONG Bcr[ARM64_MAX_BREAKPOINTS]; + ULONG64 Bvr[ARM64_MAX_BREAKPOINTS]; + ULONG Wcr[ARM64_MAX_WATCHPOINTS]; + ULONG64 Wvr[ARM64_MAX_WATCHPOINTS]; +} ARM64_NT_CONTEXT, *PARM64_NT_CONTEXT; + #define XSTATE_LEGACY_FLOATING_POINT 0 #define XSTATE_LEGACY_SSE 1 #define XSTATE_GSSE 2 diff --git a/sdk/include/xdk/ntdef.template.h b/sdk/include/xdk/ntdef.template.h index f6162348d60..0c1dd44e24a 100644 --- a/sdk/include/xdk/ntdef.template.h +++ b/sdk/include/xdk/ntdef.template.h @@ -38,6 +38,14 @@ $endif() extern "C" { #endif +#ifndef DECLSPEC_NOINITALL +#if defined(_MSC_VER) +#define DECLSPEC_NOINITALL __pragma(warning(push)) __pragma(warning(disable:4845)) __declspec(no_init_all) __pragma(warning(pop)) +#else +#define DECLSPEC_NOINITALL +#endif +#endif + /* Default to strict */ #ifndef NO_STRICT #ifndef STRICT diff --git a/sdk/include/xdk/winnt.template.h b/sdk/include/xdk/winnt.template.h index 4334b32a049..dd4e3efa82c 100644 --- a/sdk/include/xdk/winnt.template.h +++ b/sdk/include/xdk/winnt.template.h @@ -62,6 +62,14 @@ #pragma warning(disable:4214) #endif +#ifndef DECLSPEC_NOINITALL +#if defined(_MSC_VER) +#define DECLSPEC_NOINITALL __pragma(warning(push)) __pragma(warning(disable:4845)) __declspec(no_init_all) __pragma(warning(pop)) +#else +#define DECLSPEC_NOINITALL +#endif +#endif + #ifdef __cplusplus extern "C" { #endif diff --git a/sdk/include/xdk/winnt_old.h b/sdk/include/xdk/winnt_old.h index 58ff1c0763f..91f08fe745e 100644 --- a/sdk/include/xdk/winnt_old.h +++ b/sdk/include/xdk/winnt_old.h @@ -561,6 +561,10 @@ #define PAGE_WRITECOMBINE 0x0400 #define MEM_COMMIT 0x1000 #define MEM_RESERVE 0x2000 +#define MEM_REPLACE_PLACEHOLDER 0x00004000 +#define MEM_RESERVE_PLACEHOLDER 0x00040000 +#define MEM_COALESCE_PLACEHOLDERS 0x00000001 +#define MEM_PRESERVE_PLACEHOLDER 0x00000002 #define MEM_DECOMMIT 0x4000 #define MEM_RELEASE 0x8000 #define MEM_FREE 0x10000 @@ -1217,6 +1221,12 @@ typedef enum MEM_EXTENDED_PARAMETER_TYPE MemExtendedParameterMax } MEM_EXTENDED_PARAMETER_TYPE, *PMEM_EXTENDED_PARAMETER_TYPE; +typedef struct _MEM_ADDRESS_REQUIREMENTS { + PVOID LowestStartingAddress; + PVOID HighestEndingAddress; + SIZE_T Alignment; +} MEM_ADDRESS_REQUIREMENTS, *PMEM_ADDRESS_REQUIREMENTS; + #define MEM_EXTENDED_PARAMETER_TYPE_BITS 8 typedef struct DECLSPEC_ALIGN(8) MEM_EXTENDED_PARAMETER { @@ -1249,19 +1259,6 @@ typedef struct _SCOPE_TABLE_ARM { typedef SCOPE_TABLE_ARM SCOPE_TABLE_ARM64, *PSCOPE_TABLE_ARM64; -typedef union _ARM64_NT_NEON128 -{ - struct - { - ULONGLONG Low; - LONGLONG High; - } DUMMYSTRUCTNAME; - double D[2]; - float S[4]; - WORD H[8]; - BYTE B[16]; -} ARM64_NT_NEON128, *PARM64_NT_NEON128; - typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY { DWORD BeginAddress; union { @@ -1291,6 +1288,7 @@ typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY ARM64_RUNTIME_FUNCTION, *PARM #define CONTEXT_FLOATING_POINT (CONTEXT_i386|0x00000008L) #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L) #define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L) +#define CONTEXT_XSTATE (CONTEXT_i386|0x00000040L) #define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS) #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | \ CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | \ @@ -1350,6 +1348,8 @@ typedef struct _CONTEXT { #define CONTEXT_SEGMENTS (CONTEXT_AMD64 | 0x4L) #define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | 0x8L) #define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x10L) +#define CONTEXT_XSTATE (CONTEXT_AMD64 | 0x40L) +#define CONTEXT_KERNEL_CET (CONTEXT_AMD64 | 0x80L) #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT) #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS) @@ -2457,21 +2457,53 @@ typedef struct DECLSPEC_ALIGN(16) _ARM64EC_NT_CONTEXT } DUMMYUNIONNAME; } ARM64EC_NT_CONTEXT, *PARM64EC_NT_CONTEXT; +typedef struct _DISPATCHER_CONTEXT_ARM64 +{ + ULONG_PTR ControlPc; + ULONG_PTR ImageBase; + PARM64_RUNTIME_FUNCTION FunctionEntry; + ULONG_PTR EstablisherFrame; + ULONG_PTR TargetPc; + PARM64_NT_CONTEXT ContextRecord; + PEXCEPTION_ROUTINE LanguageHandler; + PVOID HandlerData; + struct _UNWIND_HISTORY_TABLE *HistoryTable; + DWORD ScopeIndex; + BOOLEAN ControlPcIsUnwound; + PBYTE NonVolatileRegisters; +} DISPATCHER_CONTEXT_ARM64, *PDISPATCHER_CONTEXT_ARM64; + +#define NONVOL_INT_NUMREG_ARM64 11 +#define NONVOL_FP_NUMREG_ARM64 8 + +#define NONVOL_INT_SIZE_ARM64 (NONVOL_INT_NUMREG_ARM64 * sizeof(DWORD64)) +#define NONVOL_FP_SIZE_ARM64 (NONVOL_FP_NUMREG_ARM64 * sizeof(double)) + +typedef union _DISPATCHER_CONTEXT_NONVOLREG_ARM64 +{ + BYTE Buffer[NONVOL_INT_SIZE_ARM64 + NONVOL_FP_SIZE_ARM64]; + struct + { + DWORD64 GpNvRegs[NONVOL_INT_NUMREG_ARM64]; + double FpNvRegs[NONVOL_FP_NUMREG_ARM64]; + } DUMMYSTRUCTNAME; +} DISPATCHER_CONTEXT_NONVOLREG_ARM64; + /* The WoW64 context */ #define WOW64_CONTEXT_i386 0x00010000 #define WOW64_CONTEXT_i486 0x00010000 -#define WOW64_CONTEXT_CONTROL (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000001)) -#define WOW64_CONTEXT_INTEGER (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000002)) -#define WOW64_CONTEXT_SEGMENTS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000004)) -#define WOW64_CONTEXT_FLOATING_POINT (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000008)) -#define WOW64_CONTEXT_DEBUG_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000010)) -#define WOW64_CONTEXT_EXTENDED_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000020)) +#define WOW64_CONTEXT_CONTROL (WOW64_CONTEXT_i386 | 0x00000001L) +#define WOW64_CONTEXT_INTEGER (WOW64_CONTEXT_i386 | 0x00000002L) +#define WOW64_CONTEXT_SEGMENTS (WOW64_CONTEXT_i386 | 0x00000004L) +#define WOW64_CONTEXT_FLOATING_POINT (WOW64_CONTEXT_i386 | 0x00000008L) +#define WOW64_CONTEXT_DEBUG_REGISTERS (WOW64_CONTEXT_i386 | 0x00000010L) +#define WOW64_CONTEXT_EXTENDED_REGISTERS (WOW64_CONTEXT_i386 | 0x00000020L) #define WOW64_CONTEXT_FULL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS) #define WOW64_CONTEXT_ALL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | \ WOW64_CONTEXT_SEGMENTS | WOW64_CONTEXT_FLOATING_POINT | \ WOW64_CONTEXT_DEBUG_REGISTERS | WOW64_CONTEXT_EXTENDED_REGISTERS) -#define WOW64_CONTEXT_XSTATE (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000040)) +#define WOW64_CONTEXT_XSTATE (WOW64_CONTEXT_i386 | 0x00000040L) #define WOW64_CONTEXT_EXCEPTION_ACTIVE 0x08000000 #define WOW64_CONTEXT_SERVICE_ACTIVE 0x10000000 @@ -4119,6 +4151,17 @@ typedef struct _POWER_ACTION_POLICY { #define PO_THROTTLE_ADAPTIVE 3 #define PO_THROTTLE_MAXIMUM 4 +typedef struct _SYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION +{ + DWORD Machine : 16; + DWORD KernelMode : 1; + DWORD UserMode : 1; + DWORD Native : 1; + DWORD Process : 1; + DWORD WoW64Container : 1; + DWORD ReservedZero0 : 11; +} SYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION; + typedef struct _SYSTEM_POWER_LEVEL { BOOLEAN Enable; BYTE Spare[3];