From 15c0d8608626299b963bdd2b0eb457c02e9faeff Mon Sep 17 00:00:00 2001 From: James Tabor Date: Fri, 3 Apr 2009 05:26:53 +0000 Subject: [PATCH] - Replaced fix pi and enabled test for window processes with the proper signing. Yes regedit works. svn path=/trunk/; revision=40340 --- reactos/dll/win32/user32/include/user32.h | 1 + reactos/dll/win32/user32/misc/dllmain.c | 5 ++++- reactos/dll/win32/user32/misc/misc.c | 2 +- reactos/dll/win32/user32/windows/window.c | 6 ++---- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/reactos/dll/win32/user32/include/user32.h b/reactos/dll/win32/user32/include/user32.h index c35b1514d5a..e3e398ebedb 100644 --- a/reactos/dll/win32/user32/include/user32.h +++ b/reactos/dll/win32/user32/include/user32.h @@ -48,6 +48,7 @@ BOOL WINAPI NtGdiPatBlt(HDC hdcDst, INT x, INT y, INT cx, INT cy, DWORD rop4); LONG WINAPI GdiGetCharDimensions(HDC, LPTEXTMETRICW, LONG *); BOOL FASTCALL IsMetaFile(HDC); +extern PPROCESSINFO g_ppi; extern ULONG_PTR g_ulSharedDelta; extern PSERVERINFO g_psi; diff --git a/reactos/dll/win32/user32/misc/dllmain.c b/reactos/dll/win32/user32/misc/dllmain.c index 6ece35511c5..b775791bad8 100644 --- a/reactos/dll/win32/user32/misc/dllmain.c +++ b/reactos/dll/win32/user32/misc/dllmain.c @@ -8,6 +8,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(user32); static ULONG User32TlsIndex; HINSTANCE User32Instance; +PPROCESSINFO g_ppi = NULL; PUSER_HANDLE_TABLE gHandleTable = NULL; PUSER_HANDLE_ENTRY gHandleEntries = NULL; PSERVERINFO g_psi = NULL; @@ -234,6 +235,7 @@ Init(VOID) &UserCon, sizeof(USERCONNECT)); + g_ppi = GetWin32ClientInfo()->ppi; // Snapshot PI, used as pointer only! g_ulSharedDelta = UserCon.siClient.ulSharedDelta; g_psi = SharedPtrToUser(UserCon.siClient.psi); gHandleTable = SharedPtrToUser(UserCon.siClient.aheList); @@ -333,12 +335,13 @@ GetConnected(VOID) if ((PW32THREADINFO)NtCurrentTeb()->Win32ThreadInfo == NULL) NtUserGetThreadState(THREADSTATE_GETTHREADINFO); - if (g_psi) return; + if (g_psi && g_ppi) return; NtUserProcessConnect( NtCurrentProcess(), &UserCon, sizeof(USERCONNECT)); + g_ppi = GetWin32ClientInfo()->ppi; g_ulSharedDelta = UserCon.siClient.ulSharedDelta; g_psi = SharedPtrToUser(UserCon.siClient.psi); gHandleTable = SharedPtrToUser(UserCon.siClient.aheList); diff --git a/reactos/dll/win32/user32/misc/misc.c b/reactos/dll/win32/user32/misc/misc.c index c0a54528313..7ce85849f17 100644 --- a/reactos/dll/win32/user32/misc/misc.c +++ b/reactos/dll/win32/user32/misc/misc.c @@ -431,7 +431,7 @@ FASTCALL ValidateCallProc(HANDLE hCallProc) { PCALLPROC CallProc = ValidateHandle(hCallProc, VALIDATE_TYPE_CALLPROC); - if (CallProc != NULL && CallProc->pi == GetWin32ClientInfo()->ppi) + if (CallProc != NULL && CallProc->pi == g_ppi) return CallProc; return NULL; diff --git a/reactos/dll/win32/user32/windows/window.c b/reactos/dll/win32/user32/windows/window.c index e41b0416d9a..e09da341768 100644 --- a/reactos/dll/win32/user32/windows/window.c +++ b/reactos/dll/win32/user32/windows/window.c @@ -1126,8 +1126,7 @@ GetWindowTextA(HWND hWnd, LPSTR lpString, int nMaxCount) _SEH2_TRY { -// if (TestWindowProcess( Wnd)) - if (Wnd->pi != GetWin32ClientInfo()->ppi) + if (!TestWindowProcess( Wnd)) { if (nMaxCount > 0) { @@ -1217,8 +1216,7 @@ GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount) _SEH2_TRY { -// if (TestWindowProcess( Wnd)) - if (Wnd->pi != GetWin32ClientInfo()->ppi) + if (!TestWindowProcess( Wnd)) { if (nMaxCount > 0) {