From 2d43fd458c2714c7c4b4f44efa9898fd61bc7f32 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Tue, 29 Jul 2025 15:47:11 +0300 Subject: [PATCH] [WINE] Header improvement Add some sdk/ddk headers that contain wine specific definitions. --- sdk/include/wine/ddk/ntddk.h | 12 +++ sdk/include/wine/ddk/wdm.h | 141 ++++++++++++++++++++++++++++++ sdk/include/wine/winnt.h | 164 +++++++++++++++++++++++++++++++++++ sdk/include/wine/winternl.h | 4 +- 4 files changed, 318 insertions(+), 3 deletions(-) create mode 100644 sdk/include/wine/ddk/ntddk.h create mode 100644 sdk/include/wine/ddk/wdm.h create mode 100644 sdk/include/wine/winnt.h diff --git a/sdk/include/wine/ddk/ntddk.h b/sdk/include/wine/ddk/ntddk.h new file mode 100644 index 00000000000..22246b8454f --- /dev/null +++ b/sdk/include/wine/ddk/ntddk.h @@ -0,0 +1,12 @@ + + +#pragma once + +void WINAPI RtlUpperString(STRING*, const STRING*); +LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN); + +typedef struct _PROCESS_ACCESS_TOKEN +{ + HANDLE Token; + HANDLE Thread; +} PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN; diff --git a/sdk/include/wine/ddk/wdm.h b/sdk/include/wine/ddk/wdm.h new file mode 100644 index 00000000000..7e799e86650 --- /dev/null +++ b/sdk/include/wine/ddk/wdm.h @@ -0,0 +1,141 @@ + +#pragma once + +typedef struct _KSYSTEM_TIME { + ULONG LowPart; + LONG High1Time; + LONG High2Time; +} KSYSTEM_TIME, *PKSYSTEM_TIME; + +#define PROCESSOR_FEATURE_MAX 64 + +typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE +{ + StandardDesign, + NEC98x86, + EndAlternatives +} ALTERNATIVE_ARCHITECTURE_TYPE; + +typedef enum _NT_PRODUCT_TYPE { + NtProductWinNt = 1, + NtProductLanManNt, + NtProductServer +} NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE; + +typedef struct _KUSER_SHARED_DATA { + ULONG TickCountLowDeprecated; /* 0x000 */ + ULONG TickCountMultiplier; /* 0x004 */ + volatile KSYSTEM_TIME InterruptTime; /* 0x008 */ + volatile KSYSTEM_TIME SystemTime; /* 0x014 */ + volatile KSYSTEM_TIME TimeZoneBias; /* 0x020 */ + USHORT ImageNumberLow; /* 0x02c */ + USHORT ImageNumberHigh; /* 0x02e */ + WCHAR NtSystemRoot[260]; /* 0x030 */ + ULONG MaxStackTraceDepth; /* 0x238 */ + ULONG CryptoExponent; /* 0x23c */ + ULONG TimeZoneId; /* 0x240 */ + ULONG LargePageMinimum; /* 0x244 */ + ULONG AitSamplingValue; /* 0x248 */ + ULONG AppCompatFlag; /* 0x24c */ + ULONGLONG RNGSeedVersion; /* 0x250 */ + ULONG GlobalValidationRunLevel; /* 0x258 */ + volatile ULONG TimeZoneBiasStamp; /* 0x25c */ + ULONG NtBuildNumber; /* 0x260 */ + NT_PRODUCT_TYPE NtProductType; /* 0x264 */ + BOOLEAN ProductTypeIsValid; /* 0x268 */ + USHORT NativeProcessorArchitecture; /* 0x26a */ + ULONG NtMajorVersion; /* 0x26c */ + ULONG NtMinorVersion; /* 0x270 */ + BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX]; /* 0x274 */ + ULONG Reserved1; /* 0x2b4 */ + ULONG Reserved3; /* 0x2b8 */ + volatile ULONG TimeSlip; /* 0x2bc */ + ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture; /* 0x2c0 */ + ULONG BootId; /* 0x2c4 */ + LARGE_INTEGER SystemExpirationDate; /* 0x2c8 */ + ULONG SuiteMask; /* 0x2d0 */ + BOOLEAN KdDebuggerEnabled; /* 0x2d4 */ + UCHAR NXSupportPolicy; /* 0x2d5 */ + USHORT CyclesPerYield; /* 0x2d6 */ + volatile ULONG ActiveConsoleId; /* 0x2d8 */ + volatile ULONG DismountCount; /* 0x2dc */ + ULONG ComPlusPackage; /* 0x2e0 */ + ULONG LastSystemRITEventTickCount; /* 0x2e4 */ + ULONG NumberOfPhysicalPages; /* 0x2e8 */ + BOOLEAN SafeBootMode; /* 0x2ec */ + UCHAR VirtualizationFlags; /* 0x2ed */ + union { + ULONG SharedDataFlags; /* 0x2f0 */ + struct { + ULONG DbgErrorPortPresent : 1; + ULONG DbgElevationEnabed : 1; + ULONG DbgVirtEnabled : 1; + ULONG DbgInstallerDetectEnabled : 1; + ULONG DbgLkgEnabled : 1; + ULONG DbgDynProcessorEnabled : 1; + ULONG DbgConsoleBrokerEnabled : 1; + ULONG DbgSecureBootEnabled : 1; + ULONG DbgMultiSessionSku : 1; + ULONG DbgMultiUsersInSessionSku : 1; + ULONG DbgStateSeparationEnabled : 1; + ULONG SpareBits : 21; + } DUMMYSTRUCTNAME2; + } DUMMYUNIONNAME2; + ULONG DataFlagsPad[1]; /* 0x2f4 */ + ULONGLONG TestRetInstruction; /* 0x2f8 */ + LONGLONG QpcFrequency; /* 0x300 */ + ULONG SystemCall; /* 0x308 */ + union { + ULONG AllFlags; /* 0x30c */ + struct { + ULONG Win32Process : 1; + ULONG Sgx2Enclave : 1; + ULONG VbsBasicEnclave : 1; + ULONG SpareBits : 29; + } DUMMYSTRUCTNAME; + } UserCetAvailableEnvironments; + ULONGLONG SystemCallPad[2]; /* 0x310 */ + union { + volatile KSYSTEM_TIME TickCount; /* 0x320 */ + volatile ULONG64 TickCountQuad; + } DUMMYUNIONNAME; + ULONG Cookie; /* 0x330 */ + ULONG CookiePad[1]; /* 0x334 */ + LONGLONG ConsoleSessionForegroundProcessId; /* 0x338 */ + ULONGLONG TimeUpdateLock; /* 0x340 */ + ULONGLONG BaselineSystemTimeQpc; /* 0x348 */ + ULONGLONG BaselineInterruptTimeQpc; /* 0x350 */ + ULONGLONG QpcSystemTimeIncrement; /* 0x358 */ + ULONGLONG QpcInterruptTimeIncrement; /* 0x360 */ + UCHAR QpcSystemTimeIncrementShift; /* 0x368 */ + UCHAR QpcInterruptTimeIncrementShift; /* 0x369 */ + USHORT UnparkedProcessorCount; /* 0x36a */ + ULONG EnclaveFeatureMask[4]; /* 0x36c */ + ULONG TelemetryCoverageRound; /* 0x37c */ + USHORT UserModeGlobalLogger[16]; /* 0x380 */ + ULONG ImageFileExecutionOptions; /* 0x3a0 */ + ULONG LangGenerationCount; /* 0x3a4 */ + ULONG ActiveProcessorAffinity; /* 0x3a8 */ + volatile ULONGLONG InterruptTimeBias; /* 0x3b0 */ + volatile ULONGLONG QpcBias; /* 0x3b8 */ + ULONG ActiveProcessorCount; /* 0x3c0 */ + volatile UCHAR ActiveGroupCount; /* 0x3c4 */ + union { + USHORT QpcData; /* 0x3c6 */ + struct { + UCHAR volatile QpcBypassEnabled; + UCHAR QpcShift; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME3; + LARGE_INTEGER TimeZoneBiasEffectiveStart; /* 0x3c8 */ + LARGE_INTEGER TimeZoneBiasEffectiveEnd; /* 0x3d0 */ + XSTATE_CONFIGURATION XState; /* 0x3d8 */ +} KSHARED_USER_DATA, *PKSHARED_USER_DATA; + +#define SHARED_GLOBAL_FLAGS_QPC_BYPASS_ENABLED 0x01 +#define SHARED_GLOBAL_FLAGS_QPC_BYPASS_USE_HV_PAGE 0x02 +#define SHARED_GLOBAL_FLAGS_QPC_BYPASS_DISABLE_32BIT 0x04 +#define SHARED_GLOBAL_FLAGS_QPC_BYPASS_USE_MFENCE 0x10 +#define SHARED_GLOBAL_FLAGS_QPC_BYPASS_USE_LFENCE 0x20 +#define SHARED_GLOBAL_FLAGS_QPC_BYPASS_A73_ERRATA 0x40 +#define SHARED_GLOBAL_FLAGS_QPC_BYPASS_USE_RDTSCP 0x80 diff --git a/sdk/include/wine/winnt.h b/sdk/include/wine/winnt.h new file mode 100644 index 00000000000..ccc66def0fe --- /dev/null +++ b/sdk/include/wine/winnt.h @@ -0,0 +1,164 @@ + +#pragma once + +#include + +#define CONTEXT_i386 0x10000 +#define CONTEXT_i486 0x10000 + +#define CONTEXT_I386_CONTROL (CONTEXT_i386 | 0x0001) /* SS:SP, CS:IP, FLAGS, BP */ +#define CONTEXT_I386_INTEGER (CONTEXT_i386 | 0x0002) /* AX, BX, CX, DX, SI, DI */ +#define CONTEXT_I386_SEGMENTS (CONTEXT_i386 | 0x0004) /* DS, ES, FS, GS */ +#define CONTEXT_I386_FLOATING_POINT (CONTEXT_i386 | 0x0008) /* 387 state */ +#define CONTEXT_I386_DEBUG_REGISTERS (CONTEXT_i386 | 0x0010) /* DB 0-3,6,7 */ +#define CONTEXT_I386_EXTENDED_REGISTERS (CONTEXT_i386 | 0x0020) +#define CONTEXT_I386_XSTATE (CONTEXT_i386 | 0x0040) +#define CONTEXT_I386_FULL (CONTEXT_I386_CONTROL | CONTEXT_I386_INTEGER | CONTEXT_I386_SEGMENTS) +#define CONTEXT_I386_ALL (CONTEXT_I386_FULL | CONTEXT_I386_FLOATING_POINT | CONTEXT_I386_DEBUG_REGISTERS | CONTEXT_I386_EXTENDED_REGISTERS) + +typedef WOW64_FLOATING_SAVE_AREA I386_FLOATING_SAVE_AREA; +#ifdef _M_IX86 +typedef CONTEXT I386_CONTEXT; +#else +typedef WOW64_CONTEXT I386_CONTEXT; +#endif + +#define CONTEXT_AMD64 0x100000 + +#define CONTEXT_AMD64_CONTROL (CONTEXT_AMD64 | 0x0001) +#define CONTEXT_AMD64_INTEGER (CONTEXT_AMD64 | 0x0002) +#define CONTEXT_AMD64_SEGMENTS (CONTEXT_AMD64 | 0x0004) +#define CONTEXT_AMD64_FLOATING_POINT (CONTEXT_AMD64 | 0x0008) +#define CONTEXT_AMD64_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x0010) +#define CONTEXT_AMD64_XSTATE (CONTEXT_AMD64 | 0x0040) +#define CONTEXT_AMD64_FULL (CONTEXT_AMD64_CONTROL | CONTEXT_AMD64_INTEGER | CONTEXT_AMD64_FLOATING_POINT) +#define CONTEXT_AMD64_ALL (CONTEXT_AMD64_CONTROL | CONTEXT_AMD64_INTEGER | CONTEXT_AMD64_SEGMENTS | CONTEXT_AMD64_FLOATING_POINT | CONTEXT_AMD64_DEBUG_REGISTERS) + +typedef struct DECLSPEC_ALIGN(16) _AMD64_CONTEXT { + DWORD64 P1Home; /* 000 */ + DWORD64 P2Home; /* 008 */ + DWORD64 P3Home; /* 010 */ + DWORD64 P4Home; /* 018 */ + DWORD64 P5Home; /* 020 */ + DWORD64 P6Home; /* 028 */ + + /* Control flags */ + DWORD ContextFlags; /* 030 */ + DWORD MxCsr; /* 034 */ + + /* Segment */ + WORD SegCs; /* 038 */ + WORD SegDs; /* 03a */ + WORD SegEs; /* 03c */ + WORD SegFs; /* 03e */ + WORD SegGs; /* 040 */ + WORD SegSs; /* 042 */ + DWORD EFlags; /* 044 */ + + /* Debug */ + DWORD64 Dr0; /* 048 */ + DWORD64 Dr1; /* 050 */ + DWORD64 Dr2; /* 058 */ + DWORD64 Dr3; /* 060 */ + DWORD64 Dr6; /* 068 */ + DWORD64 Dr7; /* 070 */ + + /* Integer */ + DWORD64 Rax; /* 078 */ + DWORD64 Rcx; /* 080 */ + DWORD64 Rdx; /* 088 */ + DWORD64 Rbx; /* 090 */ + DWORD64 Rsp; /* 098 */ + DWORD64 Rbp; /* 0a0 */ + DWORD64 Rsi; /* 0a8 */ + DWORD64 Rdi; /* 0b0 */ + DWORD64 R8; /* 0b8 */ + DWORD64 R9; /* 0c0 */ + DWORD64 R10; /* 0c8 */ + DWORD64 R11; /* 0d0 */ + DWORD64 R12; /* 0d8 */ + DWORD64 R13; /* 0e0 */ + DWORD64 R14; /* 0e8 */ + DWORD64 R15; /* 0f0 */ + + /* Counter */ + DWORD64 Rip; /* 0f8 */ + + /* Floating point */ + union { + XMM_SAVE_AREA32 FltSave; /* 100 */ + struct { + M128A Header[2]; /* 100 */ + M128A Legacy[8]; /* 120 */ + M128A Xmm0; /* 1a0 */ + M128A Xmm1; /* 1b0 */ + M128A Xmm2; /* 1c0 */ + M128A Xmm3; /* 1d0 */ + M128A Xmm4; /* 1e0 */ + M128A Xmm5; /* 1f0 */ + M128A Xmm6; /* 200 */ + M128A Xmm7; /* 210 */ + M128A Xmm8; /* 220 */ + M128A Xmm9; /* 230 */ + M128A Xmm10; /* 240 */ + M128A Xmm11; /* 250 */ + M128A Xmm12; /* 260 */ + M128A Xmm13; /* 270 */ + M128A Xmm14; /* 280 */ + M128A Xmm15; /* 290 */ + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + + /* Vector */ + M128A VectorRegister[26]; /* 300 */ + DWORD64 VectorControl; /* 4a0 */ + + /* Debug control */ + DWORD64 DebugControl; /* 4a8 */ + DWORD64 LastBranchToRip; /* 4b0 */ + DWORD64 LastBranchFromRip; /* 4b8 */ + DWORD64 LastExceptionToRip; /* 4c0 */ + DWORD64 LastExceptionFromRip; /* 4c8 */ +} AMD64_CONTEXT; + +typedef struct _YMMCONTEXT +{ + M128A Ymm0; + M128A Ymm1; + M128A Ymm2; + M128A Ymm3; + M128A Ymm4; + M128A Ymm5; + M128A Ymm6; + M128A Ymm7; + M128A Ymm8; + M128A Ymm9; + M128A Ymm10; + M128A Ymm11; + M128A Ymm12; + M128A Ymm13; + M128A Ymm14; + M128A Ymm15; +} +YMMCONTEXT, *PYMMCONTEXT; + +typedef struct _XSTATE +{ + ULONG64 Mask; + ULONG64 CompactionMask; + ULONG64 Reserved[6]; + YMMCONTEXT YmmContext; +} XSTATE, *PXSTATE; + +#define CONTEXT_UNWOUND_TO_CALL 0x20000000 + +#define CONTEXT_EXCEPTION_ACTIVE 0x8000000 +#define CONTEXT_SERVICE_ACTIVE 0x10000000 +#define CONTEXT_EXCEPTION_REQUEST 0x40000000 +#define CONTEXT_EXCEPTION_REPORTING 0x80000000 + +// HACK! +#ifdef __ROS_LONG64__ +#define ReadAcquire(x) ReadAcquire((volatile long*)(x)) +#define WriteRelease(x, y) WriteRelease((volatile long*)(x), (y)) +#endif diff --git a/sdk/include/wine/winternl.h b/sdk/include/wine/winternl.h index 40c1e998a24..eb42bfb968a 100644 --- a/sdk/include/wine/winternl.h +++ b/sdk/include/wine/winternl.h @@ -4818,9 +4818,7 @@ NTSYSAPI NTSTATUS WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,c NTSYSAPI NTSTATUS WINAPI NtShutdownSystem(SHUTDOWN_ACTION); NTSYSAPI NTSTATUS WINAPI NtStartProfile(HANDLE); NTSYSAPI NTSTATUS WINAPI NtStopProfile(HANDLE); -#ifndef __REACTOS__ -NTSYSAPI NTSTATUS WINAPI NtSuspendProcess(HANDLE); -#endif +/* NTSYSAPI */ NTSTATUS WINAPI NtSuspendProcess(HANDLE); NTSYSAPI NTSTATUS WINAPI NtSuspendThread(HANDLE,PULONG); NTSYSAPI NTSTATUS WINAPI NtSystemDebugControl(SYSDBG_COMMAND,PVOID,ULONG,PVOID,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtTerminateJobObject(HANDLE,NTSTATUS);