[NTUSER] Implement NtUserQueryInputContext (#4227)

Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
- Modify NtUserQueryInputContext prototype.
- Implement NtUserQueryInputContext function.
- Add enum QUERY_INPUT_CONTEXT (QIC_*) to undocuser.h.
CORE-11700
This commit is contained in:
Katayama Hirofumi MZ 2022-01-01 20:56:50 +09:00 committed by GitHub
parent 0d00a5d6eb
commit cdf3b5e85a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 60 additions and 14 deletions

View file

@ -2877,11 +2877,11 @@ NtUserQueryInformationThread(
OUT PVOID ThreadInformation,
IN ULONG ThreadInformationLength);
DWORD
DWORD_PTR
NTAPI
NtUserQueryInputContext(
HIMC hIMC,
DWORD dwUnknown2);
DWORD dwType);
DWORD
NTAPI

View file

@ -647,14 +647,51 @@ Quit:
return Status;
}
DWORD
DWORD_PTR
APIENTRY
NtUserQueryInputContext(
HIMC hIMC,
DWORD dwUnknown2)
DWORD dwType)
{
TRACE("NtUserQueryInputContext(%p, 0x%lX)\n", hIMC, dwUnknown2);
return 0;
PIMC pIMC;
PTHREADINFO ptiIMC;
DWORD_PTR ret = 0;
UserEnterExclusive();
if (!IS_IMM_MODE())
goto Quit;
pIMC = UserGetObject(gHandleTable, hIMC, TYPE_INPUTCONTEXT);
if (!pIMC)
goto Quit;
ptiIMC = pIMC->head.pti;
switch (dwType)
{
case QIC_INPUTPROCESSID:
ret = (DWORD_PTR)PsGetThreadProcessId(ptiIMC->pEThread);
break;
case QIC_INPUTTHREADID:
ret = (DWORD_PTR)PsGetThreadId(ptiIMC->pEThread);
break;
case QIC_DEFAULTWINDOWIME:
if (ptiIMC->spwndDefaultIme)
ret = (DWORD_PTR)UserHMGetHandle(ptiIMC->spwndDefaultIme);
break;
case QIC_DEFAULTIMC:
if (ptiIMC->spDefaultImc)
ret = (DWORD_PTR)UserHMGetHandle(ptiIMC->spDefaultImc);
break;
}
Quit:
UserLeave();
return ret;
}
BOOL