mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 12:55:43 +00:00
[NTUSER] ime.c: Add SAL2 annotations and tracing (#8070)
Refactoring and improving trace. JIRA issue: CORE-19455 - Add SAL2 annotations to function parameters. - Add and improve tracing (TRACE and ERR) for easier debugging.
This commit is contained in:
parent
0947a64a90
commit
67a4cf93be
5 changed files with 277 additions and 151 deletions
|
@ -1244,11 +1244,18 @@ typedef struct _IMEWND
|
|||
|
||||
DWORD
|
||||
NTAPI
|
||||
NtUserAssociateInputContext(HWND hWnd, HIMC hIMC, DWORD dwFlags);
|
||||
NtUserAssociateInputContext(
|
||||
_In_ HWND hWnd,
|
||||
_In_opt_ HIMC hIMC,
|
||||
_In_ DWORD dwFlags);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
NtUserBuildHimcList(DWORD dwThreadId, DWORD dwCount, HIMC *phList, LPDWORD pdwCount);
|
||||
NtUserBuildHimcList(
|
||||
_In_ DWORD dwThreadId,
|
||||
_In_ DWORD dwCount,
|
||||
_Out_ HIMC *phList,
|
||||
_Out_ PDWORD pdwCount);
|
||||
|
||||
DWORD
|
||||
NTAPI
|
||||
|
@ -1768,8 +1775,8 @@ NtUserCheckWindowThreadDesktop(
|
|||
DWORD
|
||||
NTAPI
|
||||
NtUserCheckImeHotKey(
|
||||
UINT uVirtualKey,
|
||||
LPARAM lParam);
|
||||
_In_ UINT uVirtualKey,
|
||||
_In_ LPARAM lParam);
|
||||
|
||||
HWND NTAPI
|
||||
NtUserChildWindowFromPointEx(
|
||||
|
@ -1861,7 +1868,7 @@ NtUserCreateDesktop(
|
|||
|
||||
HIMC
|
||||
NTAPI
|
||||
NtUserCreateInputContext(ULONG_PTR dwClientImcData);
|
||||
NtUserCreateInputContext(_In_ ULONG_PTR dwClientImcData);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
|
@ -1955,7 +1962,7 @@ NtUserDestroyCursor(
|
|||
|
||||
BOOL
|
||||
NTAPI
|
||||
NtUserDestroyInputContext(HIMC hIMC);
|
||||
NtUserDestroyInputContext(_In_ HIMC hIMC);
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
|
@ -1965,7 +1972,7 @@ NtUserDestroyWindow(
|
|||
BOOL
|
||||
NTAPI
|
||||
NtUserDisableThreadIme(
|
||||
DWORD dwThreadID);
|
||||
_In_ DWORD dwThreadID);
|
||||
|
||||
LRESULT
|
||||
NTAPI
|
||||
|
@ -2148,7 +2155,7 @@ NtUserGetAncestor(
|
|||
|
||||
DWORD
|
||||
NTAPI
|
||||
NtUserGetAppImeLevel(HWND hWnd);
|
||||
NtUserGetAppImeLevel(_In_ HWND hWnd);
|
||||
|
||||
SHORT
|
||||
NTAPI
|
||||
|
@ -2312,16 +2319,17 @@ NtUserGetIconSize(
|
|||
|
||||
BOOL
|
||||
NTAPI
|
||||
NtUserGetImeHotKey(DWORD dwHotKeyId,
|
||||
LPUINT lpuModifiers,
|
||||
LPUINT lpuVirtualKey,
|
||||
LPHKL lphKL);
|
||||
NtUserGetImeHotKey(
|
||||
_In_ DWORD dwHotKeyId,
|
||||
_Out_ PUINT lpuModifiers,
|
||||
_Out_ PUINT lpuVirtualKey,
|
||||
_Out_ LPHKL lphKL);
|
||||
|
||||
BOOL
|
||||
NTAPI
|
||||
NtUserGetImeInfoEx(
|
||||
PIMEINFOEX pImeInfoEx,
|
||||
IMEINFOEXCLASS SearchType);
|
||||
_Inout_ PIMEINFOEX pImeInfoEx,
|
||||
_In_ IMEINFOEXCLASS SearchType);
|
||||
|
||||
DWORD
|
||||
NTAPI
|
||||
|
@ -2703,7 +2711,10 @@ NtUserMoveWindow(
|
|||
|
||||
DWORD
|
||||
NTAPI
|
||||
NtUserNotifyIMEStatus(HWND hwnd, BOOL fOpen, DWORD dwConversion);
|
||||
NtUserNotifyIMEStatus(
|
||||
_In_ HWND hwnd,
|
||||
_In_ BOOL fOpen,
|
||||
_In_ DWORD dwConversion);
|
||||
|
||||
BOOL
|
||||
NTAPI
|
||||
|
@ -3120,20 +3131,20 @@ NtUserSetFocus(
|
|||
BOOL
|
||||
NTAPI
|
||||
NtUserSetImeHotKey(
|
||||
DWORD dwHotKeyId,
|
||||
UINT uModifiers,
|
||||
UINT uVirtualKey,
|
||||
HKL hKL,
|
||||
DWORD dwAction);
|
||||
_In_ DWORD dwHotKeyId,
|
||||
_In_ UINT uModifiers,
|
||||
_In_ UINT uVirtualKey,
|
||||
_In_ HKL hKL,
|
||||
_In_ DWORD dwAction);
|
||||
|
||||
BOOL
|
||||
NTAPI
|
||||
NtUserSetImeInfoEx(
|
||||
PIMEINFOEX pImeInfoEx);
|
||||
_In_ const IMEINFOEX *pImeInfoEx);
|
||||
|
||||
BOOL
|
||||
NTAPI
|
||||
NtUserSetImeOwnerWindow(HWND hImeWnd, HWND hwndFocus);
|
||||
NtUserSetImeOwnerWindow(_In_ HWND hImeWnd, _In_opt_ HWND hwndFocus);
|
||||
|
||||
DWORD
|
||||
NTAPI
|
||||
|
@ -3257,7 +3268,9 @@ NtUserSetSystemTimer(
|
|||
|
||||
DWORD
|
||||
NTAPI
|
||||
NtUserSetThreadLayoutHandles(HKL hNewKL, HKL hOldKL);
|
||||
NtUserSetThreadLayoutHandles(
|
||||
_In_ HKL hNewKL,
|
||||
_In_ HKL hOldKL);
|
||||
|
||||
UINT_PTR
|
||||
NTAPI
|
||||
|
|
|
@ -37,11 +37,11 @@ typedef struct tagIMEHOTKEY
|
|||
HKL hKL;
|
||||
} IMEHOTKEY, *PIMEHOTKEY;
|
||||
|
||||
PIMEHOTKEY gpImeHotKeyList = NULL; // Win: gpImeHotKeyListHeader
|
||||
LCID glcidSystem = 0; // Win: glcidSystem
|
||||
PIMEHOTKEY gpImeHotKeyList = NULL;
|
||||
LCID glcidSystem = 0;
|
||||
|
||||
// Win: GetAppImeCompatFlags
|
||||
DWORD FASTCALL IntGetImeCompatFlags(PTHREADINFO pti)
|
||||
static DWORD FASTCALL
|
||||
IntGetImeCompatFlags(_In_opt_ PTHREADINFO pti)
|
||||
{
|
||||
if (!pti)
|
||||
pti = PsGetCurrentThreadWin32Thread();
|
||||
|
@ -49,8 +49,10 @@ DWORD FASTCALL IntGetImeCompatFlags(PTHREADINFO pti)
|
|||
return pti->ppi->dwImeCompatFlags;
|
||||
}
|
||||
|
||||
// Win: GetLangIdMatchLevel
|
||||
UINT FASTCALL IntGetImeHotKeyLanguageScore(HKL hKL, LANGID HotKeyLangId)
|
||||
UINT FASTCALL
|
||||
IntGetImeHotKeyLanguageScore(
|
||||
_In_ HKL hKL,
|
||||
_In_ LANGID HotKeyLangId)
|
||||
{
|
||||
LCID lcid;
|
||||
|
||||
|
@ -63,7 +65,7 @@ UINT FASTCALL IntGetImeHotKeyLanguageScore(HKL hKL, LANGID HotKeyLangId)
|
|||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ERR("%p\n", NtCurrentTeb());
|
||||
ERR("Exception in IntGetImeHotKeyLanguageScore: TEB=%p, hKL=%p, HotKeyLangId=0x%04x\n", NtCurrentTeb(), hKL, HotKeyLangId);
|
||||
lcid = MAKELCID(LANGID_NEUTRAL, SORT_DEFAULT);
|
||||
}
|
||||
_SEH2_END;
|
||||
|
@ -80,8 +82,8 @@ UINT FASTCALL IntGetImeHotKeyLanguageScore(HKL hKL, LANGID HotKeyLangId)
|
|||
return 0;
|
||||
}
|
||||
|
||||
// Win: GetActiveHKL
|
||||
HKL FASTCALL IntGetActiveKeyboardLayout(VOID)
|
||||
HKL FASTCALL
|
||||
IntGetActiveKeyboardLayout(VOID)
|
||||
{
|
||||
PTHREADINFO pti;
|
||||
|
||||
|
@ -95,8 +97,8 @@ HKL FASTCALL IntGetActiveKeyboardLayout(VOID)
|
|||
return UserGetKeyboardLayout(0);
|
||||
}
|
||||
|
||||
// Win: GetHotKeyLangID
|
||||
static LANGID FASTCALL IntGetImeHotKeyLangId(DWORD dwHotKeyId)
|
||||
static LANGID FASTCALL
|
||||
IntGetImeHotKeyLangId(_In_ DWORD dwHotKeyId)
|
||||
{
|
||||
#define IME_CHOTKEY 0x10
|
||||
#define IME_JHOTKEY 0x30
|
||||
|
@ -121,8 +123,10 @@ static LANGID FASTCALL IntGetImeHotKeyLangId(DWORD dwHotKeyId)
|
|||
return LANGID_NEUTRAL;
|
||||
}
|
||||
|
||||
// Win: AddImeHotKey
|
||||
static VOID FASTCALL IntAddImeHotKey(PIMEHOTKEY *ppList, PIMEHOTKEY pHotKey)
|
||||
static VOID FASTCALL
|
||||
IntAddImeHotKey(
|
||||
_In_ PIMEHOTKEY *ppList,
|
||||
_In_ PIMEHOTKEY pHotKey)
|
||||
{
|
||||
PIMEHOTKEY pNode;
|
||||
|
||||
|
@ -142,8 +146,10 @@ static VOID FASTCALL IntAddImeHotKey(PIMEHOTKEY *ppList, PIMEHOTKEY pHotKey)
|
|||
}
|
||||
}
|
||||
|
||||
// Win: FindImeHotKeyByID
|
||||
static PIMEHOTKEY FASTCALL IntGetImeHotKeyById(PIMEHOTKEY pList, DWORD dwHotKeyId)
|
||||
static PIMEHOTKEY FASTCALL
|
||||
IntGetImeHotKeyById(
|
||||
_In_ PIMEHOTKEY pList,
|
||||
_In_ DWORD dwHotKeyId)
|
||||
{
|
||||
PIMEHOTKEY pNode;
|
||||
for (pNode = pList; pNode; pNode = pNode->pNext)
|
||||
|
@ -154,10 +160,13 @@ static PIMEHOTKEY FASTCALL IntGetImeHotKeyById(PIMEHOTKEY pList, DWORD dwHotKeyI
|
|||
return NULL;
|
||||
}
|
||||
|
||||
// Win: FindImeHotKeyByKeyWithLang
|
||||
static PIMEHOTKEY APIENTRY
|
||||
IntGetImeHotKeyByKeyAndLang(PIMEHOTKEY pList, UINT uModKeys, UINT uLeftRight,
|
||||
UINT uVirtualKey, LANGID TargetLangId)
|
||||
IntGetImeHotKeyByKeyAndLang(
|
||||
_In_ PIMEHOTKEY pList,
|
||||
_In_ UINT uModKeys,
|
||||
_In_ UINT uLeftRight,
|
||||
_In_ UINT uVirtualKey,
|
||||
_In_ LANGID TargetLangId)
|
||||
{
|
||||
PIMEHOTKEY pNode;
|
||||
LANGID LangID;
|
||||
|
@ -186,8 +195,10 @@ IntGetImeHotKeyByKeyAndLang(PIMEHOTKEY pList, UINT uModKeys, UINT uLeftRight,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
// Win: DeleteImeHotKey
|
||||
static VOID FASTCALL IntDeleteImeHotKey(PIMEHOTKEY *ppList, PIMEHOTKEY pHotKey)
|
||||
static VOID FASTCALL
|
||||
IntDeleteImeHotKey(
|
||||
_Inout_ PIMEHOTKEY *ppList,
|
||||
_In_ PIMEHOTKEY pHotKey)
|
||||
{
|
||||
PIMEHOTKEY pNode;
|
||||
|
||||
|
@ -209,9 +220,12 @@ static VOID FASTCALL IntDeleteImeHotKey(PIMEHOTKEY *ppList, PIMEHOTKEY pHotKey)
|
|||
}
|
||||
}
|
||||
|
||||
// Win: FindImeHotKeyByKey
|
||||
PIMEHOTKEY
|
||||
IntGetImeHotKeyByKey(PIMEHOTKEY pList, UINT uModKeys, UINT uLeftRight, UINT uVirtualKey)
|
||||
static PIMEHOTKEY
|
||||
IntGetImeHotKeyByKey(
|
||||
_In_ PIMEHOTKEY pList,
|
||||
_In_ UINT uModKeys,
|
||||
_In_ UINT uLeftRight,
|
||||
_In_ UINT uVirtualKey)
|
||||
{
|
||||
PIMEHOTKEY pNode, ret = NULL;
|
||||
PTHREADINFO pti = GetW32ThreadInfo();
|
||||
|
@ -271,8 +285,11 @@ IntGetImeHotKeyByKey(PIMEHOTKEY pList, UINT uModKeys, UINT uLeftRight, UINT uVir
|
|||
return ret;
|
||||
}
|
||||
|
||||
// Win: CheckImeHotKey
|
||||
PIMEHOTKEY IntCheckImeHotKey(PUSER_MESSAGE_QUEUE MessageQueue, UINT uVirtualKey, LPARAM lParam)
|
||||
static PIMEHOTKEY
|
||||
IntCheckImeHotKey(
|
||||
_In_ const USER_MESSAGE_QUEUE *MessageQueue,
|
||||
_In_ UINT uVirtualKey,
|
||||
_In_ LPARAM lParam)
|
||||
{
|
||||
PIMEHOTKEY pHotKey;
|
||||
UINT uModifiers;
|
||||
|
@ -322,8 +339,8 @@ PIMEHOTKEY IntCheckImeHotKey(PUSER_MESSAGE_QUEUE MessageQueue, UINT uVirtualKey,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
// Win: FreeImeHotKeys
|
||||
VOID FASTCALL IntFreeImeHotKeys(VOID)
|
||||
VOID FASTCALL
|
||||
IntFreeImeHotKeys(VOID)
|
||||
{
|
||||
PIMEHOTKEY pNode, pNext;
|
||||
for (pNode = gpImeHotKeyList; pNode; pNode = pNext)
|
||||
|
@ -334,9 +351,13 @@ VOID FASTCALL IntFreeImeHotKeys(VOID)
|
|||
gpImeHotKeyList = NULL;
|
||||
}
|
||||
|
||||
// Win: SetImeHotKey
|
||||
static BOOL APIENTRY
|
||||
IntSetImeHotKey(DWORD dwHotKeyId, UINT uModifiers, UINT uVirtualKey, HKL hKL, DWORD dwAction)
|
||||
IntSetImeHotKey(
|
||||
_In_ DWORD dwHotKeyId,
|
||||
_In_ UINT uModifiers,
|
||||
_In_ UINT uVirtualKey,
|
||||
_In_ HKL hKL,
|
||||
_In_ DWORD dwAction)
|
||||
{
|
||||
PIMEHOTKEY pNode;
|
||||
LANGID LangId;
|
||||
|
@ -403,7 +424,11 @@ IntSetImeHotKey(DWORD dwHotKeyId, UINT uModifiers, UINT uVirtualKey, HKL hKL, DW
|
|||
}
|
||||
|
||||
BOOL NTAPI
|
||||
NtUserGetImeHotKey(DWORD dwHotKeyId, LPUINT lpuModifiers, LPUINT lpuVirtualKey, LPHKL lphKL)
|
||||
NtUserGetImeHotKey(
|
||||
_In_ DWORD dwHotKeyId,
|
||||
_Out_ PUINT lpuModifiers,
|
||||
_Out_ PUINT lpuVirtualKey,
|
||||
_Out_ LPHKL lphKL)
|
||||
{
|
||||
PIMEHOTKEY pNode = NULL;
|
||||
|
||||
|
@ -418,7 +443,7 @@ NtUserGetImeHotKey(DWORD dwHotKeyId, LPUINT lpuModifiers, LPUINT lpuVirtualKey,
|
|||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ERR("%p, %p, %p\n", lpuModifiers, lpuVirtualKey, lphKL);
|
||||
ERR("Exception in NtUserGetImeHotKey: %p, %p, %p\n", lpuModifiers, lpuVirtualKey, lphKL);
|
||||
_SEH2_YIELD(goto Quit);
|
||||
}
|
||||
_SEH2_END;
|
||||
|
@ -436,7 +461,7 @@ NtUserGetImeHotKey(DWORD dwHotKeyId, LPUINT lpuModifiers, LPUINT lpuVirtualKey,
|
|||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ERR("%p, %p, %p, %p\n", pNode, lpuModifiers, lpuVirtualKey, lphKL);
|
||||
ERR("Exception in NtUserGetImeHotKey: %p, %p, %p, %p\n", pNode, lpuModifiers, lpuVirtualKey, lphKL);
|
||||
pNode = NULL;
|
||||
}
|
||||
_SEH2_END;
|
||||
|
@ -449,11 +474,11 @@ Quit:
|
|||
BOOL
|
||||
NTAPI
|
||||
NtUserSetImeHotKey(
|
||||
DWORD dwHotKeyId,
|
||||
UINT uModifiers,
|
||||
UINT uVirtualKey,
|
||||
HKL hKL,
|
||||
DWORD dwAction)
|
||||
_In_ DWORD dwHotKeyId,
|
||||
_In_ UINT uModifiers,
|
||||
_In_ UINT uVirtualKey,
|
||||
_In_ HKL hKL,
|
||||
_In_ DWORD dwAction)
|
||||
{
|
||||
BOOL ret;
|
||||
UserEnterExclusive();
|
||||
|
@ -464,7 +489,9 @@ NtUserSetImeHotKey(
|
|||
|
||||
DWORD
|
||||
NTAPI
|
||||
NtUserCheckImeHotKey(UINT uVirtualKey, LPARAM lParam)
|
||||
NtUserCheckImeHotKey(
|
||||
_In_ UINT uVirtualKey,
|
||||
_In_ LPARAM lParam)
|
||||
{
|
||||
PIMEHOTKEY pNode;
|
||||
DWORD ret = INVALID_HOTKEY;
|
||||
|
@ -483,8 +510,8 @@ Quit:
|
|||
return ret;
|
||||
}
|
||||
|
||||
// Win: GetTopLevelWindow
|
||||
PWND FASTCALL IntGetTopLevelWindow(PWND pwnd)
|
||||
PWND FASTCALL
|
||||
IntGetTopLevelWindow(_In_ PWND pwnd)
|
||||
{
|
||||
if (!pwnd)
|
||||
return NULL;
|
||||
|
@ -495,8 +522,8 @@ PWND FASTCALL IntGetTopLevelWindow(PWND pwnd)
|
|||
return pwnd;
|
||||
}
|
||||
|
||||
// Win: AssociateInputContext
|
||||
HIMC FASTCALL IntAssociateInputContext(PWND pWnd, PIMC pImc)
|
||||
static HIMC FASTCALL
|
||||
IntAssociateInputContext(_Inout_ PWND pWnd, _In_ PIMC pImc)
|
||||
{
|
||||
HIMC hOldImc = pWnd->hImc;
|
||||
pWnd->hImc = (pImc ? UserHMGetHandle(pImc) : NULL);
|
||||
|
@ -505,7 +532,9 @@ HIMC FASTCALL IntAssociateInputContext(PWND pWnd, PIMC pImc)
|
|||
|
||||
DWORD
|
||||
NTAPI
|
||||
NtUserSetThreadLayoutHandles(HKL hNewKL, HKL hOldKL)
|
||||
NtUserSetThreadLayoutHandles(
|
||||
_In_ HKL hNewKL,
|
||||
_In_ HKL hOldKL)
|
||||
{
|
||||
PTHREADINFO pti;
|
||||
PKL pOldKL, pNewKL;
|
||||
|
@ -532,8 +561,11 @@ Quit:
|
|||
return 0;
|
||||
}
|
||||
|
||||
// Win: BuildHimcList
|
||||
DWORD FASTCALL UserBuildHimcList(PTHREADINFO pti, DWORD dwCount, HIMC *phList)
|
||||
DWORD FASTCALL
|
||||
UserBuildHimcList(
|
||||
_Inout_ PTHREADINFO pti,
|
||||
_In_ DWORD dwCount,
|
||||
_Inout_ HIMC *phList)
|
||||
{
|
||||
PIMC pIMC;
|
||||
DWORD dwRealCount = 0;
|
||||
|
@ -566,8 +598,12 @@ DWORD FASTCALL UserBuildHimcList(PTHREADINFO pti, DWORD dwCount, HIMC *phList)
|
|||
}
|
||||
|
||||
UINT FASTCALL
|
||||
IntImmProcessKey(PUSER_MESSAGE_QUEUE MessageQueue, PWND pWnd, UINT uMsg,
|
||||
WPARAM wParam, LPARAM lParam)
|
||||
IntImmProcessKey(
|
||||
_In_ PUSER_MESSAGE_QUEUE MessageQueue,
|
||||
_In_ PWND pWnd,
|
||||
_In_ UINT uMsg,
|
||||
_In_ WPARAM wParam,
|
||||
_In_ LPARAM lParam)
|
||||
{
|
||||
UINT uVirtualKey, ret;
|
||||
DWORD dwHotKeyId;
|
||||
|
@ -626,7 +662,12 @@ IntImmProcessKey(PUSER_MESSAGE_QUEUE MessageQueue, PWND pWnd, UINT uMsg,
|
|||
}
|
||||
|
||||
if (!IS_IMM_MODE())
|
||||
{
|
||||
if (dwHotKeyId != INVALID_HOTKEY)
|
||||
WARN("!IS_IMM_MODE(): dwHotKeyId 0x%X\n", dwHotKeyId);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (dwHotKeyId == INVALID_HOTKEY)
|
||||
{
|
||||
|
@ -687,7 +728,11 @@ IntImmProcessKey(PUSER_MESSAGE_QUEUE MessageQueue, PWND pWnd, UINT uMsg,
|
|||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
NtUserBuildHimcList(DWORD dwThreadId, DWORD dwCount, HIMC *phList, LPDWORD pdwCount)
|
||||
NtUserBuildHimcList(
|
||||
_In_ DWORD dwThreadId,
|
||||
_In_ DWORD dwCount,
|
||||
_Out_ HIMC *phList,
|
||||
_Out_ PDWORD pdwCount)
|
||||
{
|
||||
NTSTATUS ret = STATUS_UNSUCCESSFUL;
|
||||
DWORD dwRealCount;
|
||||
|
@ -725,7 +770,7 @@ NtUserBuildHimcList(DWORD dwThreadId, DWORD dwCount, HIMC *phList, LPDWORD pdwCo
|
|||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ERR("%p, %p\n", phList, pdwCount);
|
||||
ERR("Exception in NtUserBuildHimcList: %p, %p\n", phList, pdwCount);
|
||||
_SEH2_YIELD(goto Quit);
|
||||
}
|
||||
_SEH2_END;
|
||||
|
@ -740,8 +785,8 @@ Quit:
|
|||
return ret;
|
||||
}
|
||||
|
||||
// Win: SetConvMode
|
||||
static VOID FASTCALL UserSetImeConversionKeyState(PTHREADINFO pti, DWORD dwConversion)
|
||||
static VOID FASTCALL
|
||||
UserSetImeConversionKeyState(PTHREADINFO pti, DWORD dwConversion)
|
||||
{
|
||||
HKL hKL;
|
||||
LANGID LangID;
|
||||
|
@ -800,7 +845,10 @@ static VOID FASTCALL UserSetImeConversionKeyState(PTHREADINFO pti, DWORD dwConve
|
|||
|
||||
DWORD
|
||||
NTAPI
|
||||
NtUserNotifyIMEStatus(HWND hwnd, BOOL fOpen, DWORD dwConversion)
|
||||
NtUserNotifyIMEStatus(
|
||||
_In_ HWND hwnd,
|
||||
_In_ BOOL fOpen,
|
||||
_In_ DWORD dwConversion)
|
||||
{
|
||||
PWND pwnd;
|
||||
PTHREADINFO pti;
|
||||
|
@ -816,7 +864,10 @@ NtUserNotifyIMEStatus(HWND hwnd, BOOL fOpen, DWORD dwConversion)
|
|||
|
||||
pwnd = ValidateHwndNoErr(hwnd);
|
||||
if (!pwnd)
|
||||
{
|
||||
ERR("Invalid HWND %p\n", hwnd);
|
||||
goto Quit;
|
||||
}
|
||||
|
||||
pti = pwnd->head.pti;
|
||||
if (!pti || !gptiForeground)
|
||||
|
@ -849,8 +900,7 @@ Quit:
|
|||
|
||||
BOOL
|
||||
NTAPI
|
||||
NtUserDisableThreadIme(
|
||||
DWORD dwThreadID)
|
||||
NtUserDisableThreadIme(_In_ DWORD dwThreadID)
|
||||
{
|
||||
PTHREADINFO pti, ptiCurrent;
|
||||
PPROCESSINFO ppi;
|
||||
|
@ -918,7 +968,7 @@ Quit:
|
|||
|
||||
DWORD
|
||||
NTAPI
|
||||
NtUserGetAppImeLevel(HWND hWnd)
|
||||
NtUserGetAppImeLevel(_In_ HWND hWnd)
|
||||
{
|
||||
DWORD ret = 0;
|
||||
PWND pWnd;
|
||||
|
@ -928,7 +978,10 @@ NtUserGetAppImeLevel(HWND hWnd)
|
|||
|
||||
pWnd = ValidateHwndNoErr(hWnd);
|
||||
if (!pWnd)
|
||||
{
|
||||
ERR("Invalid HWND %p\n", hWnd);
|
||||
goto Quit;
|
||||
}
|
||||
|
||||
if (!IS_IMM_MODE())
|
||||
{
|
||||
|
@ -955,7 +1008,10 @@ UserGetImeInfoEx(
|
|||
PKL pkl, pklHead;
|
||||
|
||||
if (!pWinSta || !gspklBaseLayout)
|
||||
{
|
||||
ERR("pWinSta:%p, gspklBaseLayout:%p\n", pWinSta, gspklBaseLayout);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
pkl = pklHead = gspklBaseLayout;
|
||||
|
||||
|
@ -978,6 +1034,8 @@ UserGetImeInfoEx(
|
|||
|
||||
pkl = pkl->pklNext;
|
||||
} while (pkl != pklHead);
|
||||
|
||||
ERR("HKL not found: %p\n", pInfoEx->hkl);
|
||||
}
|
||||
else if (SearchType == ImeInfoExImeFileName)
|
||||
{
|
||||
|
@ -993,6 +1051,8 @@ UserGetImeInfoEx(
|
|||
|
||||
pkl = pkl->pklNext;
|
||||
} while (pkl != pklHead);
|
||||
|
||||
ERR("wszImeFile not found: '%S'\n", pInfoEx->wszImeFile);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1028,7 +1088,7 @@ NtUserGetImeInfoEx(
|
|||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ERR("%p\n", pImeInfoEx);
|
||||
ERR("Exception in NtUserGetImeInfoEx: %p\n", pImeInfoEx);
|
||||
_SEH2_YIELD(goto Quit);
|
||||
}
|
||||
_SEH2_END;
|
||||
|
@ -1045,7 +1105,7 @@ NtUserGetImeInfoEx(
|
|||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ERR("%p\n", pImeInfoEx);
|
||||
ERR("Exception in NtUserGetImeInfoEx: %p\n", pImeInfoEx);
|
||||
ret = FALSE;
|
||||
}
|
||||
_SEH2_END;
|
||||
|
@ -1057,7 +1117,9 @@ Quit:
|
|||
|
||||
BOOL
|
||||
NTAPI
|
||||
NtUserSetAppImeLevel(HWND hWnd, DWORD dwLevel)
|
||||
NtUserSetAppImeLevel(
|
||||
_In_ HWND hWnd,
|
||||
_In_ DWORD dwLevel)
|
||||
{
|
||||
BOOL ret = FALSE;
|
||||
PWND pWnd;
|
||||
|
@ -1074,7 +1136,10 @@ NtUserSetAppImeLevel(HWND hWnd, DWORD dwLevel)
|
|||
|
||||
pWnd = ValidateHwndNoErr(hWnd);
|
||||
if (!pWnd)
|
||||
{
|
||||
ERR("Invalid HWND: %p\n", hWnd);
|
||||
goto Quit;
|
||||
}
|
||||
|
||||
pti = PsGetCurrentThreadWin32Thread();
|
||||
if (pWnd->head.pti->ppi == pti->ppi)
|
||||
|
@ -1085,7 +1150,6 @@ Quit:
|
|||
return ret;
|
||||
}
|
||||
|
||||
// Win: SetImeInfoEx
|
||||
BOOL FASTCALL
|
||||
UserSetImeInfoEx(
|
||||
_Inout_ PWINSTATION_OBJECT pWinSta,
|
||||
|
@ -1094,7 +1158,10 @@ UserSetImeInfoEx(
|
|||
PKL pklHead, pkl;
|
||||
|
||||
if (!pWinSta || !gspklBaseLayout)
|
||||
{
|
||||
ERR("pWinSta:%p, gspklBaseLayout:%p\n", pWinSta, gspklBaseLayout);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
pkl = pklHead = gspklBaseLayout;
|
||||
|
||||
|
@ -1118,12 +1185,13 @@ UserSetImeInfoEx(
|
|||
return TRUE;
|
||||
} while (pkl != pklHead);
|
||||
|
||||
ERR("HKL not found: %p\n", pImeInfoEx->hkl);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL
|
||||
NTAPI
|
||||
NtUserSetImeInfoEx(PIMEINFOEX pImeInfoEx)
|
||||
NtUserSetImeInfoEx(_In_ const IMEINFOEX *pImeInfoEx)
|
||||
{
|
||||
BOOL ret = FALSE;
|
||||
IMEINFOEX ImeInfoEx;
|
||||
|
@ -1144,7 +1212,7 @@ NtUserSetImeInfoEx(PIMEINFOEX pImeInfoEx)
|
|||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ERR("%p\n", pImeInfoEx);
|
||||
ERR("Exception in NtUserSetImeInfoEx: pImeInfoEx=%p\n", pImeInfoEx);
|
||||
_SEH2_YIELD(goto Quit);
|
||||
}
|
||||
_SEH2_END;
|
||||
|
@ -1158,8 +1226,8 @@ Quit:
|
|||
}
|
||||
|
||||
// Choose the preferred owner of the IME window.
|
||||
// Win: ImeSetFutureOwner
|
||||
VOID FASTCALL IntImeSetFutureOwner(PWND pImeWnd, PWND pwndOwner)
|
||||
VOID FASTCALL
|
||||
IntImeSetFutureOwner(PWND pImeWnd, PWND pwndOwner)
|
||||
{
|
||||
PWND pwndNode, pwndNextOwner, pwndParent, pwndSibling;
|
||||
PTHREADINFO pti = pImeWnd->head.pti;
|
||||
|
@ -1215,8 +1283,8 @@ VOID FASTCALL IntImeSetFutureOwner(PWND pImeWnd, PWND pwndOwner)
|
|||
}
|
||||
|
||||
// Get the last non-IME-like top-most window on the desktop.
|
||||
// Win: GetLastTopMostWindowNoIME
|
||||
PWND FASTCALL IntGetLastTopMostWindowNoIME(PWND pImeWnd)
|
||||
static PWND FASTCALL
|
||||
IntGetLastTopMostWindowNoIME(_In_ PWND pImeWnd)
|
||||
{
|
||||
PWND pwndNode, pwndOwner, pwndLastTopMost = NULL;
|
||||
BOOL bFound;
|
||||
|
@ -1252,8 +1320,8 @@ PWND FASTCALL IntGetLastTopMostWindowNoIME(PWND pImeWnd)
|
|||
}
|
||||
|
||||
// Adjust the ordering of the windows around the IME window.
|
||||
// Win: ImeSetTopMost
|
||||
VOID FASTCALL IntImeSetTopMost(PWND pImeWnd, BOOL bTopMost, PWND pwndInsertBefore)
|
||||
static VOID FASTCALL
|
||||
IntImeSetTopMost(_In_ PWND pImeWnd, _In_ BOOL bTopMost, _In_ PWND pwndInsertBefore)
|
||||
{
|
||||
PWND pwndParent, pwndChild, pwndNode, pwndNext, pwndInsertAfter = NULL;
|
||||
PWND pwndInsertAfterSave;
|
||||
|
@ -1342,8 +1410,8 @@ VOID FASTCALL IntImeSetTopMost(PWND pImeWnd, BOOL bTopMost, PWND pwndInsertBefor
|
|||
}
|
||||
|
||||
// Make the IME window top-most if necessary.
|
||||
// Win: ImeCheckTopmost
|
||||
VOID FASTCALL IntImeCheckTopmost(PWND pImeWnd)
|
||||
static VOID FASTCALL
|
||||
IntImeCheckTopmost(_In_ PWND pImeWnd)
|
||||
{
|
||||
BOOL bTopMost;
|
||||
PWND pwndOwner = pImeWnd->spwndOwner, pwndInsertBefore = NULL;
|
||||
|
@ -1359,7 +1427,9 @@ VOID FASTCALL IntImeCheckTopmost(PWND pImeWnd)
|
|||
}
|
||||
|
||||
BOOL NTAPI
|
||||
NtUserSetImeOwnerWindow(HWND hImeWnd, HWND hwndFocus)
|
||||
NtUserSetImeOwnerWindow(
|
||||
_In_ HWND hImeWnd,
|
||||
_In_opt_ HWND hwndFocus)
|
||||
{
|
||||
BOOL ret = FALSE;
|
||||
PWND pImeWnd, pwndFocus, pwndTopLevel, pwndNode, pwndActive;
|
||||
|
@ -1375,7 +1445,10 @@ NtUserSetImeOwnerWindow(HWND hImeWnd, HWND hwndFocus)
|
|||
|
||||
pImeWnd = ValidateHwndNoErr(hImeWnd);
|
||||
if (!pImeWnd || pImeWnd->fnid != FNID_IME)
|
||||
{
|
||||
ERR("Not IME window: %p\n", hImeWnd);
|
||||
goto Quit;
|
||||
}
|
||||
|
||||
pwndFocus = ValidateHwndNoErr(hwndFocus);
|
||||
if (pwndFocus)
|
||||
|
@ -1425,10 +1498,11 @@ Quit:
|
|||
}
|
||||
|
||||
PVOID
|
||||
AllocInputContextObject(PDESKTOP pDesk,
|
||||
PTHREADINFO pti,
|
||||
SIZE_T Size,
|
||||
PVOID* HandleOwner)
|
||||
AllocInputContextObject(
|
||||
_In_ PDESKTOP pDesk,
|
||||
_In_ PTHREADINFO pti,
|
||||
_In_ SIZE_T Size,
|
||||
_Out_ PVOID* HandleOwner)
|
||||
{
|
||||
PTHRDESKHEAD ObjHead;
|
||||
|
||||
|
@ -1454,7 +1528,8 @@ AllocInputContextObject(PDESKTOP pDesk,
|
|||
return ObjHead;
|
||||
}
|
||||
|
||||
VOID UserFreeInputContext(PVOID Object)
|
||||
VOID
|
||||
UserFreeInputContext(_In_opt_ PVOID Object)
|
||||
{
|
||||
PTHRDESKHEAD ObjHead = Object;
|
||||
PDESKTOP pDesk = ObjHead->rpdesk;
|
||||
|
@ -1481,7 +1556,8 @@ VOID UserFreeInputContext(PVOID Object)
|
|||
IntDereferenceThreadInfo(pti);
|
||||
}
|
||||
|
||||
BOOLEAN UserDestroyInputContext(PVOID Object)
|
||||
BOOLEAN
|
||||
UserDestroyInputContext(_In_opt_ PVOID Object)
|
||||
{
|
||||
PIMC pIMC = Object;
|
||||
if (!pIMC)
|
||||
|
@ -1492,8 +1568,8 @@ BOOLEAN UserDestroyInputContext(PVOID Object)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
// Win: DestroyInputContext
|
||||
BOOL IntDestroyInputContext(PIMC pIMC)
|
||||
static BOOL
|
||||
IntDestroyInputContext(_In_ PIMC pIMC)
|
||||
{
|
||||
HIMC hIMC = UserHMGetHandle(pIMC);
|
||||
PTHREADINFO pti = pIMC->head.pti;
|
||||
|
@ -1532,7 +1608,8 @@ BOOL IntDestroyInputContext(PIMC pIMC)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL NTAPI NtUserDestroyInputContext(HIMC hIMC)
|
||||
BOOL NTAPI
|
||||
NtUserDestroyInputContext(_In_ HIMC hIMC)
|
||||
{
|
||||
BOOL ret = FALSE;
|
||||
PIMC pIMC;
|
||||
|
@ -1554,8 +1631,8 @@ Quit:
|
|||
return ret;
|
||||
}
|
||||
|
||||
// Win: CreateInputContext
|
||||
PIMC FASTCALL UserCreateInputContext(ULONG_PTR dwClientImcData)
|
||||
PIMC FASTCALL
|
||||
UserCreateInputContext(_In_ ULONG_PTR dwClientImcData)
|
||||
{
|
||||
PIMC pIMC;
|
||||
PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
|
||||
|
@ -1603,7 +1680,7 @@ PIMC FASTCALL UserCreateInputContext(ULONG_PTR dwClientImcData)
|
|||
|
||||
HIMC
|
||||
NTAPI
|
||||
NtUserCreateInputContext(ULONG_PTR dwClientImcData)
|
||||
NtUserCreateInputContext(_In_ ULONG_PTR dwClientImcData)
|
||||
{
|
||||
PIMC pIMC;
|
||||
HIMC ret = NULL;
|
||||
|
@ -1632,8 +1709,8 @@ Quit:
|
|||
return ret;
|
||||
}
|
||||
|
||||
// Win: AssociateInputContextEx
|
||||
DWORD FASTCALL IntAssociateInputContextEx(PWND pWnd, PIMC pIMC, DWORD dwFlags)
|
||||
static DWORD FASTCALL
|
||||
IntAssociateInputContextEx(_In_ PWND pWnd, _In_ PIMC pIMC, _In_ DWORD dwFlags)
|
||||
{
|
||||
DWORD ret = 0;
|
||||
PWINDOWLIST pwl;
|
||||
|
@ -1699,7 +1776,10 @@ DWORD FASTCALL IntAssociateInputContextEx(PWND pWnd, PIMC pIMC, DWORD dwFlags)
|
|||
|
||||
DWORD
|
||||
NTAPI
|
||||
NtUserAssociateInputContext(HWND hWnd, HIMC hIMC, DWORD dwFlags)
|
||||
NtUserAssociateInputContext(
|
||||
_In_ HWND hWnd,
|
||||
_In_opt_ HIMC hIMC,
|
||||
_In_ DWORD dwFlags)
|
||||
{
|
||||
DWORD ret = 2;
|
||||
PWND pWnd;
|
||||
|
@ -1715,7 +1795,10 @@ NtUserAssociateInputContext(HWND hWnd, HIMC hIMC, DWORD dwFlags)
|
|||
|
||||
pWnd = ValidateHwndNoErr(hWnd);
|
||||
if (!pWnd)
|
||||
{
|
||||
ERR("Invalid HWND: %p\n", hWnd);
|
||||
goto Quit;
|
||||
}
|
||||
|
||||
pIMC = (hIMC ? UserGetObjectNoErr(gHandleTable, hIMC, TYPE_INPUTCONTEXT) : NULL);
|
||||
ret = IntAssociateInputContextEx(pWnd, pIMC, dwFlags);
|
||||
|
@ -1725,8 +1808,8 @@ Quit:
|
|||
return ret;
|
||||
}
|
||||
|
||||
// Win: UpdateInputContext
|
||||
BOOL FASTCALL UserUpdateInputContext(PIMC pIMC, DWORD dwType, DWORD_PTR dwValue)
|
||||
static BOOL FASTCALL
|
||||
UserUpdateInputContext(_In_ PIMC pIMC, _In_ DWORD dwType, _In_ DWORD_PTR dwValue)
|
||||
{
|
||||
PTHREADINFO pti = GetW32ThreadInfo();
|
||||
PTHREADINFO ptiIMC = pIMC->head.pti;
|
||||
|
@ -1751,6 +1834,7 @@ BOOL FASTCALL UserUpdateInputContext(PIMC pIMC, DWORD dwType, DWORD_PTR dwValue)
|
|||
break;
|
||||
|
||||
default:
|
||||
ERR("Unhandled dwType: %lu\n", dwType);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -1777,7 +1861,10 @@ NtUserUpdateInputContext(
|
|||
|
||||
pIMC = UserGetObject(gHandleTable, hIMC, TYPE_INPUTCONTEXT);
|
||||
if (!pIMC)
|
||||
{
|
||||
ERR("Invalid HIMC %p\n", hIMC);
|
||||
goto Quit;
|
||||
}
|
||||
|
||||
ret = UserUpdateInputContext(pIMC, dwType, dwValue);
|
||||
|
||||
|
@ -1801,7 +1888,10 @@ NtUserQueryInputContext(HIMC hIMC, DWORD dwType)
|
|||
|
||||
pIMC = UserGetObject(gHandleTable, hIMC, TYPE_INPUTCONTEXT);
|
||||
if (!pIMC)
|
||||
{
|
||||
ERR("Invalid HIMC %p\n", hIMC);
|
||||
goto Quit;
|
||||
}
|
||||
|
||||
ptiIMC = pIMC->head.pti;
|
||||
|
||||
|
@ -1839,8 +1929,6 @@ Quit:
|
|||
|
||||
// Searchs a non-IME-related window of the same thread of pwndTarget,
|
||||
// other than pwndTarget, around pwndParent. Returns TRUE if found.
|
||||
//
|
||||
// Win: IsChildSameThread
|
||||
BOOL IntFindNonImeRelatedWndOfSameThread(PWND pwndParent, PWND pwndTarget)
|
||||
{
|
||||
PWND pwnd, pwndOwner, pwndNode;
|
||||
|
@ -1916,8 +2004,8 @@ BOOL IntFindNonImeRelatedWndOfSameThread(PWND pwndParent, PWND pwndTarget)
|
|||
}
|
||||
|
||||
// Determines whether the target window needs the IME window.
|
||||
// Win: WantImeWindow(pwndParent, pwndTarget)
|
||||
BOOL FASTCALL IntWantImeWindow(PWND pwndTarget)
|
||||
BOOL FASTCALL
|
||||
IntWantImeWindow(_In_ PWND pwndTarget)
|
||||
{
|
||||
PDESKTOP rpdesk;
|
||||
PWINSTATION_OBJECT rpwinstaParent;
|
||||
|
@ -1956,8 +2044,10 @@ BOOL FASTCALL IntWantImeWindow(PWND pwndTarget)
|
|||
}
|
||||
|
||||
// Create the default IME window for the target window.
|
||||
// Win: xxxCreateDefaultImeWindow(pwndTarget, ATOM, hInst)
|
||||
PWND FASTCALL co_IntCreateDefaultImeWindow(PWND pwndTarget, HINSTANCE hInst)
|
||||
PWND FASTCALL
|
||||
co_IntCreateDefaultImeWindow(
|
||||
_In_ PWND pwndTarget,
|
||||
_In_ HINSTANCE hInst)
|
||||
{
|
||||
LARGE_UNICODE_STRING WindowName;
|
||||
UNICODE_STRING ClassName;
|
||||
|
@ -2009,7 +2099,7 @@ PWND FASTCALL co_IntCreateDefaultImeWindow(PWND pwndTarget, HINSTANCE hInst)
|
|||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ERR("%p\n", pimeui);
|
||||
ERR("Exception in co_IntCreateDefaultImeWindow: %p\n", pimeui);
|
||||
}
|
||||
_SEH2_END;
|
||||
}
|
||||
|
@ -2019,8 +2109,10 @@ PWND FASTCALL co_IntCreateDefaultImeWindow(PWND pwndTarget, HINSTANCE hInst)
|
|||
}
|
||||
|
||||
// Determines whether the system can destroy the default IME window for the target child window.
|
||||
// Win: ImeCanDestroyDefIMEforChild
|
||||
BOOL FASTCALL IntImeCanDestroyDefIMEforChild(PWND pImeWnd, PWND pwndTarget)
|
||||
BOOL FASTCALL
|
||||
IntImeCanDestroyDefIMEforChild(
|
||||
_In_ PWND pImeWnd,
|
||||
_In_ PWND pwndTarget)
|
||||
{
|
||||
PWND pwndNode;
|
||||
PIMEUI pimeui;
|
||||
|
@ -2040,7 +2132,7 @@ BOOL FASTCALL IntImeCanDestroyDefIMEforChild(PWND pImeWnd, PWND pwndTarget)
|
|||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ERR("%p\n", pimeui);
|
||||
ERR("Exception in IntImeCanDestroyDefIMEforChild: %p\n", pimeui);
|
||||
}
|
||||
_SEH2_END;
|
||||
|
||||
|
@ -2064,8 +2156,10 @@ BOOL FASTCALL IntImeCanDestroyDefIMEforChild(PWND pImeWnd, PWND pwndTarget)
|
|||
}
|
||||
|
||||
// Determines whether the system can destroy the default IME window for the non-child target window.
|
||||
// Win: ImeCanDestroyDefIME
|
||||
BOOL FASTCALL IntImeCanDestroyDefIME(PWND pImeWnd, PWND pwndTarget)
|
||||
BOOL FASTCALL
|
||||
IntImeCanDestroyDefIME(
|
||||
_In_ PWND pImeWnd,
|
||||
_In_ PWND pwndTarget)
|
||||
{
|
||||
PWND pwndNode;
|
||||
PIMEUI pimeui;
|
||||
|
@ -2085,7 +2179,7 @@ BOOL FASTCALL IntImeCanDestroyDefIME(PWND pImeWnd, PWND pwndTarget)
|
|||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ERR("%p\n", pimeui);
|
||||
ERR("Exception in IntImeCanDestroyDefIME: %p\n", pimeui);
|
||||
}
|
||||
_SEH2_END;
|
||||
|
||||
|
@ -2128,8 +2222,10 @@ BOOL FASTCALL IntImeCanDestroyDefIME(PWND pImeWnd, PWND pwndTarget)
|
|||
}
|
||||
|
||||
// Update IMEUI.fShowStatus flags and Send the WM_IME_NOTIFY messages.
|
||||
// Win: xxxCheckImeShowStatus
|
||||
BOOL FASTCALL IntCheckImeShowStatus(PWND pwndIme, PTHREADINFO pti)
|
||||
BOOL FASTCALL
|
||||
IntCheckImeShowStatus(
|
||||
_In_ PWND pwndIme,
|
||||
_In_ PTHREADINFO pti)
|
||||
{
|
||||
BOOL ret = FALSE, bDifferent;
|
||||
PWINDOWLIST pwl;
|
||||
|
@ -2194,7 +2290,7 @@ BOOL FASTCALL IntCheckImeShowStatus(PWND pwndIme, PTHREADINFO pti)
|
|||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ERR("%p\n", pimeui);
|
||||
ERR("Exception in IntCheckImeShowStatus: %p\n", pimeui);
|
||||
pwndIMC = NULL;
|
||||
}
|
||||
_SEH2_END;
|
||||
|
@ -2225,7 +2321,12 @@ BOOL FASTCALL IntCheckImeShowStatus(PWND pwndIme, PTHREADINFO pti)
|
|||
|
||||
// Send a UI message.
|
||||
LRESULT FASTCALL
|
||||
IntSendMessageToUI(PTHREADINFO ptiIME, PIMEUI pimeui, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
IntSendMessageToUI(
|
||||
_In_ PTHREADINFO ptiIME,
|
||||
_In_ PIMEUI pimeui,
|
||||
_In_ UINT uMsg,
|
||||
_In_ WPARAM wParam,
|
||||
_In_ LPARAM lParam)
|
||||
{
|
||||
PWND pwndUI;
|
||||
LRESULT ret = 0;
|
||||
|
@ -2249,7 +2350,7 @@ IntSendMessageToUI(PTHREADINFO ptiIME, PIMEUI pimeui, UINT uMsg, WPARAM wParam,
|
|||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ERR("%p\n", pimeui);
|
||||
ERR("Exception in IntSendMessageToUI: %p\n", pimeui);
|
||||
pwndUI = NULL;
|
||||
}
|
||||
_SEH2_END;
|
||||
|
@ -2266,7 +2367,7 @@ IntSendMessageToUI(PTHREADINFO ptiIME, PIMEUI pimeui, UINT uMsg, WPARAM wParam,
|
|||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ERR("%p\n", pimeui);
|
||||
ERR("Exception in IntSendMessageToUI: %p\n", pimeui);
|
||||
_SEH2_YIELD(goto Quit);
|
||||
}
|
||||
_SEH2_END;
|
||||
|
@ -2291,7 +2392,7 @@ IntSendMessageToUI(PTHREADINFO ptiIME, PIMEUI pimeui, UINT uMsg, WPARAM wParam,
|
|||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ERR("%p\n", pimeui);
|
||||
ERR("Exception in IntSendMessageToUI: %p\n", pimeui);
|
||||
_SEH2_YIELD(goto Quit);
|
||||
}
|
||||
_SEH2_END;
|
||||
|
@ -2305,7 +2406,6 @@ Quit:
|
|||
}
|
||||
|
||||
// Send the open status notification.
|
||||
// Win: xxxSendOpenStatusNotify
|
||||
VOID FASTCALL
|
||||
IntSendOpenStatusNotify(PTHREADINFO ptiIME, PIMEUI pimeui, PWND pWnd, BOOL bOpen)
|
||||
{
|
||||
|
@ -2326,7 +2426,8 @@ IntSendOpenStatusNotify(PTHREADINFO ptiIME, PIMEUI pimeui, PWND pWnd, BOOL bOpen
|
|||
}
|
||||
|
||||
// Update the IME status and send a notification.
|
||||
VOID FASTCALL IntNotifyImeShowStatus(PWND pImeWnd)
|
||||
VOID FASTCALL
|
||||
IntNotifyImeShowStatus(_In_ PWND pImeWnd)
|
||||
{
|
||||
PIMEUI pimeui;
|
||||
PWND pWnd;
|
||||
|
@ -2365,7 +2466,8 @@ VOID FASTCALL IntNotifyImeShowStatus(PWND pImeWnd)
|
|||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
ERR("%p, %p\n", pImeWnd, pimeui);
|
||||
ERR("Exception in IntNotifyImeShowStatus: %p, %p, %p, %d, %d\n",
|
||||
pImeWnd, pimeui, ptiIME, SafeImeUI.fCtrlShowStatus, gfIMEShowStatus);
|
||||
|
||||
if (pti != ptiIME)
|
||||
KeDetachProcess();
|
||||
|
@ -2385,8 +2487,10 @@ VOID FASTCALL IntNotifyImeShowStatus(PWND pImeWnd)
|
|||
IntCheckImeShowStatus(pImeWnd, NULL);
|
||||
}
|
||||
|
||||
// Win: xxxBroadcastImeShowStatusChange
|
||||
BOOL FASTCALL IntBroadcastImeShowStatusChange(PWND pImeWnd, BOOL bShow)
|
||||
BOOL FASTCALL
|
||||
IntBroadcastImeShowStatusChange(
|
||||
_In_ PWND pImeWnd,
|
||||
_In_ BOOL bShow)
|
||||
{
|
||||
if (gfIMEShowStatus == bShow || !IS_IMM_MODE())
|
||||
return TRUE;
|
||||
|
@ -2396,11 +2500,9 @@ BOOL FASTCALL IntBroadcastImeShowStatusChange(PWND pImeWnd, BOOL bShow)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/* Win: xxxCheckImeShowStatusInThread */
|
||||
VOID FASTCALL IntCheckImeShowStatusInThread(PWND pImeWnd)
|
||||
VOID FASTCALL
|
||||
IntCheckImeShowStatusInThread(_In_ PWND pImeWnd)
|
||||
{
|
||||
if (IS_IMM_MODE() && !(pImeWnd->state2 & WNDS2_INDESTROY))
|
||||
IntCheckImeShowStatus(pImeWnd, pImeWnd->head.pti);
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -83,7 +83,12 @@ VOID NTAPI UserProcessMouseInput(PMOUSE_INPUT_DATA pMouseInputData);
|
|||
BOOL NTAPI UserSendMouseInput(MOUSEINPUT *pMouseInput, BOOL bInjected);
|
||||
|
||||
/* IMM */
|
||||
UINT FASTCALL IntImmProcessKey(PUSER_MESSAGE_QUEUE, PWND, UINT, WPARAM, LPARAM);
|
||||
UINT FASTCALL IntImmProcessKey(
|
||||
_In_ PUSER_MESSAGE_QUEUE MessageQueue,
|
||||
_In_ PWND pWnd,
|
||||
_In_ UINT uMsg,
|
||||
_In_ WPARAM wParam,
|
||||
_In_ LPARAM lParam);
|
||||
VOID FASTCALL IntFreeImeHotKeys(VOID);
|
||||
|
||||
extern DWORD gSystemFS;
|
||||
|
|
|
@ -170,9 +170,15 @@ BOOL FASTCALL GetLayeredStatus(PWND pWnd);
|
|||
|
||||
/************** INPUT CONTEXT **************/
|
||||
|
||||
PIMC FASTCALL UserCreateInputContext(ULONG_PTR dwClientImcData);
|
||||
VOID UserFreeInputContext(PVOID Object);
|
||||
BOOLEAN UserDestroyInputContext(PVOID Object);
|
||||
PVOID AllocInputContextObject(PDESKTOP pDesk, PTHREADINFO pti, SIZE_T Size, PVOID* HandleOwner);
|
||||
PIMC FASTCALL UserCreateInputContext(_In_ ULONG_PTR dwClientImcData);
|
||||
VOID UserFreeInputContext(_In_opt_ PVOID Object);
|
||||
BOOLEAN UserDestroyInputContext(_In_opt_ PVOID Object);
|
||||
|
||||
PVOID
|
||||
AllocInputContextObject(
|
||||
_In_ PDESKTOP pDesk,
|
||||
_In_ PTHREADINFO pti,
|
||||
_In_ SIZE_T Size,
|
||||
_Out_ PVOID* HandleOwner);
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -117,13 +117,13 @@ HWND FASTCALL IntFindWindow(PWND Parent, PWND ChildAfter, RTL_ATOM ClassAtom,
|
|||
|
||||
extern BOOL gfIMEShowStatus;
|
||||
|
||||
BOOL FASTCALL IntWantImeWindow(PWND pwndTarget);
|
||||
PWND FASTCALL co_IntCreateDefaultImeWindow(PWND pwndTarget, HINSTANCE hInst);
|
||||
BOOL FASTCALL IntImeCanDestroyDefIMEforChild(PWND pImeWnd, PWND pwndTarget);
|
||||
BOOL FASTCALL IntImeCanDestroyDefIME(PWND pImeWnd, PWND pwndTarget);
|
||||
BOOL FASTCALL IntBroadcastImeShowStatusChange(PWND pImeWnd, BOOL bShow);
|
||||
VOID FASTCALL IntNotifyImeShowStatus(PWND pImeWnd);
|
||||
VOID FASTCALL IntCheckImeShowStatusInThread(PWND pImeWnd);
|
||||
BOOL FASTCALL IntWantImeWindow(_In_ PWND pwndTarget);
|
||||
PWND FASTCALL co_IntCreateDefaultImeWindow(_In_ PWND pwndTarget, _In_ HINSTANCE hInst);
|
||||
BOOL FASTCALL IntImeCanDestroyDefIMEforChild(_In_ PWND pImeWnd, _In_ PWND pwndTarget);
|
||||
BOOL FASTCALL IntImeCanDestroyDefIME(_In_ PWND pImeWnd, _In_ PWND pwndTarget);
|
||||
BOOL FASTCALL IntBroadcastImeShowStatusChange(_In_ PWND pImeWnd, _In_ BOOL bShow);
|
||||
VOID FASTCALL IntNotifyImeShowStatus(_In_ PWND pImeWnd);
|
||||
VOID FASTCALL IntCheckImeShowStatusInThread(_In_ PWND pImeWnd);
|
||||
|
||||
static inline
|
||||
VOID
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue