15#define INVALID_THREAD_ID ((ULONG)-1)
16#define INVALID_HOTKEY ((UINT)-1)
17#define MOD_KEYS (MOD_CONTROL | MOD_SHIFT | MOD_ALT | MOD_WIN)
18#define MOD_LEFT_RIGHT (MOD_LEFT | MOD_RIGHT)
20#define LANGID_CHINESE_SIMPLIFIED MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED)
21#define LANGID_JAPANESE MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT)
22#define LANGID_KOREAN MAKELANGID(LANG_KOREAN, SUBLANG_KOREAN)
23#define LANGID_CHINESE_TRADITIONAL MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL)
24#define LANGID_NEUTRAL MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL)
49 return pti->ppi->dwImeCompatFlags;
68 ERR(
"Exception in IntGetImeHotKeyLanguageScore: TEB=%p, hKL=%p, HotKeyLangId=0x%04x\n",
NtCurrentTeb(),
hKL, HotKeyLangId);
103#define IME_CHOTKEY 0x10
104#define IME_JHOTKEY 0x30
105#define IME_KHOTKEY 0x50
106#define IME_THOTKEY 0x70
107#define IME_XHOTKEY 0x90
108 static const LANGID s_array[] =
139 for (pNode = *ppList; pNode; pNode = pNode->
pNext)
143 pNode->
pNext = pHotKey;
155 for (pNode =
pList; pNode; pNode = pNode->
pNext)
175 for (pNode =
pList; pNode; pNode = pNode->
pNext)
205 if (*ppList == pHotKey)
207 *ppList = pHotKey->
pNext;
212 for (pNode = *ppList; pNode; pNode = pNode->
pNext)
214 if (pNode->
pNext == pHotKey)
216 pNode->
pNext = pHotKey->pNext;
235 UINT nScore, nMaxScore = 0;
237 for (pNode =
pList; pNode; pNode = pNode->
pNext)
278 if (nMaxScore < nScore)
297 const BYTE *KeyState = MessageQueue->afKeyState;
298 static UINT s_uKeyUpVKey = 0;
421 ERR(
"0x%lX\n", dwAction);
446 ERR(
"Exception in NtUserGetImeHotKey: %p, %p, %p\n", lpuModifiers, lpuVirtualKey, lphKL);
464 ERR(
"Exception in NtUserGetImeHotKey: %p, %p, %p, %p\n", pNode, lpuModifiers, lpuVirtualKey, lphKL);
520 pwnd = pwnd->spwndParent;
528 HIMC hOldImc = pWnd->hImc;
546 if (pOldKL && pOldKL->
hkl != hOldKL)
571 DWORD dwRealCount = 0;
575 for (pIMC = pti->spDefaultImc; pIMC; pIMC = pIMC->
pImcNext)
577 if (dwRealCount < dwCount)
587 for (pIMC = pti->spDefaultImc; pIMC; pIMC = pIMC->
pImcNext)
589 if (dwRealCount < dwCount)
632 pKL = pWnd->
head.pti->KeyboardLayout;
745 ERR(
"!IS_IMM_MODE()\n");
773 ERR(
"Exception in NtUserBuildHimcList: %p, %p\n", phList, pdwCount);
778 if (dwCount < dwRealCount)
794 BOOL bAlphaNumeric, bKatakana, bHiragana, bFullShape, bRoman, bCharCode;
861 ERR(
"!IS_IMM_MODE()\n");
868 ERR(
"Invalid HWND %p\n",
hwnd);
872 pti = pwnd->
head.pti;
913 ERR(
"!IS_IMM_MODE()\n");
922 ppi = ptiCurrent->
ppi;
949 if (!pti || pti->
ppi != ptiCurrent->
ppi)
982 ERR(
"Invalid HWND %p\n",
hWnd);
988 ERR(
"!IS_IMM_MODE()\n");
994 if (pWnd->
head.pti->ppi == pti->
ppi)
1023 if (pInfoEx->hkl == pkl->
hkl)
1027 ERR(
"!pkl->piiex at %p\n", pkl->
hkl);
1031 *pInfoEx = *pkl->
piiex;
1036 }
while (pkl != pklHead);
1038 ERR(
"HKL not found: %p\n", pInfoEx->hkl);
1048 *pInfoEx = *pkl->
piiex;
1053 }
while (pkl != pklHead);
1055 ERR(
"wszImeFile not found: '%S'\n", pInfoEx->wszImeFile);
1059 ERR(
"SearchType: %d\n", SearchType);
1079 ERR(
"!IS_IMM_MODE()\n");
1087 ImeInfoEx = *pImeInfoEx;
1091 ERR(
"Exception in NtUserGetImeInfoEx: %p\n", pImeInfoEx);
1104 *pImeInfoEx = ImeInfoEx;
1108 ERR(
"Exception in NtUserGetImeInfoEx: %p\n", pImeInfoEx);
1132 ERR(
"!IS_IMM_MODE()\n");
1140 ERR(
"Invalid HWND: %p\n",
hWnd);
1145 if (pWnd->
head.pti->ppi == pti->
ppi)
1170 if (pkl->
hkl != pImeInfoEx->hkl)
1178 ERR(
"!pkl->piiex at %p\n", pkl->
hkl);
1183 *pkl->
piiex = *pImeInfoEx;
1186 }
while (pkl != pklHead);
1188 ERR(
"HKL not found: %p\n", pImeInfoEx->hkl);
1204 ERR(
"!IS_IMM_MODE()\n");
1211 ImeInfoEx = *pImeInfoEx;
1215 ERR(
"Exception in NtUserSetImeInfoEx: pImeInfoEx=%p\n", pImeInfoEx);
1232 PWND pwndNode, pwndNextOwner, pwndParent, pwndSibling;
1239 for (pwndNode = pwndOwner; ; pwndNode = pwndNextOwner)
1242 if (!pwndNextOwner || pwndNextOwner->
head.pti != pti)
1250 pwndNode = pwndOwner;
1254 if (!pwndParent || pwndOwner != pwndNode)
1260 for (pwndSibling = pwndParent->
spwndChild; pwndSibling; pwndSibling = pwndSibling->
spwndNext)
1262 if (pwndNode->
head.pti != pwndSibling->
head.pti)
1271 if (pwndNode == pwndSibling || (pwndSibling->
style &
WS_CHILD))
1277 pwndNode = pwndSibling;
1289 PWND pwndNode, pwndOwner, pwndLastTopMost =
NULL;
1305 for (pwndOwner = pwndNode; pwndOwner; pwndOwner = pwndOwner->
spwndOwner)
1307 if (pImeWnd == pwndOwner)
1316 pwndLastTopMost = pwndNode;
1319 return pwndLastTopMost;
1326 PWND pwndParent, pwndChild, pwndNode, pwndNext, pwndInsertAfter =
NULL;
1327 PWND pwndInsertAfterSave;
1339 if (pwndInsertBefore)
1341 for (pwndNode = pwndInsertAfter; pwndNode; pwndNode = pwndNode->
spwndNext)
1343 if (pwndNode->
spwndNext == pwndInsertBefore)
1346 if (pwndNode == pImeWnd)
1353 pwndInsertAfter = pwndNode;
1359 for (pwndNode = pwndInsertAfter; pwndNode; pwndNode = pwndNode->
spwndNext)
1365 pwndInsertAfter = pwndNode;
1370 pwndInsertAfterSave = pwndInsertAfter;
1378 pwndChild->
head.pti == pImeWnd->head.pti)
1381 for (pwndNode = pwndChild; pwndNode; pwndNode = pwndNode->
spwndOwner)
1383 if (pwndNode != pImeWnd)
1392 pwndChild->
ExStyle &= ~WS_EX_TOPMOST;
1394 if (!pwndInsertAfter)
1400 pwndInsertAfter = pwndChild;
1406 pwndChild = pwndNext;
1407 if (pwndChild && pwndChild == pwndInsertAfterSave && pwndInsertAfter)
1423 pwndInsertBefore = pwndOwner;
1435 PWND pImeWnd, pwndFocus, pwndTopLevel, pwndNode, pwndActive;
1442 ERR(
"!IS_IMM_MODE()\n");
1449 ERR(
"Not IME window: %p\n", hImeWnd);
1461 for (pwndNode = pwndTopLevel; pwndNode; pwndNode = pwndNode->
spwndOwner)
1465 pwndTopLevel =
NULL;
1475 ptiIme = pImeWnd->
head.pti;
1478 if (!pwndActive || pwndActive != pImeWnd->
spwndOwner)
1513 pDesk = pti->rpdesk;
1521 ObjHead->
pSelf = ObjHead;
1526 pti->ppi->UserHandleCount++;
1543 pti = pIMC->
head.pti;
1555 pti->
ppi->UserHandleCount--;
1593 pwndChild = pti->
rpdesk->pDeskInfo->spwnd->spwndChild;
1600 if (pWnd && pWnd->
hImc == hIMC)
1643 ERR(
"IME is disabled\n");
1663 if (dwClientImcData)
1692 ERR(
"!IS_IMM_MODE()\n");
1697 if (!dwClientImcData)
1717 BOOL bIgnoreNullImc = (
dwFlags & IACE_IGNORENOCONTEXT);
1729 if (pIMC && pti != pIMC->head.pti)
1734 (pIMC && pIMC->head.rpdesk != pWnd->head.rpdesk))
1739 if ((
dwFlags & IACE_CHILDREN) && pWnd->spwndChild)
1751 if (pwndTarget->
hImc == hIMC || (bIgnoreNullImc && !pwndTarget->
hImc))
1755 if (pwndTarget == pwndFocus)
1763 if (!bIgnoreNullImc || pWnd->hImc)
1766 if (pWnd->hImc != hIMC)
1769 if (pWnd == pwndFocus)
1792 ERR(
"!IS_IMM_MODE()\n");
1799 ERR(
"Invalid HWND: %p\n",
hWnd);
1817 if (pti->
ppi != ptiIMC->
ppi)
1823 if (pIMC->dwClientImcData)
1826 pIMC->dwClientImcData = dwValue;
1833 pIMC->hImeWnd = (
HWND)dwValue;
1837 ERR(
"Unhandled dwType: %lu\n", dwType);
1858 ERR(
"!IS_IMM_MODE()\n");
1865 ERR(
"Invalid HIMC %p\n", hIMC);
1892 ERR(
"Invalid HIMC %p\n", hIMC);
1896 ptiIMC = pIMC->
head.pti;
1920 FIXME(
"dwType: %ld\n", dwType);
1934 PWND pwnd, pwndOwner, pwndNode;
1940 if (pwnd == pwndTarget || pwnd->
head.pti != ptiTarget ||
IS_WND_MENU(pwnd))
1947 for (pwndOwner = pwnd; pwndOwner; pwndOwner = pwndOwner->
spwndOwner)
1967 if (pwndNode->
head.pti != ptiTarget)
1985 for (; pwndNode; pwndNode = pwndNode->
spwndOwner)
1987 if (pwndNode->
head.pti != ptiTarget)
2026 rpdesk = pwndTarget->head.rpdesk;
2034 for (pwndNode = pwndParent; pwndNode; pwndNode = pwndNode->
spwndParent)
2068 pwndTarget->spwndParent->head.pti->ppi != pti->
ppi)
2092 pimeui = ((
PIMEWND)pImeWnd)->pimeui;
2097 if (
IS_WND_CHILD(pwndTarget) && pwndTarget->spwndParent->head.pti != pti)
2102 ERR(
"Exception in co_IntCreateDefaultImeWindow: %p\n", pimeui);
2121 pimeui = ((
PIMEWND)pImeWnd)->pimeui;
2129 SafeImeUI = *pimeui;
2135 ERR(
"Exception in IntImeCanDestroyDefIMEforChild: %p\n", pimeui);
2140 if (pwndTarget->spwndParent ==
NULL ||
2141 pwndTarget->head.pti == pwndTarget->spwndParent->head.pti)
2146 for (pwndNode = pwndTarget; pwndNode; pwndNode = pwndNode->
spwndParent)
2148 if (pwndNode == pwndNode->
head.
rpdesk->pDeskInfo->spwnd)
2168 pimeui = ((
PIMEWND)pImeWnd)->pimeui;
2176 SafeImeUI = *pimeui;
2182 ERR(
"Exception in IntImeCanDestroyDefIME: %p\n", pimeui);
2187 if (pImeWnd->spwndOwner)
2191 if (pwndNode == pwndTarget)
2200 for (pwndNode = pwndTarget; pwndNode; pwndNode = pwndNode->
spwndOwner)
2210 if (pwndNode == pImeWnd)
2213 if (pwndNode == pImeWnd)
2217 if (pImeWnd->spwndOwner && pwndTarget != pImeWnd->spwndOwner)
2233 PWND pwndNode, pwndIMC;
2251 if (!pwndNode || pwndIme == pwndNode)
2260 pimeui = ((
PIMEWND)pwndNode)->pimeui;
2261 if (!pimeui || pimeui == (
PIMEUI)-1)
2264 if (pti && pti != pwndNode->
head.pti)
2269 if (pwndNode->
head.pti->ppi != ptiCurrent->
ppi)
2279 SafeImeUI = *pimeui;
2293 ERR(
"Exception in IntCheckImeShowStatus: %p\n", pimeui);
2348 SafeImeUI = *pimeui;
2353 ERR(
"Exception in IntSendMessageToUI: %p\n", pimeui);
2370 ERR(
"Exception in IntSendMessageToUI: %p\n", pimeui);
2395 ERR(
"Exception in IntSendMessageToUI: %p\n", pimeui);
2442 ptiIME = pImeWnd->head.pti;
2452 pimeui = ((
PIMEWND)pImeWnd)->pimeui;
2453 SafeImeUI = *pimeui;
2469 ERR(
"Exception in IntNotifyImeShowStatus: %p, %p, %p, %d, %d\n",
#define InterlockedIncrement
#define InterlockedDecrement
#define UlongToHandle(ul)
#define DBG_DEFAULT_CHANNEL(ch)
_In_ PSCSI_REQUEST_BLOCK _Out_ NTSTATUS _Inout_ BOOLEAN * Retry
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define ERROR_ACCESS_DENIED
#define ExAllocatePoolWithTag(hernya, size, tag)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
PUSER_MESSAGE_QUEUE gpqForeground
#define ISITHOOKED(HookId)
@ ImeInfoExKeyboardLayout
#define IME_CMODE_KATAKANA
#define IME_CMODE_HANJACONVERT
#define IME_THOTKEY_IME_NONIME_TOGGLE
#define MOD_IGNORE_ALL_MODIFIER
#define IME_CHOTKEY_IME_NONIME_TOGGLE
#define IME_HOTKEY_DSWITCH_LAST
#define IME_CMODE_CHARCODE
#define IME_CMODE_ALPHANUMERIC
#define IMN_OPENSTATUSWINDOW
#define IME_HOTKEY_DSWITCH_FIRST
#define IMN_CLOSESTATUSWINDOW
#define IME_CMODE_FULLSHAPE
#define IME_PROP_NEED_ALTKEY
#define IME_PROP_IGNORE_UPKEYS
DWORD NTAPI NtUserNotifyIMEStatus(_In_ HWND hwnd, _In_ BOOL fOpen, _In_ DWORD dwConversion)
BOOL NTAPI NtUserDisableThreadIme(_In_ DWORD dwThreadID)
#define WNDS_SERVERSIDEWINDOWPROC
#define UserHMGetHandle(obj)
struct _THREADINFO * GetW32ThreadInfo(VOID)
BOOL NTAPI NtUserGetImeInfoEx(_Inout_ PIMEINFOEX pImeInfoEx, _In_ IMEINFOEXCLASS SearchType)
BOOL NTAPI NtUserSetImeInfoEx(_In_ const IMEINFOEX *pImeInfoEx)
VOID NTAPI RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING, IN PCWSTR, IN INT)
#define EXCEPTION_EXECUTE_HANDLER
#define VK_DBE_ALPHANUMERIC
#define VK_DBE_ENTERCONFIGMODE
#define VK_DBE_ENTERWORDREGISTERMODE
#define VK_DBE_NOCODEINPUT
#define ExFreePoolWithTag(_P, _T)
NTSYSAPI NTSTATUS NTAPI ZwQueryDefaultLocale(_In_ BOOLEAN UserProfile, _Out_ PLCID DefaultLocaleId)
#define MAKELCID(lgid, srtid)
HANDLE NTAPI PsGetThreadId(IN PETHREAD Thread)
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
HANDLE NTAPI PsGetThreadProcessId(IN PETHREAD Thread)
LRESULT APIENTRY co_HOOK_CallHooks(INT HookId, INT Code, WPARAM wParam, LPARAM lParam)
BOOL FASTCALL IntCheckImeShowStatus(_In_ PWND pwndIme, _In_ PTHREADINFO pti)
BOOL IntFindNonImeRelatedWndOfSameThread(PWND pwndParent, PWND pwndTarget)
VOID FASTCALL IntNotifyImeShowStatus(_In_ PWND pImeWnd)
PIMC FASTCALL UserCreateInputContext(_In_ ULONG_PTR dwClientImcData)
static PIMEHOTKEY IntGetImeHotKeyByKey(_In_ PIMEHOTKEY pList, _In_ UINT uModKeys, _In_ UINT uLeftRight, _In_ UINT uVirtualKey)
static PWND FASTCALL IntGetLastTopMostWindowNoIME(_In_ PWND pImeWnd)
#define INVALID_THREAD_ID
static HIMC FASTCALL IntAssociateInputContext(_Inout_ PWND pWnd, _In_ PIMC pImc)
VOID FASTCALL IntFreeImeHotKeys(VOID)
static PIMEHOTKEY IntCheckImeHotKey(_In_ const USER_MESSAGE_QUEUE *MessageQueue, _In_ UINT uVirtualKey, _In_ LPARAM lParam)
#define LANGID_CHINESE_SIMPLIFIED
UINT FASTCALL IntImmProcessKey(_In_ PUSER_MESSAGE_QUEUE MessageQueue, _In_ PWND pWnd, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
PVOID AllocInputContextObject(_In_ PDESKTOP pDesk, _In_ PTHREADINFO pti, _In_ SIZE_T Size, _Out_ PVOID *HandleOwner)
struct tagIMEHOTKEY IMEHOTKEY
BOOL FASTCALL IntImeCanDestroyDefIMEforChild(_In_ PWND pImeWnd, _In_ PWND pwndTarget)
BOOL NTAPI NtUserDestroyInputContext(_In_ HIMC hIMC)
static PIMEHOTKEY FASTCALL IntGetImeHotKeyById(_In_ PIMEHOTKEY pList, _In_ DWORD dwHotKeyId)
LRESULT FASTCALL IntSendMessageToUI(_In_ PTHREADINFO ptiIME, _In_ PIMEUI pimeui, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
static PIMEHOTKEY APIENTRY IntGetImeHotKeyByKeyAndLang(_In_ PIMEHOTKEY pList, _In_ UINT uModKeys, _In_ UINT uLeftRight, _In_ UINT uVirtualKey, _In_ LANGID TargetLangId)
DWORD NTAPI NtUserSetThreadLayoutHandles(_In_ HKL hNewKL, _In_ HKL hOldKL)
BOOL FASTCALL IntBroadcastImeShowStatusChange(_In_ PWND pImeWnd, _In_ BOOL bShow)
static VOID FASTCALL IntImeSetTopMost(_In_ PWND pImeWnd, _In_ BOOL bTopMost, _In_ PWND pwndInsertBefore)
BOOL NTAPI NtUserSetImeOwnerWindow(_In_ HWND hImeWnd, _In_opt_ HWND hwndFocus)
static BOOL IntDestroyInputContext(_In_ PIMC pIMC)
VOID FASTCALL IntSendOpenStatusNotify(PTHREADINFO ptiIME, PIMEUI pimeui, PWND pWnd, BOOL bOpen)
PIMEHOTKEY gpImeHotKeyList
static VOID FASTCALL IntDeleteImeHotKey(_Inout_ PIMEHOTKEY *ppList, _In_ PIMEHOTKEY pHotKey)
static VOID FASTCALL IntImeCheckTopmost(_In_ PWND pImeWnd)
PWND FASTCALL co_IntCreateDefaultImeWindow(_In_ PWND pwndTarget, _In_ HINSTANCE hInst)
DWORD FASTCALL UserBuildHimcList(_Inout_ PTHREADINFO pti, _In_ DWORD dwCount, _Inout_ HIMC *phList)
PWND FASTCALL IntGetTopLevelWindow(_In_ PWND pwnd)
#define LANGID_CHINESE_TRADITIONAL
DWORD NTAPI NtUserAssociateInputContext(_In_ HWND hWnd, _In_opt_ HIMC hIMC, _In_ DWORD dwFlags)
DWORD_PTR NTAPI NtUserQueryInputContext(HIMC hIMC, DWORD dwType)
VOID FASTCALL IntImeSetFutureOwner(PWND pImeWnd, PWND pwndOwner)
DWORD NTAPI NtUserCheckImeHotKey(_In_ UINT uVirtualKey, _In_ LPARAM lParam)
static BOOL APIENTRY IntSetImeHotKey(_In_ DWORD dwHotKeyId, _In_ UINT uModifiers, _In_ UINT uVirtualKey, _In_ HKL hKL, _In_ DWORD dwAction)
BOOL FASTCALL UserGetImeInfoEx(_Inout_ PWINSTATION_OBJECT pWinSta, _Inout_ PIMEINFOEX pInfoEx, _In_ IMEINFOEXCLASS SearchType)
VOID FASTCALL IntCheckImeShowStatusInThread(_In_ PWND pImeWnd)
static DWORD FASTCALL IntGetImeCompatFlags(_In_opt_ PTHREADINFO pti)
BOOL FASTCALL IntImeCanDestroyDefIME(_In_ PWND pImeWnd, _In_ PWND pwndTarget)
static BOOL FASTCALL UserUpdateInputContext(_In_ PIMC pIMC, _In_ DWORD dwType, _In_ DWORD_PTR dwValue)
static LANGID FASTCALL IntGetImeHotKeyLangId(_In_ DWORD dwHotKeyId)
UINT FASTCALL IntGetImeHotKeyLanguageScore(_In_ HKL hKL, _In_ LANGID HotKeyLangId)
BOOL NTAPI NtUserSetAppImeLevel(_In_ HWND hWnd, _In_ DWORD dwLevel)
HKL FASTCALL IntGetActiveKeyboardLayout(VOID)
NTSTATUS NTAPI NtUserBuildHimcList(_In_ DWORD dwThreadId, _In_ DWORD dwCount, _Out_ HIMC *phList, _Out_ PDWORD pdwCount)
static DWORD FASTCALL IntAssociateInputContextEx(_In_ PWND pWnd, _In_ PIMC pIMC, _In_ DWORD dwFlags)
BOOL FASTCALL UserSetImeInfoEx(_Inout_ PWINSTATION_OBJECT pWinSta, _Inout_ PIMEINFOEX pImeInfoEx)
BOOL NTAPI NtUserSetImeHotKey(_In_ DWORD dwHotKeyId, _In_ UINT uModifiers, _In_ UINT uVirtualKey, _In_ HKL hKL, _In_ DWORD dwAction)
BOOL NTAPI NtUserGetImeHotKey(_In_ DWORD dwHotKeyId, _Out_ PUINT lpuModifiers, _Out_ PUINT lpuVirtualKey, _Out_ LPHKL lphKL)
BOOLEAN UserDestroyInputContext(_In_opt_ PVOID Object)
static VOID FASTCALL UserSetImeConversionKeyState(PTHREADINFO pti, DWORD dwConversion)
HIMC NTAPI NtUserCreateInputContext(_In_ ULONG_PTR dwClientImcData)
BOOL NTAPI NtUserUpdateInputContext(HIMC hIMC, DWORD dwType, DWORD_PTR dwValue)
struct tagIMEHOTKEY * PIMEHOTKEY
DWORD NTAPI NtUserGetAppImeLevel(_In_ HWND hWnd)
BOOL FASTCALL IntWantImeWindow(_In_ PWND pwndTarget)
VOID UserFreeInputContext(_In_opt_ PVOID Object)
static VOID FASTCALL IntAddImeHotKey(_In_ PIMEHOTKEY *ppList, _In_ PIMEHOTKEY pHotKey)
PWINSTATION_OBJECT FASTCALL IntGetProcessWindowStation(HWINSTA *phWinSta OPTIONAL)
VOID FASTCALL UserLeave(VOID)
VOID FASTCALL UserEnterShared(VOID)
VOID FASTCALL UserEnterExclusive(VOID)
static __inline VOID UserDerefObjectCo(PVOID obj)
static __inline VOID UserRefObjectCo(PVOID obj, PUSER_REFERENCE_ENTRY UserReferenceEntry)
VOID NTAPI KeDetachProcess(VOID)
VOID NTAPI KeAttachProcess(IN PKPROCESS Process)
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#define LANGIDFROMLCID(l)
#define STATUS_BUFFER_TOO_SMALL
struct _WINSTATION_OBJECT * rpwinstaParent
struct _CLIENTINFO * pClientInfo
struct tagIMC * spDefaultImc
struct tagKL * KeyboardLayout
struct _WND * spwndDefaultIme
struct _USER_MESSAGE_QUEUE * MessageQueue
struct _WND * spwndParent
ULONG_PTR dwClientImcData
struct tagIMEHOTKEY * pNext
HWND ahwnd[ANYSIZE_ARRAY]
#define RtlZeroMemory(Destination, Length)
#define STATUS_UNSUCCESSFUL
@ SETIMEHOTKEY_INITIALIZE
#define ASSERT_REFS_CO(_obj_)
BOOLEAN co_UserDestroyWindow(PVOID Object)
_Must_inspect_result_ _In_ WDFCOLLECTION _In_ WDFOBJECT Object
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFUSBDEVICE _In_opt_ WDFREQUEST _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_writes_opt_ NumCharacters PUSHORT _Inout_ PUSHORT _In_ UCHAR _In_opt_ USHORT LangID
#define IntDereferenceThreadInfo(pti)
#define IntReferenceThreadInfo(pti)
#define ValidateHwndNoErr(hwnd)
DWORD APIENTRY co_IntImmProcessKey(HWND hWnd, HKL hKL, UINT vKey, LPARAM lParam, DWORD dwHotKeyID)
PWND FASTCALL UserGetDesktopWindow(VOID)
PTHREADINFO gptiForeground
static __inline PVOID DesktopHeapAlloc(IN PDESKTOP Desktop, IN SIZE_T Bytes)
static __inline BOOL DesktopHeapFree(IN PDESKTOP Desktop, IN PVOID lpMem)
HKL FASTCALL UserGetKeyboardLayout(DWORD dwThreadId)
BOOL FASTCALL UserPostMessage(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
LRESULT FASTCALL co_IntSendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
PTHREADINFO FASTCALL IntTID2PTI(HANDLE id)
PVOID UserGetObject(PUSER_HANDLE_TABLE ht, HANDLE handle, HANDLE_TYPE type)
BOOL FASTCALL UserMarkObjectDestroy(PVOID Object)
PVOID FASTCALL UserAssignmentLock(PVOID *ppvObj, PVOID pvNew)
BOOL FASTCALL UserDereferenceObject(PVOID Object)
BOOL FASTCALL UserDeleteObject(HANDLE h, HANDLE_TYPE type)
PUSER_HANDLE_TABLE gHandleTable
PVOID FASTCALL UserCreateObject(PUSER_HANDLE_TABLE ht, PDESKTOP pDesktop, PTHREADINFO pti, HANDLE *h, HANDLE_TYPE type, ULONG size)
PVOID UserGetObjectNoErr(PUSER_HANDLE_TABLE ht, HANDLE handle, HANDLE_TYPE type)
HANDLE FASTCALL UserGetProp(_In_ PWND Window, _In_ ATOM Atom, _In_ BOOLEAN SystemProp)
VOID FASTCALL IntFreeHwndList(PWINDOWLIST pwlTarget)
VOID FASTCALL IntUnlinkWindow(PWND Wnd)
PWND FASTCALL co_UserCreateWindowEx(CREATESTRUCTW *Cs, PUNICODE_STRING ClassName, PLARGE_STRING WindowName, PVOID acbiBuffer, DWORD dwVer)
PWINDOWLIST FASTCALL IntBuildHwndList(PWND pwnd, DWORD dwFlags, PTHREADINFO pti)
VOID FASTCALL IntLinkHwnd(PWND Wnd, HWND hWndPrev)
static VOID WndSetOwner(_Inout_ PWND pwnd, _In_opt_ PWND pwndOwner)
#define IS_WND_MENU(pWnd)
#define IS_WND_IMELIKE(pWnd)
#define IS_WND_CHILD(pWnd)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
ENGAPI VOID APIENTRY EngSetLastError(_In_ ULONG iError)
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid