From: Katayama Hirofumi MZ Date: Sun, 31 Jul 2022 01:25:07 +0000 (+0900) Subject: [NTUSER] Improve WINSTATION_OBJECT compatibility (#4591) X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=6c1b65d7a4a40363316362e12aa54b9a8ec6d4eb [NTUSER] Improve WINSTATION_OBJECT compatibility (#4591) - Modify WINSTATION_OBJECT structure with inserting struct tagKL *spklList member. - Add some C_ASSERT(offsetof(WINSTATION_OBJECT, ...) == ...);. CORE-18252 --- diff --git a/win32ss/user/ntuser/winsta.h b/win32ss/user/ntuser/winsta.h index b36aaa1ce55..2918ca510fa 100644 --- a/win32ss/user/ntuser/winsta.h +++ b/win32ss/user/ntuser/winsta.h @@ -11,18 +11,16 @@ #define WSS_DYING (16) #define WSS_REALSHUTDOWN (32) +// See also: https://reactos.org/wiki/Techwiki:Win32k/WINDOWSTATION typedef struct _WINSTATION_OBJECT { DWORD dwSessionId; LIST_ENTRY DesktopListHead; PRTL_ATOM_TABLE AtomTable; - HANDLE ShellWindow; - HANDLE ShellListView; - - ULONG Flags; - struct _DESKTOP* ActiveDesktop; + ULONG Flags; + struct tagKL* spklList; PTHREADINFO ptiClipLock; PTHREADINFO ptiDrawingClipboard; PWND spwndClipOpen; @@ -40,8 +38,22 @@ typedef struct _WINSTATION_OBJECT LUID luidUser; PVOID psidUser; + /* ReactOS-specific */ + struct _DESKTOP* ActiveDesktop; + HANDLE ShellWindow; + HANDLE ShellListView; } WINSTATION_OBJECT, *PWINSTATION_OBJECT; +#ifndef _WIN64 +C_ASSERT(offsetof(WINSTATION_OBJECT, Flags) == 0x10); +C_ASSERT(offsetof(WINSTATION_OBJECT, spklList) == 0x14); +C_ASSERT(offsetof(WINSTATION_OBJECT, ptiClipLock) == 0x18); +C_ASSERT(offsetof(WINSTATION_OBJECT, ptiDrawingClipboard) == 0x1c); +C_ASSERT(offsetof(WINSTATION_OBJECT, spwndClipOpen) == 0x20); +C_ASSERT(offsetof(WINSTATION_OBJECT, spwndClipViewer) == 0x24); +C_ASSERT(offsetof(WINSTATION_OBJECT, spwndClipOwner) == 0x28); +#endif + extern WINSTATION_OBJECT *InputWindowStation; extern HANDLE gpidLogon; extern HWND hwndSAS;