Author: tkreuzer
Date: Thu Oct 16 12:52:38 2008
New Revision: 36769
URL:
http://svn.reactos.org/svn/reactos?rev=36769&view=rev
Log:
Win32 structure cleanup part 1 / x:
- replace W32THREAD with THREADINFO, define W32THREAD like it's on Windows and make it
part of THREADINFO.
Modified:
trunk/reactos/subsystems/win32/win32k/include/callback.h
trunk/reactos/subsystems/win32/win32k/include/caret.h
trunk/reactos/subsystems/win32/win32k/include/desktop.h
trunk/reactos/subsystems/win32/win32k/include/hook.h
trunk/reactos/subsystems/win32/win32k/include/input.h
trunk/reactos/subsystems/win32/win32k/include/object.h
trunk/reactos/subsystems/win32/win32k/include/painting.h
trunk/reactos/subsystems/win32/win32k/include/win32.h
trunk/reactos/subsystems/win32/win32k/main/dllmain.c
trunk/reactos/subsystems/win32/win32k/ntuser/callback.c
trunk/reactos/subsystems/win32/win32k/ntuser/caret.c
trunk/reactos/subsystems/win32/win32k/ntuser/clipboard.c
trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c
trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c
trunk/reactos/subsystems/win32/win32k/ntuser/event.c
trunk/reactos/subsystems/win32/win32k/ntuser/focus.c
trunk/reactos/subsystems/win32/win32k/ntuser/hook.c
trunk/reactos/subsystems/win32/win32k/ntuser/input.c
trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c
trunk/reactos/subsystems/win32/win32k/ntuser/keyboard.c
trunk/reactos/subsystems/win32/win32k/ntuser/message.c
trunk/reactos/subsystems/win32/win32k/ntuser/misc.c
trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c
trunk/reactos/subsystems/win32/win32k/ntuser/painting.c
trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c
trunk/reactos/subsystems/win32/win32k/ntuser/sysparams.c
trunk/reactos/subsystems/win32/win32k/ntuser/timer.c
trunk/reactos/subsystems/win32/win32k/ntuser/useratom.c
trunk/reactos/subsystems/win32/win32k/ntuser/window.c
trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c
trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c
trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c
Modified: trunk/reactos/subsystems/win32/win32k/include/callback.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/callback.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/include/callback.h [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -46,7 +46,7 @@
WINEVENTPROC Proc);
VOID FASTCALL
-IntCleanupThreadCallbacks(PW32THREAD W32Thread);
+IntCleanupThreadCallbacks(PTHREADINFO W32Thread);
PVOID FASTCALL
IntCbAllocateMemory(ULONG Size);
Modified: trunk/reactos/subsystems/win32/win32k/include/caret.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/caret.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/include/caret.h [iso-8859-1] Thu Oct 16 12:52:38
2008
@@ -7,7 +7,7 @@
#define IDCARETTIMER (0xffff)
BOOL FASTCALL
-co_IntDestroyCaret(PW32THREAD Win32Thread);
+co_IntDestroyCaret(PTHREADINFO Win32Thread);
BOOL FASTCALL
IntSetCaretBlinkTime(UINT uMSeconds);
Modified: trunk/reactos/subsystems/win32/win32k/include/desktop.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/desktop.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/include/desktop.h [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -198,11 +198,13 @@
DesktopHeapGetUserDelta(VOID)
{
PW32HEAP_USER_MAPPING Mapping;
+ PTHREADINFO pti;
HANDLE hDesktopHeap;
ULONG_PTR Delta = 0;
- ASSERT(PsGetCurrentThreadWin32Thread()->Desktop != NULL);
- hDesktopHeap = PsGetCurrentThreadWin32Thread()->Desktop->hDesktopHeap;
+ pti = PsGetCurrentThreadWin32Thread();
+ ASSERT(pti->Desktop != NULL);
+ hDesktopHeap = pti->Desktop->hDesktopHeap;
Mapping = PsGetCurrentProcessWin32Process()->HeapMappings.Next;
while (Mapping != NULL)
Modified: trunk/reactos/subsystems/win32/win32k/include/hook.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/hook.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/include/hook.h [iso-8859-1] Thu Oct 16 12:52:38
2008
@@ -18,7 +18,7 @@
#define NB_HOOKS (WH_MAXHOOK-WH_MINHOOK+1)
#define HOOKID_TO_INDEX(HookId) (HookId - WH_MINHOOK)
#define HOOKID_TO_FLAG(HookId) (1 << ((HookId) + 1))
-#define ISITHOOKED(HookId) (PsGetCurrentThreadWin32Thread()->Hooks &
HOOKID_TO_FLAG(HookId))
+#define ISITHOOKED(HookId) (((PTHREADINFO)PsGetCurrentThreadWin32Thread())->Hooks
& HOOKID_TO_FLAG(HookId))
typedef struct tagHOOKTABLE
{
Modified: trunk/reactos/subsystems/win32/win32k/include/input.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/input.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/include/input.h [iso-8859-1] Thu Oct 16 12:52:38
2008
@@ -27,7 +27,7 @@
VOID W32kUnregisterPrimitiveMessageQueue(VOID);
PKBL W32kGetDefaultKeyLayout(VOID);
VOID FASTCALL W32kKeyProcessMessage(LPMSG Msg, PKBDTABLES KeyLayout, BYTE Prefix);
-BOOL FASTCALL IntBlockInput(PW32THREAD W32Thread, BOOL BlockIt);
+BOOL FASTCALL IntBlockInput(PTHREADINFO W32Thread, BOOL BlockIt);
BOOL FASTCALL IntMouseInput(MOUSEINPUT *mi);
BOOL FASTCALL IntKeyboardInput(KEYBDINPUT *ki);
Modified: trunk/reactos/subsystems/win32/win32k/include/object.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/object.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/include/object.h [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -87,7 +87,7 @@
static __inline VOID
UserAssertLastRef(PVOID obj, const char *file, int line)
{
- PW32THREAD W32Thread;
+ PTHREADINFO W32Thread;
PSINGLE_LIST_ENTRY ReferenceEntry;
PUSER_REFERENCE_ENTRY UserReferenceEntry;
@@ -122,7 +122,7 @@
static __inline VOID
UserRefObjectCo(PVOID obj, PUSER_REFERENCE_ENTRY UserReferenceEntry)
{
- PW32THREAD W32Thread;
+ PTHREADINFO W32Thread;
W32Thread = PsGetCurrentThreadWin32Thread();
ASSERT(W32Thread != NULL);
@@ -135,7 +135,7 @@
static __inline VOID
UserDerefObjectCo(PVOID obj)
{
- PW32THREAD W32Thread;
+ PTHREADINFO W32Thread;
PSINGLE_LIST_ENTRY ReferenceEntry;
PUSER_REFERENCE_ENTRY UserReferenceEntry;
Modified: trunk/reactos/subsystems/win32/win32k/include/painting.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/painting.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/include/painting.h [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -10,7 +10,7 @@
VOID FASTCALL
IntInvalidateWindows(PWINDOW_OBJECT Window, HRGN hRgn, ULONG Flags);
BOOL FASTCALL
-IntGetPaintMessage(HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax, PW32THREAD Thread,
+IntGetPaintMessage(HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax, PTHREADINFO Thread,
MSG *Message, BOOL Remove);
INT FASTCALL UserRealizePalette(HDC);
Modified: trunk/reactos/subsystems/win32/win32k/include/win32.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/win32.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/include/win32.h [iso-8859-1] Thu Oct 16 12:52:38
2008
@@ -3,22 +3,42 @@
#include <pshpack1.h>
+typedef struct _TL
+{
+ struct _TL* next;
+ PVOID pobj;
+ PVOID pfnFree;
+} TL, *PTL;
+
typedef struct _W32THREAD
{
+ PETHREAD pEThread;
+ ULONG RefCount;
+ PTL ptlW32;
+ PVOID pgdiDcattr;
+ PVOID pgdiBrushAttr;
+ PVOID pUMPDObjs;
+ PVOID pUMPDHeap;
+ DWORD dwEngAcquireCount;
+ PVOID pSemTable;
+ PVOID pUMPDObj;
+} W32THREAD, *PW32THREAD;
+
+typedef struct _THREADINFO
+{
+ W32THREAD W32Thread;
+
struct _USER_MESSAGE_QUEUE* MessageQueue;
LIST_ENTRY WindowListHead;
LIST_ENTRY W32CallbackListHead;
struct _KBL* KeyboardLayout;
struct _DESKTOP_OBJECT* Desktop;
HANDLE hDesktop;
- PVOID pgdiDcattr;
- PVOID pgdiBrushAttr;
- DWORD dwEngAcquireCount;
BOOLEAN IsExiting;
SINGLE_LIST_ENTRY ReferencesList;
ULONG Hooks;
PW32THREADINFO ThreadInfo;
-} W32THREAD, *PW32THREAD;
+} THREADINFO, *PTHREADINFO;
#include <poppack.h>
@@ -49,5 +69,4 @@
PW32PROCESSINFO ProcessInfo;
} W32PROCESS, *PW32PROCESS;
-
#endif /* __INCLUDE_NAPI_WIN32_H */
Modified: trunk/reactos/subsystems/win32/win32k/main/dllmain.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ma…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/main/dllmain.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/main/dllmain.c [iso-8859-1] Thu Oct 16 12:52:38
2008
@@ -174,7 +174,7 @@
PSW32THREADCALLOUTTYPE Type)
{
struct _EPROCESS *Process;
- PW32THREAD Win32Thread;
+ PTHREADINFO Win32Thread;
DECLARE_RETURN(NTSTATUS);
DPRINT("Enter Win32kThreadCallback\n");
@@ -190,12 +190,12 @@
{
/* FIXME - lock the process */
Win32Thread = ExAllocatePoolWithTag(NonPagedPool,
- sizeof(W32THREAD),
+ sizeof(THREADINFO),
TAG('W', '3', '2',
't'));
if (Win32Thread == NULL) RETURN( STATUS_NO_MEMORY);
- RtlZeroMemory(Win32Thread, sizeof(W32THREAD));
+ RtlZeroMemory(Win32Thread, sizeof(THREADINFO));
PsSetThreadWin32Thread(Thread, Win32Thread);
/* FIXME - unlock the process */
@@ -344,11 +344,11 @@
if (Thread->Tcb.Win32Thread == NULL)
{
- Thread->Tcb.Win32Thread = ExAllocatePool (NonPagedPool, sizeof(W32THREAD));
+ Thread->Tcb.Win32Thread = ExAllocatePool (NonPagedPool, sizeof(THREADINFO));
if (Thread->Tcb.Win32Thread == NULL)
return STATUS_NO_MEMORY;
- RtlZeroMemory(Thread->Tcb.Win32Thread, sizeof(W32THREAD));
+ RtlZeroMemory(Thread->Tcb.Win32Thread, sizeof(THREADINFO));
Win32kThreadCallback(Thread, PsW32ThreadCalloutInitialize);
}
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/callback.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/callback.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/callback.c [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -42,7 +42,7 @@
typedef struct _INT_CALLBACK_HEADER
{
- /* list entry in the W32THREAD structure */
+ /* list entry in the THREADINFO structure */
LIST_ENTRY ListEntry;
}
INT_CALLBACK_HEADER, *PINT_CALLBACK_HEADER;
@@ -51,7 +51,7 @@
IntCbAllocateMemory(ULONG Size)
{
PINT_CALLBACK_HEADER Mem;
- PW32THREAD W32Thread;
+ PTHREADINFO W32Thread;
if(!(Mem = ExAllocatePoolWithTag(PagedPool, Size + sizeof(INT_CALLBACK_HEADER),
TAG_CALLBACK)))
@@ -73,7 +73,7 @@
IntCbFreeMemory(PVOID Data)
{
PINT_CALLBACK_HEADER Mem;
- PW32THREAD W32Thread;
+ PTHREADINFO W32Thread;
ASSERT(Data);
@@ -90,7 +90,7 @@
}
VOID FASTCALL
-IntCleanupThreadCallbacks(PW32THREAD W32Thread)
+IntCleanupThreadCallbacks(PTHREADINFO W32Thread)
{
PLIST_ENTRY CurrentEntry;
PINT_CALLBACK_HEADER Mem;
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/caret.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/caret.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/caret.c [iso-8859-1] Thu Oct 16 12:52:38
2008
@@ -40,7 +40,7 @@
}
BOOL FASTCALL
-co_IntDestroyCaret(PW32THREAD Win32Thread)
+co_IntDestroyCaret(PTHREADINFO Win32Thread)
{
PUSER_MESSAGE_QUEUE ThreadQueue;
ThreadQueue = (PUSER_MESSAGE_QUEUE)Win32Thread->MessageQueue;
@@ -61,7 +61,8 @@
IntSetCaretBlinkTime(UINT uMSeconds)
{
/* Don't save the new value to the registry! */
- PWINSTATION_OBJECT WinStaObject =
PsGetCurrentThreadWin32Thread()->Desktop->WindowStation;
+ PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
+ PWINSTATION_OBJECT WinStaObject = pti->Desktop->WindowStation;
/* windows doesn't do this check */
if((uMSeconds < MIN_CARETBLINKRATE) || (uMSeconds > MAX_CARETBLINKRATE))
@@ -146,10 +147,12 @@
UINT FASTCALL
IntGetCaretBlinkTime(VOID)
{
+ PTHREADINFO pti;
PWINSTATION_OBJECT WinStaObject;
UINT Ret;
- WinStaObject = PsGetCurrentThreadWin32Thread()->Desktop->WindowStation;
+ pti = PsGetCurrentThreadWin32Thread();
+ WinStaObject = pti->Desktop->WindowStation;
Ret = WinStaObject->CaretBlinkRate;
if(!Ret)
@@ -171,8 +174,11 @@
BOOL FASTCALL
co_IntSetCaretPos(int X, int Y)
{
- PUSER_MESSAGE_QUEUE ThreadQueue;
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ PTHREADINFO pti;
+ PUSER_MESSAGE_QUEUE ThreadQueue;
+
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
if(ThreadQueue->CaretInfo->hWnd)
{
@@ -194,8 +200,11 @@
BOOL FASTCALL
IntSwitchCaretShowing(PVOID Info)
{
- PUSER_MESSAGE_QUEUE ThreadQueue;
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ PTHREADINFO pti;
+ PUSER_MESSAGE_QUEUE ThreadQueue;
+
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
if(ThreadQueue->CaretInfo->hWnd)
{
@@ -212,8 +221,11 @@
VOID FASTCALL
co_IntDrawCaret(HWND hWnd)
{
- PUSER_MESSAGE_QUEUE ThreadQueue;
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ PTHREADINFO pti;
+ PUSER_MESSAGE_QUEUE ThreadQueue;
+
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
if(ThreadQueue->CaretInfo->hWnd && ThreadQueue->CaretInfo->Visible
&&
ThreadQueue->CaretInfo->Showing)
@@ -228,6 +240,7 @@
BOOL FASTCALL co_UserHideCaret(PWINDOW_OBJECT Window OPTIONAL)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
if (Window) ASSERT_REFS_CO(Window);
@@ -238,7 +251,8 @@
return FALSE;
}
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
if(Window && ThreadQueue->CaretInfo->hWnd != Window->hSelf)
{
@@ -261,6 +275,7 @@
BOOL FASTCALL co_UserShowCaret(PWINDOW_OBJECT Window OPTIONAL)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
if (Window) ASSERT_REFS_CO(Window);
@@ -271,7 +286,8 @@
return FALSE;
}
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
if(Window && ThreadQueue->CaretInfo->hWnd != Window->hSelf)
{
@@ -304,6 +320,7 @@
int nHeight)
{
PWINDOW_OBJECT Window;
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
DECLARE_RETURN(BOOL);
@@ -321,7 +338,8 @@
RETURN(FALSE);
}
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
if (ThreadQueue->CaretInfo->Visible)
{
@@ -374,6 +392,7 @@
NtUserGetCaretPos(
LPPOINT lpPoint)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
NTSTATUS Status;
DECLARE_RETURN(BOOL);
@@ -381,7 +400,8 @@
DPRINT("Enter NtUserGetCaretPos\n");
UserEnterShared();
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
Status = MmCopyToCaller(lpPoint, &(ThreadQueue->CaretInfo->Pos),
sizeof(POINT));
if(!NT_SUCCESS(Status))
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/clipboard.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/clipboard.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/clipboard.c [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -15,27 +15,8 @@
#define DATA_DELAYED_RENDER 0
#define DATA_SYNTHESIZED_RENDER -1
-#define USE_WINSTA \
- PWINSTATION_OBJECT WinStaObj; \
- WinStaObj = PsGetCurrentThreadWin32Thread()->Desktop->WindowStation;
-
-#define WINSTA_ClipboardThread WinStaObj->Clipboard->ClipboardThread
-#define WINSTA_ClipboardOwnerThread WinStaObj->Clipboard->ClipboardOwnerThread
-#define WINSTA_ClipboardWindow WinStaObj->Clipboard->ClipboardWindow
-#define WINSTA_ClipboardViewerWindow WinStaObj->Clipboard->ClipboardViewerWindow
-#define WINSTA_ClipboardOwnerWindow WinStaObj->Clipboard->ClipboardOwnerWindow
-#define WINSTA_sendDrawClipboardMsg WinStaObj->Clipboard->sendDrawClipboardMsg
-#define WINSTA_recentlySetClipboard WinStaObj->Clipboard->recentlySetClipboard
-#define WINSTA_delayedRender WinStaObj->Clipboard->delayedRender
-#define WINSTA_lastEnumClipboardFormats
WinStaObj->Clipboard->lastEnumClipboardFormats
-#define WINSTA_ClipboardSequenceNumber
WinStaObj->Clipboard->ClipboardSequenceNumber
-#define WINSTA_WindowsChain WinStaObj->Clipboard->WindowsChain
-#define WINSTA_ClipboardData WinStaObj->Clipboard->ClipboardData
-#define WINSTA_synthesizedData WinStaObj->Clipboard->synthesizedData
-#define WINSTA_synthesizedDataSize WinStaObj->Clipboard->synthesizedDataSize
-
-PW32THREAD ClipboardThread;
-PW32THREAD ClipboardOwnerThread;
+PTHREADINFO ClipboardThread;
+PTHREADINFO ClipboardOwnerThread;
PWINDOW_OBJECT ClipboardWindow;
PWINDOW_OBJECT ClipboardViewerWindow;
PWINDOW_OBJECT ClipboardOwnerWindow;
@@ -1145,11 +1126,13 @@
VOID FASTCALL
IntIncrementSequenceNumber(VOID)
{
-
- USE_WINSTA
-
- WINSTA_ClipboardSequenceNumber++;
-
+ PTHREADINFO pti;
+ PWINSTATION_OBJECT WinStaObj;
+
+ pti = PsGetCurrentThreadWin32Thread();
+ WinStaObj = pti->Desktop->WindowStation;
+
+ WinStaObj->Clipboard->ClipboardSequenceNumber++;
}
DWORD STDCALL
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -1820,7 +1820,8 @@
NTAPI
UserShowCursor(BOOL bShow)
{
- PWINSTATION_OBJECT WinSta =
PsGetCurrentThreadWin32Thread()->Desktop->WindowStation;
+ PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
+ PWINSTATION_OBJECT WinSta = pti->Desktop->WindowStation;
PSYSTEM_CURSORINFO CurInfo;
HDC Screen;
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -580,7 +580,8 @@
HWND FASTCALL IntGetCurrentThreadDesktopWindow(VOID)
{
- PDESKTOP_OBJECT pdo = PsGetCurrentThreadWin32Thread()->Desktop;
+ PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
+ PDESKTOP_OBJECT pdo = pti->Desktop;
if (NULL == pdo)
{
DPRINT1("Thread doesn't have a desktop\n");
@@ -782,7 +783,8 @@
*/
BOOL IntRegisterShellHookWindow(HWND hWnd)
{
- PDESKTOP_OBJECT Desktop = PsGetCurrentThreadWin32Thread()->Desktop;
+ PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
+ PDESKTOP_OBJECT Desktop = pti->Desktop;
PSHELL_HOOK_WINDOW Entry;
DPRINT("IntRegisterShellHookWindow\n");
@@ -813,7 +815,8 @@
*/
BOOL IntDeRegisterShellHookWindow(HWND hWnd)
{
- PDESKTOP_OBJECT Desktop = PsGetCurrentThreadWin32Thread()->Desktop;
+ PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
+ PDESKTOP_OBJECT Desktop = pti->Desktop;
PSHELL_HOOK_WINDOW Current;
LIST_FOR_EACH(Current, &Desktop->ShellHookWindows, SHELL_HOOK_WINDOW,
ListEntry)
@@ -1363,7 +1366,8 @@
COLORREF color_old;
UINT align_old;
int mode_old;
- PWINSTATION_OBJECT WinSta =
PsGetCurrentThreadWin32Thread()->Desktop->WindowStation;
+ PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
+ PWINSTATION_OBJECT WinSta = pti->Desktop->WindowStation;
DECLARE_RETURN(BOOL);
UserEnterExclusive();
@@ -1674,14 +1678,14 @@
{
/* just return the handle, we queried the desktop handle of a thread running
in the same context */
- Ret = ((PW32THREAD)Thread->Tcb.Win32Thread)->hDesktop;
+ Ret = ((PTHREADINFO)Thread->Tcb.Win32Thread)->hDesktop;
ObDereferenceObject(Thread);
RETURN(Ret);
}
/* get the desktop handle and the desktop of the thread */
- if(!(hThreadDesktop = ((PW32THREAD)Thread->Tcb.Win32Thread)->hDesktop) ||
- !(DesktopObject = ((PW32THREAD)Thread->Tcb.Win32Thread)->Desktop))
+ if(!(hThreadDesktop = ((PTHREADINFO)Thread->Tcb.Win32Thread)->hDesktop) ||
+ !(DesktopObject = ((PTHREADINFO)Thread->Tcb.Win32Thread)->Desktop))
{
ObDereferenceObject(Thread);
DPRINT1("Desktop information of thread 0x%x broken!?\n", dwThreadId);
@@ -1854,7 +1858,7 @@
IN BOOL FreeOnFailure)
{
PDESKTOP_OBJECT OldDesktop;
- PW32THREAD W32Thread;
+ PTHREADINFO W32Thread;
NTSTATUS Status;
BOOL MapHeap;
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/event.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/event.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/event.c [iso-8859-1] Thu Oct 16 12:52:38
2008
@@ -105,7 +105,7 @@
/* FIXME should get timeout from
* HKEY_CURRENT_USER\Control Panel\Desktop\LowLevelHooksTimeout */
- Status =
co_MsqSendMessage(((PW32THREAD)pEH->Thread->Tcb.Win32Thread)->MessageQueue,
+ Status =
co_MsqSendMessage(((PTHREADINFO)pEH->Thread->Tcb.Win32Thread)->MessageQueue,
hwnd,
event,
0,
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/focus.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/focus.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/focus.c [iso-8859-1] Thu Oct 16 12:52:38
2008
@@ -40,8 +40,11 @@
HWND FASTCALL
IntGetThreadFocusWindow()
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
return ThreadQueue != NULL ? ThreadQueue->FocusWindow : 0;
}
@@ -312,6 +315,7 @@
HWND FASTCALL
co_IntSetActiveWindow(PWINDOW_OBJECT Window OPTIONAL)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
HWND hWndPrev;
HWND hWnd = 0;
@@ -320,7 +324,8 @@
if (Window)
ASSERT_REFS_CO(Window);
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
ASSERT(ThreadQueue != 0);
if (Window != 0)
@@ -358,12 +363,14 @@
co_IntSetFocusWindow(PWINDOW_OBJECT Window OPTIONAL)
{
HWND hWndPrev = 0;
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
if (Window)
ASSERT_REFS_CO(Window);
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
ASSERT(ThreadQueue != 0);
hWndPrev = ThreadQueue->FocusWindow;
@@ -425,8 +432,11 @@
HWND FASTCALL UserGetActiveWindow()
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
return( ThreadQueue ? ThreadQueue->ActiveWindow : 0);
}
@@ -443,6 +453,7 @@
if (hWnd)
{
PWINDOW_OBJECT Window;
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
HWND hWndPrev;
@@ -451,7 +462,8 @@
RETURN( 0);
}
- ThreadQueue =
(PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
if (Window->MessageQueue != ThreadQueue)
{
@@ -482,12 +494,14 @@
HWND STDCALL
IntGetCapture(VOID)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
DECLARE_RETURN(HWND);
DPRINT("Enter IntGetCapture\n");
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
RETURN( ThreadQueue ? ThreadQueue->CaptureWindow : 0);
CLEANUP:
@@ -501,6 +515,7 @@
HWND STDCALL
NtUserSetCapture(HWND hWnd)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
PWINDOW_OBJECT Window;
HWND hWndPrev;
@@ -509,7 +524,8 @@
DPRINT("Enter NtUserSetCapture(%x)\n", hWnd);
UserEnterExclusive();
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
if((Window = UserGetWindowObject(hWnd)))
{
@@ -545,6 +561,7 @@
{
if (Window)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
HWND hWndPrev;
PWINDOW_OBJECT TopWnd;
@@ -553,7 +570,8 @@
ASSERT_REFS_CO(Window);
- ThreadQueue =
(PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
Wnd = Window->Wnd;
if (Wnd->Style & (WS_MINIMIZE | WS_DISABLED))
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/hook.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/hook.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/hook.c [iso-8859-1] Thu Oct 16 12:52:38
2008
@@ -72,9 +72,9 @@
static PHOOK
IntAddHook(PETHREAD Thread, int HookId, BOOLEAN Global, PWINSTATION_OBJECT WinStaObj)
{
- PW32THREAD W32Thread;
+ PTHREADINFO W32Thread;
PHOOK Hook;
- PHOOKTABLE Table = Global ? GlobalHooks :
MsqGetHooks(((PW32THREAD)Thread->Tcb.Win32Thread)->MessageQueue);
+ PHOOKTABLE Table = Global ? GlobalHooks :
MsqGetHooks(((PTHREADINFO)Thread->Tcb.Win32Thread)->MessageQueue);
HANDLE Handle;
if (NULL == Table)
@@ -90,7 +90,7 @@
}
else
{
- MsqSetHooks(((PW32THREAD)Thread->Tcb.Win32Thread)->MessageQueue, Table);
+ MsqSetHooks(((PTHREADINFO)Thread->Tcb.Win32Thread)->MessageQueue, Table);
}
}
@@ -106,7 +106,7 @@
if (Thread)
{
- W32Thread = ((PW32THREAD)Thread->Tcb.Win32Thread);
+ W32Thread = ((PTHREADINFO)Thread->Tcb.Win32Thread);
ASSERT(W32Thread != NULL);
W32Thread->Hooks |= HOOKID_TO_FLAG(HookId);
if (W32Thread->ThreadInfo != NULL)
@@ -130,7 +130,7 @@
return GlobalHooks;
}
- return
MsqGetHooks(((PW32THREAD)Hook->Thread->Tcb.Win32Thread)->MessageQueue);
+ return
MsqGetHooks(((PTHREADINFO)Hook->Thread->Tcb.Win32Thread)->MessageQueue);
}
/* get the first hook in the chain */
@@ -208,7 +208,7 @@
static VOID
IntRemoveHook(PHOOK Hook, PWINSTATION_OBJECT WinStaObj, BOOL TableAlreadyLocked)
{
- PW32THREAD W32Thread;
+ PTHREADINFO W32Thread;
PHOOKTABLE Table = IntGetTable(Hook);
ASSERT(NULL != Table);
@@ -217,7 +217,7 @@
return;
}
- W32Thread = ((PW32THREAD)Hook->Thread->Tcb.Win32Thread);
+ W32Thread = ((PTHREADINFO)Hook->Thread->Tcb.Win32Thread);
ASSERT(W32Thread != NULL);
W32Thread->Hooks &= ~HOOKID_TO_FLAG(Hook->HookId);
if (W32Thread->ThreadInfo != NULL)
@@ -274,7 +274,7 @@
/* FIXME should get timeout from
* HKEY_CURRENT_USER\Control Panel\Desktop\LowLevelHooksTimeout */
- Status =
co_MsqSendMessage(((PW32THREAD)Hook->Thread->Tcb.Win32Thread)->MessageQueue,
+ Status =
co_MsqSendMessage(((PTHREADINFO)Hook->Thread->Tcb.Win32Thread)->MessageQueue,
(HWND) Code,
Hook->HookId,
wParam,
@@ -295,7 +295,7 @@
co_HOOK_CallHooks(INT HookId, INT Code, WPARAM wParam, LPARAM lParam)
{
PHOOK Hook, SaveHook;
- PW32THREAD Win32Thread;
+ PTHREADINFO pti;
PCLIENTINFO ClientInfo;
PHOOKTABLE Table;
LRESULT Result;
@@ -304,14 +304,14 @@
ASSERT(WH_MINHOOK <= HookId && HookId <= WH_MAXHOOK);
- Win32Thread = PsGetCurrentThreadWin32Thread();
- if (NULL == Win32Thread)
+ pti = PsGetCurrentThreadWin32Thread();
+ if (!pti)
{
Table = NULL;
}
else
{
- Table = MsqGetHooks(Win32Thread->MessageQueue);
+ Table = MsqGetHooks(pti->MessageQueue);
}
if (NULL == Table || ! (Hook = IntGetFirstValidHook(Table, HookId)))
@@ -361,7 +361,7 @@
}
else
{
- IntReleaseHookChain(MsqGetHooks(PsGetCurrentThreadWin32Thread()->MessageQueue),
HookId, WinStaObj);
+ IntReleaseHookChain(MsqGetHooks(pti->MessageQueue), HookId, WinStaObj);
IntReleaseHookChain(GlobalHooks, HookId, WinStaObj);
ObDereferenceObject(WinStaObj);
}
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/input.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/input.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/input.c [iso-8859-1] Thu Oct 16 12:52:38
2008
@@ -790,14 +790,14 @@
FocusThread = FocusQueue->Thread;
if (!(FocusThread && FocusThread->Tcb.Win32Thread &&
- ((PW32THREAD)FocusThread->Tcb.Win32Thread)->KeyboardLayout))
+ ((PTHREADINFO)FocusThread->Tcb.Win32Thread)->KeyboardLayout))
continue;
/* This function uses lParam to fill wParam according to the
* keyboard layout in use.
*/
W32kKeyProcessMessage(&msg,
-
((PW32THREAD)FocusThread->Tcb.Win32Thread)->KeyboardLayout->KBTables,
+
((PTHREADINFO)FocusThread->Tcb.Win32Thread)->KeyboardLayout->KBTables,
KeyInput.Flags & KEY_E0 ? 0xE0 :
(KeyInput.Flags & KEY_E1 ? 0xE1 : 0));
@@ -892,9 +892,9 @@
}
BOOL FASTCALL
-IntBlockInput(PW32THREAD W32Thread, BOOL BlockIt)
-{
- PW32THREAD OldBlock;
+IntBlockInput(PTHREADINFO W32Thread, BOOL BlockIt)
+{
+ PTHREADINFO OldBlock;
ASSERT(W32Thread);
if(!W32Thread->Desktop || (W32Thread->IsExiting && BlockIt))
@@ -1225,7 +1225,7 @@
LPINPUT pInput,
INT cbSize)
{
- PW32THREAD W32Thread;
+ PTHREADINFO W32Thread;
UINT cnt;
DECLARE_RETURN(UINT);
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -407,7 +407,7 @@
return TRUE;
}
-static PKBL co_UserActivateKbl(PW32THREAD w32Thread, PKBL pKbl, UINT Flags)
+static PKBL co_UserActivateKbl(PTHREADINFO w32Thread, PKBL pKbl, UINT Flags)
{
PKBL Prev;
@@ -444,7 +444,7 @@
{
NTSTATUS Status;
PETHREAD Thread;
- PW32THREAD W32Thread;
+ PTHREADINFO W32Thread;
HKL Ret;
if(!dwThreadId)
@@ -523,13 +523,15 @@
{
BOOL ret = FALSE;
PKBL pKbl;
+ PTHREADINFO pti;
UserEnterShared();
_SEH_TRY
{
ProbeForWrite(lpszName, KL_NAMELENGTH*sizeof(WCHAR), 1);
- pKbl = PsGetCurrentThreadWin32Thread()->KeyboardLayout;
+ pti = PsGetCurrentThreadWin32Thread();
+ pKbl = pti->KeyboardLayout;
RtlCopyMemory(lpszName, pKbl->Name, KL_NAMELENGTH*sizeof(WCHAR));
ret = TRUE;
}
@@ -614,7 +616,7 @@
{
PKBL pKbl;
HKL Ret = NULL;
- PW32THREAD pWThread;
+ PTHREADINFO pWThread;
UserEnterExclusive();
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/keyboard.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/keyboard.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/keyboard.c [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -420,6 +420,7 @@
IntTranslateKbdMessage(LPMSG lpMsg,
HKL dwhkl)
{
+ PTHREADINFO pti;
static INT dead_char = 0;
LONG UState = 0;
WCHAR wp[2] = { 0 };
@@ -428,8 +429,8 @@
BOOL Result = FALSE;
DWORD ScanCode = 0;
-
- keyLayout = PsGetCurrentThreadWin32Thread()->KeyboardLayout->KBTables;
+ pti = PsGetCurrentThreadWin32Thread();
+ keyLayout = pti->KeyboardLayout->KBTables;
if( !keyLayout )
return FALSE;
@@ -439,7 +440,7 @@
ScanCode = (lpMsg->lParam >> 16) & 0xff;
/* All messages have to contain the cursor point. */
- IntGetCursorLocation(PsGetCurrentThreadWin32Thread()->Desktop->WindowStation,
+ IntGetCursorLocation(pti->Desktop->WindowStation,
&NewMsg.pt);
UState = ToUnicodeInner(lpMsg->wParam, HIWORD(lpMsg->lParam) & 0xff,
@@ -476,14 +477,14 @@
NewMsg.wParam = dead_char;
NewMsg.lParam = lpMsg->lParam;
dead_char = 0;
- MsqPostMessage(PsGetCurrentThreadWin32Thread()->MessageQueue, &NewMsg,
FALSE, QS_KEY);
+ MsqPostMessage(pti->MessageQueue, &NewMsg, FALSE, QS_KEY);
}
NewMsg.hwnd = lpMsg->hwnd;
NewMsg.wParam = wp[0];
NewMsg.lParam = lpMsg->lParam;
DPRINT( "CHAR='%c' %04x %08x\n", wp[0], wp[0], lpMsg->lParam
);
- MsqPostMessage(PsGetCurrentThreadWin32Thread()->MessageQueue, &NewMsg,
FALSE, QS_KEY);
+ MsqPostMessage(pti->MessageQueue, &NewMsg, FALSE, QS_KEY);
Result = TRUE;
}
else if (UState == -1)
@@ -494,7 +495,7 @@
NewMsg.wParam = wp[0];
NewMsg.lParam = lpMsg->lParam;
dead_char = wp[0];
- MsqPostMessage(PsGetCurrentThreadWin32Thread()->MessageQueue, &NewMsg,
FALSE, QS_KEY);
+ MsqPostMessage(pti->MessageQueue, &NewMsg, FALSE, QS_KEY);
Result = TRUE;
}
@@ -664,13 +665,15 @@
STDCALL
NtUserMapVirtualKeyEx( UINT Code, UINT Type, DWORD keyboardId, HKL dwhkl )
{
+ PTHREADINFO pti;
PKBDTABLES keyLayout;
DECLARE_RETURN(UINT);
DPRINT("Enter NtUserMapVirtualKeyEx\n");
UserEnterExclusive();
- keyLayout = PsGetCurrentThreadWin32Thread() ?
PsGetCurrentThreadWin32Thread()->KeyboardLayout->KBTables : 0;
+ pti = PsGetCurrentThreadWin32Thread();
+ keyLayout = pti ? pti->KeyboardLayout->KBTables : 0;
if( !keyLayout )
RETURN(0);
@@ -695,6 +698,7 @@
UINT wFlags,
HKL dwhkl )
{
+ PTHREADINFO pti;
BYTE KeyStateBuf[0x100];
PWCHAR OutPwszBuff = 0;
int ret = 0;
@@ -723,14 +727,14 @@
}
RtlZeroMemory( OutPwszBuff, sizeof( WCHAR ) * cchBuff );
+ pti = PsGetCurrentThreadWin32Thread();
ret = ToUnicodeInner( wVirtKey,
wScanCode,
KeyStateBuf,
OutPwszBuff,
cchBuff,
wFlags,
- PsGetCurrentThreadWin32Thread() ?
-
PsGetCurrentThreadWin32Thread()->KeyboardLayout->KBTables : 0 );
+ pti ? pti->KeyboardLayout->KBTables : 0 );
MmCopyToCaller(pwszBuff,OutPwszBuff,sizeof(WCHAR)*cchBuff);
ExFreePool(OutPwszBuff);
@@ -757,6 +761,7 @@
STDCALL
NtUserGetKeyNameText( LONG lParam, LPWSTR lpString, int nSize )
{
+ PTHREADINFO pti;
int i;
DWORD ret = 0;
UINT CareVk = 0;
@@ -770,8 +775,8 @@
DPRINT("Enter NtUserGetKeyNameText\n");
UserEnterShared();
- keyLayout = PsGetCurrentThreadWin32Thread() ?
- PsGetCurrentThreadWin32Thread()->KeyboardLayout->KBTables : 0;
+ pti = PsGetCurrentThreadWin32Thread();
+ keyLayout = pti ? pti->KeyboardLayout->KBTables : 0;
if( !keyLayout || nSize < 1 )
RETURN(0);
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/message.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/message.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/message.c [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -303,7 +303,7 @@
{
BOOL SameThread = FALSE;
- if (Window->ti == PsGetCurrentThreadWin32Thread()->ThreadInfo)
+ if (Window->ti == ((PTHREADINFO)PsGetCurrentThreadWin32Thread())->ThreadInfo)
SameThread = TRUE;
if ((!SameThread && (Window->ti->Hooks &
HOOKID_TO_FLAG(WH_CALLWNDPROC))) ||
@@ -325,7 +325,7 @@
{
BOOL SameThread = FALSE;
- if (Window->ti == PsGetCurrentThreadWin32Thread()->ThreadInfo)
+ if (Window->ti == ((PTHREADINFO)PsGetCurrentThreadWin32Thread())->ThreadInfo)
SameThread = TRUE;
if ((!SameThread && (Window->ti->Hooks &
HOOKID_TO_FLAG(WH_CALLWNDPROCRET))) ||
@@ -740,6 +740,7 @@
UINT MsgFilterMax,
UINT RemoveMsg)
{
+ PTHREADINFO pti;
LARGE_INTEGER LargeTickCount;
PUSER_MESSAGE_QUEUE ThreadQueue;
PUSER_MESSAGE Message;
@@ -751,7 +752,8 @@
/* The queues and order in which they are checked are documented in the MSDN
article on GetMessage() */
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
/* Inspect RemoveMsg flags */
/* FIXME: The only flag we process is PM_REMOVE - processing of others must still be
implemented */
@@ -827,7 +829,7 @@
;
/* Check for paint messages. */
- if (IntGetPaintMessage(hWnd, MsgFilterMin, MsgFilterMax,
PsGetCurrentThreadWin32Thread(), &Msg->Msg, RemoveMessages))
+ if (IntGetPaintMessage(hWnd, MsgFilterMin, MsgFilterMax, pti, &Msg->Msg,
RemoveMessages))
{
Msg->FreeLParam = FALSE;
goto MsgExit;
@@ -1056,11 +1058,13 @@
UINT MsgFilterMin,
UINT MsgFilterMax)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE ThreadQueue;
NTSTATUS Status;
USER_MESSAGE Msg;
- ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
do
{
@@ -1292,14 +1296,16 @@
WPARAM wParam,
LPARAM lParam)
{
+ PTHREADINFO pti;
MSG UserModeMsg, KernelModeMsg;
LARGE_INTEGER LargeTickCount;
NTSTATUS Status;
PMSGMEMORY MsgMemoryEntry;
+ pti = PsGetCurrentThreadWin32Thread();
if (WM_QUIT == Msg)
{
- MsqPostQuitMessage(PsGetCurrentThreadWin32Thread()->MessageQueue, wParam);
+ MsqPostQuitMessage(pti->MessageQueue, wParam);
}
else if (Wnd == HWND_BROADCAST)
{
@@ -1344,7 +1350,7 @@
SetLastWin32Error(ERROR_INVALID_PARAMETER);
return FALSE;
}
-
IntGetCursorLocation(PsGetCurrentThreadWin32Thread()->Desktop->WindowStation,
+ IntGetCursorLocation(pti->Desktop->WindowStation,
&KernelModeMsg.pt);
KeQueryTickCount(&LargeTickCount);
KernelModeMsg.time = MsqCalculateMessageTime(&LargeTickCount);
@@ -1386,7 +1392,7 @@
{
MSG UserModeMsg, KernelModeMsg;
PETHREAD peThread;
- PW32THREAD pThread;
+ PTHREADINFO pThread;
NTSTATUS Status;
PMSGMEMORY MsgMemoryEntry;
DECLARE_RETURN(BOOL);
@@ -1398,7 +1404,7 @@
if( Status == STATUS_SUCCESS )
{
- pThread = (PW32THREAD)peThread->Tcb.Win32Thread;
+ pThread = (PTHREADINFO)peThread->Tcb.Win32Thread;
if( !pThread || !pThread->MessageQueue )
{
ObDereferenceObject( peThread );
@@ -1473,7 +1479,7 @@
PMSGMEMORY MsgMemoryEntry;
INT lParamBufferSize;
LPARAM lParamPacked;
- PW32THREAD Win32Thread;
+ PTHREADINFO Win32Thread;
DECLARE_RETURN(LRESULT);
USER_REFERENCE_ENTRY Ref;
@@ -1642,6 +1648,7 @@
LPARAM lParam)
{
ULONG_PTR Result;
+ PTHREADINFO pti;
PWINDOW_OBJECT Window;
if(hWnd == HWND_BROADCAST)
@@ -1654,7 +1661,8 @@
return 0;
}
- if(Window->MessageQueue != PsGetCurrentThreadWin32Thread()->MessageQueue)
+ pti = PsGetCurrentThreadWin32Thread();
+ if(Window->MessageQueue != pti->MessageQueue)
{
Result = UserPostMessage(hWnd, Msg, wParam, lParam);
}
@@ -1676,6 +1684,7 @@
PDOSENDMESSAGE dsm,
PNTUSERSENDMESSAGEINFO UnsafeInfo)
{
+ PTHREADINFO pti;
LRESULT Result = TRUE;
NTSTATUS Status;
PWINDOW_OBJECT Window;
@@ -1704,8 +1713,9 @@
/* FIXME: Check for an exiting window. */
/* See if the current thread can handle the message */
- if (HWND_BROADCAST != hWnd && NULL != PsGetCurrentThreadWin32Thread()
&&
- Window->MessageQueue == PsGetCurrentThreadWin32Thread()->MessageQueue)
+ pti = PsGetCurrentThreadWin32Thread();
+ if (HWND_BROADCAST != hWnd && NULL != pti &&
+ Window->MessageQueue == pti->MessageQueue)
{
/* Gather the information usermode needs to call the window proc directly */
Info.HandledByKernel = FALSE;
@@ -1870,6 +1880,7 @@
else
{
ULONG_PTR PResult;
+ PTHREADINFO pti;
PWINDOW_OBJECT Window;
NTSTATUS Status;
MSG UserModeMsg;
@@ -1878,7 +1889,8 @@
if(!(Window = UserGetWindowObject(hWnd))) return FALSE;
- if(Window->MessageQueue != PsGetCurrentThreadWin32Thread()->MessageQueue)
+ pti = PsGetCurrentThreadWin32Thread();
+ if(Window->MessageQueue != pti->MessageQueue)
{ // Send message w/o waiting for it.
Result = UserPostMessage(hWnd, Msg, wParam, lParam);
}
@@ -1952,13 +1964,15 @@
DWORD STDCALL
IntGetQueueStatus(BOOL ClearChanges)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE Queue;
DWORD Result;
DECLARE_RETURN(DWORD);
DPRINT("Enter IntGetQueueStatus\n");
- Queue = PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ Queue = pti->MessageQueue;
Result = MAKELONG(Queue->QueueBits, Queue->ChangedBits);
if (ClearChanges)
@@ -1976,9 +1990,9 @@
BOOL STDCALL
IntInitMessagePumpHook()
{
- if (((PW32THREAD)PsGetCurrentThread()->Tcb.Win32Thread)->ThreadInfo)
- {
-
((PW32THREAD)PsGetCurrentThread()->Tcb.Win32Thread)->ThreadInfo->ClientThreadInfo.dwcPumpHook++;
+ if (((PTHREADINFO)PsGetCurrentThread()->Tcb.Win32Thread)->ThreadInfo)
+ {
+
((PTHREADINFO)PsGetCurrentThread()->Tcb.Win32Thread)->ThreadInfo->ClientThreadInfo.dwcPumpHook++;
return TRUE;
}
return FALSE;
@@ -1987,13 +2001,13 @@
BOOL STDCALL
IntUninitMessagePumpHook()
{
- if (((PW32THREAD)PsGetCurrentThread()->Tcb.Win32Thread)->ThreadInfo)
- {
- if
(((PW32THREAD)PsGetCurrentThread()->Tcb.Win32Thread)->ThreadInfo->ClientThreadInfo.dwcPumpHook
<= 0)
+ if (((PTHREADINFO)PsGetCurrentThread()->Tcb.Win32Thread)->ThreadInfo)
+ {
+ if
(((PTHREADINFO)PsGetCurrentThread()->Tcb.Win32Thread)->ThreadInfo->ClientThreadInfo.dwcPumpHook
<= 0)
{
return FALSE;
}
-
((PW32THREAD)PsGetCurrentThread()->Tcb.Win32Thread)->ThreadInfo->ClientThreadInfo.dwcPumpHook--;
+
((PTHREADINFO)PsGetCurrentThread()->Tcb.Win32Thread)->ThreadInfo->ClientThreadInfo.dwcPumpHook--;
return TRUE;
}
return FALSE;
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/misc.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/misc.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/misc.c [iso-8859-1] Thu Oct 16 12:52:38
2008
@@ -130,12 +130,12 @@
SetLastWin32Error(ERROR_ACCESS_DENIED);
RETURN( FALSE);
}
- Desktop = ((PW32THREAD)Thread->Tcb.Win32Thread)->Desktop;
+ Desktop = ((PTHREADINFO)Thread->Tcb.Win32Thread)->Desktop;
}
else
{
/* get the foreground thread */
- PW32THREAD W32Thread = (PW32THREAD)PsGetCurrentThread()->Tcb.Win32Thread;
+ PTHREADINFO W32Thread = (PTHREADINFO)PsGetCurrentThread()->Tcb.Win32Thread;
Desktop = W32Thread->Desktop;
if(Desktop)
{
@@ -438,7 +438,7 @@
PTEB Teb;
PW32THREADINFO ti;
PCLIENTINFO ci;
- PW32THREAD W32Thread = PsGetCurrentThreadWin32Thread();
+ PTHREADINFO W32Thread = PsGetCurrentThreadWin32Thread();
if (W32Thread == NULL)
{
@@ -446,7 +446,7 @@
return NULL;
}
- /* allocate a W32THREAD structure if neccessary */
+ /* allocate a THREADINFO structure if neccessary */
if (W32Thread->ThreadInfo == NULL)
{
ti = UserHeapAlloc(sizeof(W32THREADINFO));
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/msgqueue.c [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -93,7 +93,7 @@
HANDLE FASTCALL
IntMsqSetWakeMask(DWORD WakeMask)
{
- PW32THREAD Win32Thread;
+ PTHREADINFO Win32Thread;
PUSER_MESSAGE_QUEUE MessageQueue;
HANDLE MessageEventHandle;
@@ -111,7 +111,7 @@
BOOL FASTCALL
IntMsqClearWakeMask(VOID)
{
- PW32THREAD Win32Thread;
+ PTHREADINFO Win32Thread;
PUSER_MESSAGE_QUEUE MessageQueue;
Win32Thread = PsGetCurrentThreadWin32Thread();
@@ -235,17 +235,19 @@
BOOL FASTCALL
MsqIsDblClk(LPMSG Msg, BOOL Remove)
{
+ PTHREADINFO pti;
PWINSTATION_OBJECT WinStaObject;
PSYSTEM_CURSORINFO CurInfo;
LONG dX, dY;
BOOL Res;
- if (PsGetCurrentThreadWin32Thread()->Desktop == NULL)
+ pti = PsGetCurrentThreadWin32Thread();
+ if (pti->Desktop == NULL)
{
return FALSE;
}
- WinStaObject = PsGetCurrentThreadWin32Thread()->Desktop->WindowStation;
+ WinStaObject = pti->Desktop->WindowStation;
CurInfo = IntGetSysCursorInfo(WinStaObject);
Res = (Msg->hwnd == (HWND)CurInfo->LastClkWnd) &&
@@ -811,7 +813,7 @@
MsqPostHotKeyMessage(PVOID Thread, HWND hWnd, WPARAM wParam, LPARAM lParam)
{
PWINDOW_OBJECT Window;
- PW32THREAD Win32Thread;
+ PTHREADINFO Win32Thread;
PWINSTATION_OBJECT WinSta;
MSG Mesg;
LARGE_INTEGER LargeTickCount;
@@ -1100,6 +1102,7 @@
UINT uTimeout, BOOL Block, INT HookMessage,
ULONG_PTR *uResult)
{
+ PTHREADINFO pti;
PUSER_SENT_MESSAGE Message;
KEVENT CompletionEvent;
NTSTATUS WaitStatus;
@@ -1116,7 +1119,8 @@
KeInitializeEvent(&CompletionEvent, NotificationEvent, FALSE);
- ThreadQueue = PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ ThreadQueue = pti->MessageQueue;
ASSERT(ThreadQueue != MessageQueue);
Timeout.QuadPart = (LONGLONG) uTimeout * (LONGLONG) -10000;
@@ -1603,9 +1607,11 @@
MsqSetMessageExtraInfo(LPARAM lParam)
{
LPARAM Ret;
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE MessageQueue;
- MessageQueue = PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ MessageQueue = pti->MessageQueue;
if(!MessageQueue)
{
return 0;
@@ -1620,9 +1626,11 @@
LPARAM FASTCALL
MsqGetMessageExtraInfo(VOID)
{
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE MessageQueue;
- MessageQueue = PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ MessageQueue = pti->MessageQueue;
if(!MessageQueue)
{
return 0;
@@ -1822,6 +1830,7 @@
LARGE_INTEGER LargeTickCount;
PLIST_ENTRY EnumEntry;
BOOLEAN GotMessage;
+ PTHREADINFO pti;
DPRINT("MsqGetTimerMessage queue %p msg %p restart %s\n",
MessageQueue, Msg, Restart ? "TRUE" : "FALSE");
@@ -1873,7 +1882,8 @@
Msg->lParam = (LPARAM) Timer->TimerFunc;
KeQueryTickCount(&LargeTickCount);
Msg->time = MsqCalculateMessageTime(&LargeTickCount);
- IntGetCursorLocation(PsGetCurrentThreadWin32Thread()->Desktop->WindowStation,
+ pti = PsGetCurrentThreadWin32Thread();
+ IntGetCursorLocation(pti->Desktop->WindowStation,
&Msg->pt);
if (Restart)
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/painting.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/painting.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/painting.c [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -636,7 +636,7 @@
}
HWND FASTCALL
-IntFindWindowToRepaint(PWINDOW_OBJECT Window, PW32THREAD Thread)
+IntFindWindowToRepaint(PWINDOW_OBJECT Window, PTHREADINFO Thread)
{
HWND hChild;
PWINDOW_OBJECT TempWindow;
@@ -680,7 +680,7 @@
BOOL FASTCALL
IntGetPaintMessage(HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax,
- PW32THREAD Thread, MSG *Message, BOOL Remove)
+ PTHREADINFO Thread, MSG *Message, BOOL Remove)
{
PUSER_MESSAGE_QUEUE MessageQueue = (PUSER_MESSAGE_QUEUE)Thread->MessageQueue;
@@ -721,7 +721,7 @@
ASSERT_REFS_CO(Window);
- Desktop = ((PW32THREAD)PsGetCurrentThread()->Tcb.Win32Thread)->Desktop;
+ Desktop = ((PTHREADINFO)PsGetCurrentThread()->Tcb.Win32Thread)->Desktop;
CaretInfo = ((PUSER_MESSAGE_QUEUE)Desktop->ActiveMessageQueue)->CaretInfo;
hWndCaret = CaretInfo->hWnd;
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -493,7 +493,7 @@
case TWOPARAM_ROUTINE_SETGUITHRDHANDLE:
{
- PUSER_MESSAGE_QUEUE MsgQueue =
((PW32THREAD)PsGetCurrentThread()->Tcb.Win32Thread)->MessageQueue;
+ PUSER_MESSAGE_QUEUE MsgQueue =
((PTHREADINFO)PsGetCurrentThread()->Tcb.Win32Thread)->MessageQueue;
ASSERT(MsgQueue);
RETURN( (DWORD)MsqSetStateWindow(MsgQueue, (ULONG)Param1, (HWND)Param2));
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/sysparams.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/sysparams.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/sysparams.c [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -465,7 +465,8 @@
case SPI_SETWORKAREA:
{
RECT *rc;
- PDESKTOP_OBJECT Desktop = PsGetCurrentThreadWin32Thread()->Desktop;
+ PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
+ PDESKTOP_OBJECT Desktop = pti->Desktop;
if(!Desktop)
{
@@ -482,7 +483,8 @@
}
case SPI_GETWORKAREA:
{
- PDESKTOP_OBJECT Desktop = PsGetCurrentThreadWin32Thread()->Desktop;
+ PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
+ PDESKTOP_OBJECT Desktop = pti->Desktop;
if(!Desktop)
{
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/timer.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/timer.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/timer.c [iso-8859-1] Thu Oct 16 12:52:38
2008
@@ -61,6 +61,7 @@
{
PWINDOW_OBJECT Window;
UINT_PTR Ret = 0;
+ PTHREADINFO pti;
PUSER_MESSAGE_QUEUE MessageQueue;
DPRINT("IntSetTimer wnd %x id %p elapse %u timerproc %p systemtimer %s\n",
@@ -84,7 +85,8 @@
HintIndex = ++IDEvent;
IntUnlockWindowlessTimerBitmap();
Ret = IDEvent;
- MessageQueue = PsGetCurrentThreadWin32Thread()->MessageQueue;
+ pti = PsGetCurrentThreadWin32Thread();
+ MessageQueue = pti->MessageQueue;
}
else
{
@@ -149,16 +151,18 @@
BOOL FASTCALL
IntKillTimer(HWND Wnd, UINT_PTR IDEvent, BOOL SystemTimer)
{
+ PTHREADINFO pti;
PWINDOW_OBJECT Window = NULL;
DPRINT("IntKillTimer wnd %x id %p systemtimer %s\n",
Wnd, IDEvent, SystemTimer ? "TRUE" : "FALSE");
+ pti = PsGetCurrentThreadWin32Thread();
if (Wnd)
{
Window = UserGetWindowObject(Wnd);
- if (! MsqKillTimer(PsGetCurrentThreadWin32Thread()->MessageQueue, Wnd,
+ if (! MsqKillTimer(pti->MessageQueue, Wnd,
IDEvent, SystemTimer ? WM_SYSTIMER : WM_TIMER))
{
// Give it another chance to find the timer.
@@ -175,7 +179,7 @@
/* window-less timer? */
if ((Wnd == NULL) && ! SystemTimer)
{
- if (! MsqKillTimer(PsGetCurrentThreadWin32Thread()->MessageQueue, Wnd,
+ if (! MsqKillTimer(pti->MessageQueue, Wnd,
IDEvent, SystemTimer ? WM_SYSTIMER : WM_TIMER))
{
DPRINT1("Unable to locate timer in message queue for Window-less
timer.\n");
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/useratom.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/useratom.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/useratom.c [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -33,9 +33,11 @@
IntAddAtom(LPWSTR AtomName)
{
NTSTATUS Status = STATUS_SUCCESS;
+ PTHREADINFO pti;
RTL_ATOM Atom;
- if (PsGetCurrentThreadWin32Thread()->Desktop == NULL)
+ pti = PsGetCurrentThreadWin32Thread();
+ if (pti->Desktop == NULL)
{
SetLastNtError(Status);
return (RTL_ATOM)0;
@@ -55,9 +57,11 @@
IntGetAtomName(RTL_ATOM nAtom, LPWSTR lpBuffer, ULONG nSize)
{
NTSTATUS Status = STATUS_SUCCESS;
+ PTHREADINFO pti;
ULONG Size = nSize;
- if (PsGetCurrentThreadWin32Thread()->Desktop == NULL)
+ pti = PsGetCurrentThreadWin32Thread();
+ if (pti->Desktop == NULL)
{
SetLastNtError(Status);
return 0;
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/window.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] Thu Oct 16 12:52:38
2008
@@ -363,7 +363,7 @@
*/
static LRESULT co_UserFreeWindow(PWINDOW_OBJECT Window,
PW32PROCESS ProcessData,
- PW32THREAD ThreadData,
+ PTHREADINFO ThreadData,
BOOLEAN SendMessages)
{
HWND *Children;
@@ -697,11 +697,11 @@
VOID FASTCALL
co_DestroyThreadWindows(struct _ETHREAD *Thread)
{
- PW32THREAD WThread;
+ PTHREADINFO WThread;
PLIST_ENTRY Current;
PWINDOW_OBJECT Wnd;
USER_REFERENCE_ENTRY Ref;
- WThread = (PW32THREAD)Thread->Tcb.Win32Thread;
+ WThread = (PTHREADINFO)Thread->Tcb.Win32Thread;
while (!IsListEmpty(&WThread->WindowListHead))
{
@@ -771,7 +771,7 @@
IntGetSystemMenu(PWINDOW_OBJECT Window, BOOL bRevert, BOOL RetMenu)
{
PMENU_OBJECT Menu, NewMenu = NULL, SysMenu = NULL, ret = NULL;
- PW32THREAD W32Thread;
+ PTHREADINFO W32Thread;
HMENU hNewMenu, hSysMenu;
ROSMENUITEMINFO ItemInfo;
@@ -1315,7 +1315,7 @@
else
{
PETHREAD Thread;
- PW32THREAD W32Thread;
+ PTHREADINFO W32Thread;
PLIST_ENTRY Current;
PWINDOW_OBJECT Window;
@@ -1324,7 +1324,7 @@
{
return ERROR_INVALID_PARAMETER;
}
- if(!(W32Thread = (PW32THREAD)Thread->Tcb.Win32Thread))
+ if(!(W32Thread = (PTHREADINFO)Thread->Tcb.Win32Thread))
{
ObDereferenceObject(Thread);
DPRINT("Thread is not a GUI Thread!\n");
@@ -1523,8 +1523,10 @@
DECLARE_RETURN(HWND);
BOOL HasOwner;
USER_REFERENCE_ENTRY ParentRef, Ref;
-
- ParentWindowHandle = PsGetCurrentThreadWin32Thread()->Desktop->DesktopWindow;
+ PTHREADINFO pti;
+
+ pti = PsGetCurrentThreadWin32Thread();
+ ParentWindowHandle = pti->Desktop->DesktopWindow;
OwnerWindowHandle = NULL;
if (hWndParent == HWND_MESSAGE)
@@ -1568,7 +1570,7 @@
/* Check the window station. */
ti = GetW32ThreadInfo();
- if (ti == NULL || PsGetCurrentThreadWin32Thread()->Desktop == NULL)
+ if (ti == NULL || pti->Desktop == NULL)
{
DPRINT1("Thread is not attached to a desktop! Cannot create window!\n");
RETURN( (HWND)0);
@@ -1606,7 +1608,7 @@
RETURN(NULL);
}
- WinSta = PsGetCurrentThreadWin32Thread()->Desktop->WindowStation;
+ WinSta = pti->Desktop->WindowStation;
//FIXME: Reference thread/desktop instead
ObReferenceObjectByPointer(WinSta, KernelMode, ExWindowStationObjectType, 0);
@@ -1644,11 +1646,11 @@
ObDereferenceObject(WinSta);
- if (NULL == PsGetCurrentThreadWin32Thread()->Desktop->DesktopWindow)
+ if (NULL == pti->Desktop->DesktopWindow)
{
/* If there is no desktop window yet, we must be creating it */
- PsGetCurrentThreadWin32Thread()->Desktop->DesktopWindow = hWnd;
- PsGetCurrentThreadWin32Thread()->Desktop->DesktopInfo->Wnd = Wnd;
+ pti->Desktop->DesktopWindow = hWnd;
+ pti->Desktop->DesktopInfo->Wnd = Wnd;
}
/*
@@ -1664,7 +1666,7 @@
Wnd->Instance = hInstance;
Window->hSelf = hWnd;
- Window->MessageQueue = PsGetCurrentThreadWin32Thread()->MessageQueue;
+ Window->MessageQueue = pti->MessageQueue;
IntReferenceMessageQueue(Window->MessageQueue);
Window->Parent = ParentWindow;
Wnd->Parent = ParentWindow ? ParentWindow->Wnd : NULL;
@@ -1790,7 +1792,7 @@
Wnd->IDMenu = (UINT) hMenu;
/* Insert the window into the thread's window list. */
- InsertTailList (&PsGetCurrentThreadWin32Thread()->WindowListHead,
&Window->ThreadListEntry);
+ InsertTailList (&pti->WindowListHead, &Window->ThreadListEntry);
/* Handle "CS_CLASSDC", it is tested first. */
if ((Wnd->Class->Style & CS_CLASSDC) && !(Wnd->Class->Dce)) //
One DCE per class to have CLASS.
@@ -1842,7 +1844,7 @@
PRTL_USER_PROCESS_PARAMETERS ProcessParams;
BOOL CalculatedDefPosSize = FALSE;
-
IntGetDesktopWorkArea(((PW32THREAD)Window->OwnerThread->Tcb.Win32Thread)->Desktop,
&WorkArea);
+
IntGetDesktopWorkArea(((PTHREADINFO)Window->OwnerThread->Tcb.Win32Thread)->Desktop,
&WorkArea);
rc = WorkArea;
ProcessParams = PsGetCurrentProcess()->Peb->ProcessParameters;
@@ -3650,7 +3652,7 @@
/*
* Remove extended window style bit WS_EX_TOPMOST for shell windows.
*/
- WindowStation =
((PW32THREAD)Window->OwnerThread->Tcb.Win32Thread)->Desktop->WindowStation;
+ WindowStation =
((PTHREADINFO)Window->OwnerThread->Tcb.Win32Thread)->Desktop->WindowStation;
if(WindowStation)
{
if (hWnd == WindowStation->ShellWindow || hWnd ==
WindowStation->ShellListView)
@@ -4485,6 +4487,7 @@
if ((DesktopWindow = UserGetWindowObject(IntGetDesktopWindow())))
{
+ PTHREADINFO pti;
USHORT Hit;
pt.x = X;
@@ -4494,7 +4497,8 @@
//its possible this referencing is useless, thou it shouldnt hurt...
UserRefObjectCo(DesktopWindow, &Ref);
- Hit = co_WinPosWindowFromPoint(DesktopWindow,
PsGetCurrentThreadWin32Thread()->MessageQueue, &pt, &Window);
+ pti = PsGetCurrentThreadWin32Thread();
+ Hit = co_WinPosWindowFromPoint(DesktopWindow, pti->MessageQueue, &pt,
&Window);
if(Window)
{
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c [iso-8859-1] Thu Oct 16 12:52:38
2008
@@ -257,7 +257,8 @@
if (!Wnd->InternalPosInitialized)
{
RECT WorkArea;
- PDESKTOP_OBJECT Desktop = PsGetCurrentThreadWin32Thread()->Desktop; /* Or rather
get it from the window? */
+ PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
+ PDESKTOP_OBJECT Desktop = pti->Desktop; /* Or rather get it from the window? */
Parent = Window->Parent;
if(Parent)
@@ -401,7 +402,8 @@
{
UINT XInc, YInc;
RECT WorkArea;
- PDESKTOP_OBJECT Desktop = PsGetCurrentThreadWin32Thread()->Desktop; /* Or rather
get it from the window? */
+ PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
+ PDESKTOP_OBJECT Desktop = pti->Desktop; /* Or rather get it from the window? */
IntGetDesktopWorkArea(Desktop, &WorkArea);
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c [iso-8859-1] Thu Oct 16 12:52:38
2008
@@ -918,6 +918,7 @@
UserGetProcessWindowStation(VOID)
{
NTSTATUS Status;
+ PTHREADINFO pti;
HWINSTA WinSta;
if(PsGetCurrentProcess() != CsrProcess)
@@ -927,7 +928,8 @@
else
{
DPRINT1("Should use ObFindHandleForObject\n");
- Status =
ObOpenObjectByPointer(PsGetCurrentThreadWin32Thread()->Desktop->WindowStation,
+ pti = PsGetCurrentThreadWin32Thread();
+ Status = ObOpenObjectByPointer(pti->Desktop->WindowStation,
0,
NULL,
WINSTA_ALL_ACCESS,
@@ -970,7 +972,7 @@
IntGetWinStaObj(VOID)
{
PWINSTATION_OBJECT WinStaObj;
- PW32THREAD Win32Thread;
+ PTHREADINFO Win32Thread;
PEPROCESS CurrentProcess;
/*
Modified: trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c [iso-8859-1] Thu Oct 16
12:52:38 2008
@@ -366,7 +366,7 @@
PrevProcId = _InterlockedCompareExchangePointer((PVOID*)&Entry->ProcessId,
LockedProcessId, 0);
if (PrevProcId == NULL)
{
- PW32THREAD Thread = PsGetCurrentThreadWin32Thread();
+ PW32THREAD Thread = (PW32THREAD)PsGetCurrentThreadWin32Thread();
HGDIOBJ Handle;
Entry->KernelData = newObject;
@@ -803,7 +803,7 @@
if ( (Entry->KernelData != NULL) &&
((Entry->Type << GDI_ENTRY_UPPER_SHIFT) == HandleUpper) )
{
- PW32THREAD Thread = PsGetCurrentThreadWin32Thread();
+ PW32THREAD Thread = (PW32THREAD)PsGetCurrentThreadWin32Thread();
Object = Entry->KernelData;
if (Object->cExclusiveLock == 0)
@@ -1046,7 +1046,7 @@
DPRINT("GDIOBJ_ConvertToStockObj: hObj: 0x%08x\n", hObj);
- Thread = PsGetCurrentThreadWin32Thread();
+ Thread = (PW32THREAD)PsGetCurrentThreadWin32Thread();
if (!GDI_HANDLE_IS_STOCKOBJ(hObj))
{
@@ -1172,7 +1172,7 @@
DPRINT("GDIOBJ_SetOwnership: hObj: 0x%x, NewProcess: 0x%x\n", ObjectHandle,
(NewOwner ? PsGetProcessId(NewOwner) : 0));
- Thread = PsGetCurrentThreadWin32Thread();
+ Thread = (PW32THREAD)PsGetCurrentThreadWin32Thread();
if (!GDI_HANDLE_IS_STOCKOBJ(ObjectHandle))
{
@@ -1301,7 +1301,7 @@
DPRINT("GDIOBJ_CopyOwnership: from: 0x%x, to: 0x%x\n", CopyFrom, CopyTo);
- Thread = PsGetCurrentThreadWin32Thread();
+ Thread = (PW32THREAD)PsGetCurrentThreadWin32Thread();
if (!GDI_HANDLE_IS_STOCKOBJ(CopyFrom) && !GDI_HANDLE_IS_STOCKOBJ(CopyTo))
{