From 1a4732703cd4ebedecbbdf384bb6e3a5a745dbec Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Tue, 15 Jan 2019 20:32:23 +0900 Subject: [PATCH] [WIN32SS][USER32] Make IsHungAppWindow check FNID (#1245) CORE-11944 --- win32ss/user/user32/windows/window.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/win32ss/user/user32/windows/window.c b/win32ss/user/user32/windows/window.c index 4485c24d824..ccf0670bc16 100644 --- a/win32ss/user/user32/windows/window.c +++ b/win32ss/user/user32/windows/window.c @@ -1841,13 +1841,16 @@ InternalGetWindowText(HWND hWnd, LPWSTR lpString, int nMaxCount) BOOL WINAPI IsHungAppWindow(HWND hwnd) { + PWND Window; UNICODE_STRING ClassName; WCHAR szClass[16]; static const UNICODE_STRING GhostClass = RTL_CONSTANT_STRING(L"Ghost"); /* Ghost is a hung window */ RtlInitEmptyUnicodeString(&ClassName, szClass, sizeof(szClass)); - if (NtUserGetClassName(hwnd, FALSE, &ClassName) && + Window = ValidateHwnd(hwnd); + if (Window && Window->fnid == FNID_GHOST && + NtUserGetClassName(hwnd, FALSE, &ClassName) && RtlEqualUnicodeString(&ClassName, &GhostClass, TRUE)) { return TRUE;