From 4225717dc9d037a9435ad8a4e8723b5cb2d5385f Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Tue, 28 May 2024 22:01:48 +0900 Subject: [PATCH] [IMM32][NTUSER] Fix NtUserGetThreadState call of Imm32InquireIme There was a mistake of parameter value for NtUserGetThreadState call in Imm32InquireIme function. This affected the logon process. JIRA issue: CORE-19320 - Replace THREADSTATE_ISWINLOGON2 with THREADSTATE_ISWINLOGON in NtUserGetThreadState call in Imm32InquireIme function. - Rename THREADSTATE_ISWINLOGON2 as THREADSTATE_UNKNOWN_0x10. - Adapt NtUserGetThreadState to this change. --- dll/win32/imm32/ime.c | 2 +- win32ss/include/ntuser.h | 2 +- win32ss/user/ntuser/misc.c | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/dll/win32/imm32/ime.c b/dll/win32/imm32/ime.c index eec3632252a..6abfccb625f 100644 --- a/dll/win32/imm32/ime.c +++ b/dll/win32/imm32/ime.c @@ -51,7 +51,7 @@ BOOL APIENTRY Imm32InquireIme(PIMEDPI pImeDpi) DWORD dwSysInfoFlags = 0; LPIMEINFO pImeInfo = &pImeDpi->ImeInfo; - if (NtUserGetThreadState(THREADSTATE_ISWINLOGON2)) + if (NtUserGetThreadState(THREADSTATE_ISWINLOGON)) dwSysInfoFlags |= IME_SYSINFO_WINLOGON; if (GetWin32ClientInfo()->dwTIFlags & TIF_16BIT) diff --git a/win32ss/include/ntuser.h b/win32ss/include/ntuser.h index 6c5691bbe8d..2148546a980 100644 --- a/win32ss/include/ntuser.h +++ b/win32ss/include/ntuser.h @@ -2485,7 +2485,7 @@ enum ThreadStateRoutines THREADSTATE_IMECOMPATFLAGS, THREADSTATE_OLDKEYBOARDLAYOUT, THREADSTATE_ISWINLOGON, - THREADSTATE_ISWINLOGON2, + THREADSTATE_UNKNOWN_0x10, THREADSTATE_CHECKCONIME, THREADSTATE_GETTHREADINFO, THREADSTATE_PROGMANWINDOW, /* FIXME: Delete this HACK */ diff --git a/win32ss/user/ntuser/misc.c b/win32ss/user/ntuser/misc.c index b1da3935d67..2b909893db6 100644 --- a/win32ss/user/ntuser/misc.c +++ b/win32ss/user/ntuser/misc.c @@ -340,9 +340,11 @@ NtUserGetThreadState( ret = (ULONG_PTR)pti->hklPrev; break; case THREADSTATE_ISWINLOGON: - case THREADSTATE_ISWINLOGON2: ret = (gpidLogon == PsGetCurrentProcessId()); break; + case THREADSTATE_UNKNOWN_0x10: + FIXME("stub\n"); + break; case THREADSTATE_CHECKCONIME: ret = (IntTID2PTI(UlongToHandle(pti->rpdesk->dwConsoleThreadId)) == pti); break;