From 848f92641525b324081a31f60b0bfba1cd5e0a82 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Sun, 13 Sep 2009 22:06:58 +0000 Subject: [PATCH] - Add query window for real process Id. svn path=/trunk/; revision=43043 --- reactos/include/reactos/win32k/ntuser.h | 1 + reactos/subsystems/win32/win32k/main/dllmain.c | 1 + reactos/subsystems/win32/win32k/ntuser/window.c | 8 +++++++- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/reactos/include/reactos/win32k/ntuser.h b/reactos/include/reactos/win32k/ntuser.h index 64b12233edd..3f4dd293181 100644 --- a/reactos/include/reactos/win32k/ntuser.h +++ b/reactos/include/reactos/win32k/ntuser.h @@ -2301,6 +2301,7 @@ NtUserQueryUserCounters( #define QUERY_WINDOW_ACTIVE 0x02 #define QUERY_WINDOW_FOCUS 0x03 #define QUERY_WINDOW_ISHUNG 0x04 +#define QUERY_WINDOW_REAL_ID 0x05 DWORD NTAPI NtUserQueryWindow( diff --git a/reactos/subsystems/win32/win32k/main/dllmain.c b/reactos/subsystems/win32/win32k/main/dllmain.c index 3d07b97a43a..51a9bd4dcce 100644 --- a/reactos/subsystems/win32/win32k/main/dllmain.c +++ b/reactos/subsystems/win32/win32k/main/dllmain.c @@ -276,6 +276,7 @@ Win32kThreadCallback(struct _ETHREAD *Thread, } Win32Thread->MessageQueue = MsqCreateMessageQueue(Thread); Win32Thread->KeyboardLayout = W32kGetDefaultKeyLayout(); + Win32Thread->pEThread = Thread; } else { diff --git a/reactos/subsystems/win32/win32k/ntuser/window.c b/reactos/subsystems/win32/win32k/ntuser/window.c index 3b7820ab2d4..d1b86184c53 100644 --- a/reactos/subsystems/win32/win32k/ntuser/window.c +++ b/reactos/subsystems/win32/win32k/ntuser/window.c @@ -4161,17 +4161,20 @@ DWORD APIENTRY NtUserQueryWindow(HWND hWnd, DWORD Index) { PWINDOW_OBJECT Window; + PWND pWnd; DWORD Result; DECLARE_RETURN(UINT); DPRINT("Enter NtUserQueryWindow\n"); UserEnterShared(); - if (!(Window = UserGetWindowObject(hWnd))) + if (!(Window = UserGetWindowObject(hWnd)) || !Window->Wnd) { RETURN( 0); } + pWnd = Window->Wnd; + switch(Index) { case QUERY_WINDOW_UNIQUE_PROCESS_ID: @@ -4194,6 +4197,9 @@ NtUserQueryWindow(HWND hWnd, DWORD Index) Result = (DWORD)MsqIsHung(Window->MessageQueue); break; + case QUERY_WINDOW_REAL_ID: + Result = (DWORD)pWnd->head.pti->pEThread->Cid.UniqueProcess; + default: Result = (DWORD)NULL; break;