18 return NtCurrentTeb()->ProcessEnvironmentBlock->LoaderLock->OwningThread ==
30 0, 0, 0, 0, 0, 0, 0, &
pSid))
41 return bOK && IsMember;
57 return lstrcmpiW(pchFilePart,
L"msoobe.exe") == 0;
94 if (*phinstDLL ==
NULL)
98 if (*phinstDLL ==
NULL)
103 return *ppfn !=
NULL;
106#define IMM32_GET_FN(ppfn, phinstDLL, dll_name, func_name) \
107 Imm32GetFn((FARPROC*)(ppfn), (phinstDLL), (dll_name), #func_name)
115#define OLE32_FN(name) g_pfnOLE32_##name
127#define Imm32GetOle32Fn(func_name) \
128 IMM32_GET_FN(&OLE32_FN(func_name), &g_hOle32, L"ole32.dll", #func_name)
168#define MSCTF_FN(name) g_pfnMSCTF_##name
176#define Imm32GetMsctfFn(func_name) \
177 IMM32_GET_FN(&MSCTF_FN(func_name), &g_hMsctf, L"msctf.dll", #func_name)
181 TRACE(
"TF_CreateLangBarMgr(%p)\n", ppBarMgr);
191 TRACE(
"TF_InvalidAssemblyListCacheIfExist()\n");
213#undef DEFINE_CTF_IME_FN
214#define DEFINE_CTF_IME_FN(func_name, ret_type, params) \
215 typedef ret_type (WINAPI *FN_##func_name)params;
219#undef DEFINE_CTF_IME_FN
220#define DEFINE_CTF_IME_FN(func_name, ret_type, params) \
221 FN_##func_name g_pfn##func_name = NULL;
225#define CTF_IME_FN(func_name) g_pfn##func_name
257 if (!pApphelpCheckIME)
261 return pApphelpCheckIME(pszAppName);
336 return pData->dwSkipCount;
344 DWORD dwOldSkipCount;
350 dwOldSkipCount =
pData->dwSkipCount;
352 pData->dwSkipCount = dwOldSkipCount + 1;
354 return dwOldSkipCount;
368 dwSkipCount =
pData->dwSkipCount;
372 pData->dwSkipCount = dwSkipCount - 1;
480 (dwCurThreadAptRefs == cCount + 1) &&
497 DWORD CoInitCountSkip;
505 (dwNewThreadAptRefs != CoInitCountSkip + 2) ||
521 if (dwCurThreadAptRefs == 1 &&
568#define Imm32DeleteIMMISPY(pSpy) ImmLocalFree(pSpy)
604 pData->uliCookie.QuadPart = 0;
637 ISPY_Release(
pData->pSpy);
639 pData->uliCookie.QuadPart = 0;
687#undef DEFINE_CTF_IME_FN
688#define DEFINE_CTF_IME_FN(func_name, ret_type, params) \
689 CTF_IME_FN(func_name) = (FN_##func_name)GetProcAddress(g_hCtfIme, #func_name); \
690 if (!CTF_IME_FN(func_name)) \
702#undef DEFINE_CTF_IME_FN
703#define DEFINE_CTF_IME_FN(func_name, ret_type, params) CTF_IME_FN(func_name) = NULL;
769 TRACE(
"(%p)\n", hKL);
792 TRACE(
"(%d)\n", bStarted);
819 TRACE(
"(%p)\n", hIMC);
833 TRACE(
"(%p)\n", hIMC);
851 TRACE(
"(%p, %d, %p, %p)\n", hIMC, fActive,
hWnd, hKL);
943 DWORD_PTR dwImeThreadId, dwCurrentThreadId;
946 TRACE(
"(%p)\n", hIMC);
958 if (dwImeThreadId == dwCurrentThreadId)
1015 TRACE(
"(%p)\n", phinstCtfIme);
1033 *phinstCtfIme = hinstCtfIme;
1127 TRACE(
"(%p)\n", hKL);
1131 TRACE(
"g_disable_CUAS_flag\n");
1138 TRACE(
"CI_TSFDISABLED\n");
1144 TRACE(
"TIM is disabled in registry\n");
1151 TRACE(
"TIM is disabled due to LOGON or MSOBE\n");
1157 TRACE(
"CUAS is disabled in registry\n");
1162 if (
NtCurrentTeb()->ProcessEnvironmentBlock->AppCompatFlags.LowPart & 0x100)
1164 TRACE(
"CUAS is disabled by AppCompatFlags\n");
1171 TRACE(
"TIM is disabled by Loader\n");
1177 TRACE(
"TIM is disabled because CICERO mode is unset\n");
1261 pSetBand->
fSet = fSet;
1277 DWORD_PTR dwImeThreadId, dwCurrentThreadId;
1281 DWORD iMsg, dwNumMsgBuf;
1285 TRACE(
"(%p, %d)\n", hIMC, bSend);
1289 if (dwImeThreadId != dwCurrentThreadId)
1291 ERR(
"%p vs %p\n", dwImeThreadId, dwCurrentThreadId);
1315 cbTransMsg =
sizeof(
TRANSMSG) * dwNumMsgBuf;
1327 for (iMsg = 0; iMsg < dwNumMsgBuf; ++iMsg)
1366 DWORD dwShowFlags = 0;
1376 bShown = !(dwShowFlags & 0x800);
1382 pBarMgr->lpVtbl->
Release(pBarMgr);
1401 TRACE(
"(%p, 0x%X)\n", pUnused, dwShowFlags);
1410 pBarMgr->lpVtbl->
Release(pBarMgr);
1443 TRACE(
"(%p)\n", hIMC);
1458 ret = pImeDpi->CtfImeIsGuidMapEnable(hIMC);
1478 TRACE(
"(%p, 0xlX, %p)\n", hIMC, dwUnknown, pdwGuidAtom);
1494 hr = pImeDpi->CtfImeGetGuidAtom(hIMC, dwUnknown, pdwGuidAtom);
BOOL WINAPI BaseCheckAppcompatCache(_In_ PCWSTR ApplicationName, _In_ HANDLE FileHandle, _In_opt_ PCWSTR Environment, _Out_opt_ PULONG pdwReason)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define UlongToHandle(ul)
#define RegCloseKey(hKey)
HRESULT WINAPI CtfAImmActivate(_Out_opt_ HINSTANCE *phinstCtfIme)
static const IInitializeSpyVtbl g_vtblISPY
static STDMETHODIMP ISPY_PostUninitialize(_In_ IInitializeSpy *pThis, _In_ DWORD dwNewThreadAptRefs)
static DWORD Imm32IncCoInitCountSkip(VOID)
VOID Imm32CoUninitialize(VOID)
static IMMTLSDATA * Imm32AllocateTLS(VOID)
HRESULT WINAPI CtfImmLastEnabledWndDestroy(_In_ BOOL bCreate)
HRESULT CtfImeSetActiveContextAlways(_In_ HIMC hIMC, _In_ BOOL fActive, _In_ HWND hWnd, _In_ HKL hKL)
VOID WINAPI CtfImmEnterCoInitCountSkipMode(VOID)
HRESULT CtfImeDestroyInputContext(_In_ HIMC hIMC)
VOID WINAPI CtfImmRestoreToolbarWnd(_In_ LPVOID pUnused, _In_ DWORD dwShowFlags)
BOOL WINAPI CtfImmIsCiceroStartedInThread(VOID)
HRESULT CtfImeCreateInputContext(_In_ HIMC hIMC)
static DWORD WINAPI Imm32DelaySetLangBandProc(LPVOID arg)
LRESULT WINAPI CtfImmDispatchDefImeMessage(_In_ HWND hWnd, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
VOID WINAPI CtfImmSetAppCompatFlags(_In_ DWORD dwFlags)
static STDMETHODIMP ISPY_PreUninitialize(_Inout_ IInitializeSpy *pThis, _In_ DWORD dwCurThreadAptRefs)
HRESULT(WINAPI * FN_CoInitializeEx)(LPVOID, DWORD)
#define Imm32GetOle32Fn(func_name)
static BOOL Imm32IsRunningInMsoobe(VOID)
HRESULT CtfImeCreateThreadMgr(VOID)
HRESULT CtfImmCoInitialize(VOID)
HRESULT CtfImeDestroyThreadMgr(VOID)
HRESULT WINAPI CtfImmTIMActivate(_In_ HKL hKL)
BOOL WINAPI CtfImmGenerateMessage(_In_ HIMC hIMC, _In_ BOOL bSend)
static ISPY * Imm32AllocIMMISPY(VOID)
VOID WINAPI CtfImmCoUninitialize(VOID)
static DWORD Imm32GetCoInitCountSkip(VOID)
HRESULT CtfImmTIMCreateInputContext(_In_ HIMC hIMC)
static STDMETHODIMP ISPY_PostInitialize(_Inout_ IInitializeSpy *pThis, _In_ HRESULT hrCoInit, _In_ DWORD dwCoInit, _In_ DWORD dwNewThreadAptRefs)
#define Imm32GetMsctfFn(func_name)
BOOL WINAPI CtfImmIsCiceroEnabled(VOID)
VOID Imm32TF_InvalidAssemblyListCacheIfExist(VOID)
static BOOL Imm32IsTIMDisabledInRegistry(VOID)
#define Imm32DeleteIMMISPY(pSpy)
HRESULT Imm32ActivateOrDeactivateTIM(_In_ BOOL bCreate)
BOOL WINAPI ImmDisableTextFrameService(_In_ DWORD dwThreadId)
static STDMETHODIMP ISPY_PreInitialize(_Inout_ IInitializeSpy *pThis, _In_ DWORD dwCoInit, _In_ DWORD dwCurThreadAptRefs)
VOID(WINAPI * FN_CoUninitialize)(VOID)
VOID(WINAPI * FN_TF_InvalidAssemblyListCacheIfExist)(VOID)
BOOL WINAPI CtfImmIsGuidMapEnable(_In_ HIMC hIMC)
DWORD WINAPI CtfImmHideToolbarWnd(VOID)
BOOL WINAPI CtfImmIsTextFrameServiceDisabled(VOID)
struct IMMTLSDATA * PIMMTLSDATA
HRESULT(WINAPI * FN_CoRegisterInitializeSpy)(IInitializeSpy *, ULARGE_INTEGER *)
static DWORD Imm32DecCoInitCountSkip(VOID)
static BOOL Imm32IsCUASEnabledInRegistry(VOID)
static IMMTLSDATA * Imm32GetTLS(VOID)
HRESULT CtfImmTIMDestroyInputContext(_In_ HIMC hIMC)
HRESULT Imm32CoRevokeInitializeSpy(ULARGE_INTEGER cookie)
static BOOL Imm32InsideLoaderLock(VOID)
HRESULT WINAPI CtfAImmDeactivate(_In_ BOOL bDestroy)
HRESULT Imm32CoInitializeEx(VOID)
HRESULT(WINAPI * FN_TF_CreateLangBarMgr)(ITfLangBarMgr **)
BOOL CtfImeProcessCicHotkey(_In_ HIMC hIMC, _In_ UINT vKey, _In_ LPARAM lParam)
BOOL WINAPI CtfImmLeaveCoInitCountSkipMode(VOID)
HINSTANCE Imm32LoadCtfIme(VOID)
HRESULT(WINAPI * FN_CoRevokeInitializeSpy)(ULARGE_INTEGER)
static BOOL CALLBACK Imm32EnumCreateCtfICProc(_In_ HIMC hIMC, _In_ LPARAM lParam)
HRESULT WINAPI CtfImmGetGuidAtom(_In_ HIMC hIMC, _In_ DWORD dwUnknown, _Out_ LPDWORD pdwGuidAtom)
VOID WINAPI CtfImmSetCiceroStartInThread(_In_ BOOL bStarted)
BOOL WINAPI CtfAImmIsIME(_In_ HKL hKL)
static STDMETHODIMP ISPY_QueryInterface(_Inout_ IInitializeSpy *pThis, _In_ REFIID riid, _Inout_ LPVOID *ppvObj)
LRESULT CtfImmSetLangBand(_In_ HWND hWnd, _In_ BOOL fSet)
HRESULT Imm32CoRegisterInitializeSpy(IInitializeSpy *spy, ULARGE_INTEGER *cookie)
#define CTF_IME_FN(func_name)
BOOL(WINAPI * FN_ApphelpCheckIME)(_In_z_ LPCWSTR AppName)
DWORD g_aimm_compat_flags
static BOOL Imm32IsInteractiveUserLogon(VOID)
struct IMM_DELAY_SET_LANG_BAND * PIMM_DELAY_SET_LANG_BAND
static VOID Imm32InitTLS(VOID)
BOOL Imm32GetFn(_Inout_opt_ FARPROC *ppfn, _Inout_ HINSTANCE *phinstDLL, _In_ LPCWSTR pszDllName, _In_ LPCSTR pszFuncName)
BOOL Imm32CheckAndApplyAppCompat(_In_ ULONG dwReason, _In_z_ LPCWSTR pszAppName)
HRESULT Imm32TF_CreateLangBarMgr(_Inout_ ITfLangBarMgr **ppBarMgr)
static CHAR AppName[MAX_PATH]
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
BOOLEAN NTAPI RtlIsThreadWithinLoaderCallout(VOID)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
BOOL WINAPI CheckTokenMembership(IN HANDLE ExistingTokenHandle, IN PSID SidToCheck, OUT PBOOL IsMember)
BOOL WINAPI AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, PSID *pSid)
PVOID WINAPI FreeSid(PSID pSid)
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
LPVOID WINAPI TlsGetValue(IN DWORD Index)
BOOL WINAPI TlsSetValue(IN DWORD Index, IN LPVOID Value)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
DWORD WINAPI DECLSPEC_HOTPATCH TlsAlloc(void)
HRESULT WINAPI CoRegisterInitializeSpy(IInitializeSpy *spy, ULARGE_INTEGER *cookie)
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(LPVOID lpReserved, DWORD dwCoInit)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI CoRevokeInitializeSpy(ULARGE_INTEGER cookie)
#define FAILED_UNEXPECTEDLY
RTL_CRITICAL_SECTION gcsImeDpi
PIMEDPI Imm32FindOrLoadImeDpi(HKL hKL)
BOOL WINAPI ImmEnumInputContext(_In_ DWORD dwThreadId, _In_ IMCENUMPROC lpfn, _In_ LPARAM lParam)
struct _tagTRANSMSG * LPTRANSMSG
struct _tagTRANSMSG TRANSMSG
BOOL WINAPI ImmLoadIME(_In_ HKL hKL)
PCLIENTIMC WINAPI ImmLockClientImc(_In_ HIMC hImc)
#define IMS_UNSETLANGBAND
VOID WINAPI ImmUnlockImeDpi(_Inout_opt_ PIMEDPI pImeDpi)
VOID WINAPI ImmUnlockClientImc(_Inout_ PCLIENTIMC pClientImc)
BOOL WINAPI ImmLoadLayout(_In_ HKL hKL, _Inout_ PIMEINFOEX pImeInfoEx)
HWND WINAPI ImmGetDefaultIMEWnd(_In_opt_ HWND hWnd)
BOOL WINAPI ImmIsIME(_In_ HKL hKL)
BOOL WINAPI ImmUnlockIMCC(_In_ HIMCC imcc)
LPINPUTCONTEXT WINAPI ImmLockIMC(_In_ HIMC hIMC)
struct _tagINPUTCONTEXT * LPINPUTCONTEXT
BOOL WINAPI ImmUnlockIMC(_In_ HIMC hIMC)
struct _tagTRANSMSG * PTRANSMSG
LPVOID WINAPI ImmLockIMCC(_In_ HIMCC imcc)
#define IS_CICERO_COMPAT_DISABLED()
#define CI_CICERO_STARTED
#define WNDS2_WMCREATEMSGPROCESSED
DWORD_PTR NTAPI NtUserQueryInputContext(HIMC hIMC, DWORD dwType)
#define GetWin32ClientInfo()
NTSYSAPI BOOLEAN WINAPI RtlDllShutdownInProgress(void)
HRESULT GetShowFloatingStatus([out] DWORD *pdwFlags)
HRESULT ShowFloating([in] DWORD dwFlags)
static HANDLE ULONG_PTR dwData
struct _ULARGE_INTEGER ULARGE_INTEGER
HRESULT WINAPI TF_CreateLangBarMgr(ITfLangBarMgr **pppbm)
HRESULT WINAPI TF_InvalidAssemblyListCacheIfExist(void)
EXTERN_C BOOL WINAPI CtfImeIsIME(_In_ HKL hKL)
EXTERN_C LRESULT WINAPI CtfImeDispatchDefImeMessage(_In_ HWND hWnd, _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam)
NTSYSAPI NTSTATUS NTAPI RtlEnterCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSYSAPI NTSTATUS NTAPI RtlLeaveCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
#define UNREFERENCED_PARAMETER(P)
@ COINIT_APARTMENTTHREADED
#define IsEqualIID(riid1, riid2)
_In_ int _In_ BOOL bCreate
const IInitializeSpyVtbl * m_pSpyVtbl
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
#define RtlCopyMemory(Destination, Source, Length)
#define IS_ZERO_UNEXPECTEDLY(p)
#define ImmLocalFree(lpData)
#define ValidateHwndNoErr(hwnd)
BOOL Imm32GetSystemLibraryPath(LPWSTR pszPath, DWORD cchPath, LPCWSTR pszFileName)
#define IS_NULL_UNEXPECTEDLY(p)
LPVOID ImmLocalAlloc(_In_ DWORD dwFlags, _In_ DWORD dwBytes)
DWORD WINAPI GetLastError(void)
DWORD WINAPI GetCurrentThreadId(void)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
HKL WINAPI GetKeyboardLayout(_In_ DWORD)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageTimeoutW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM, _In_ UINT, _In_ UINT, _Out_opt_ PDWORD_PTR)
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define SECURITY_INTERACTIVE_RID
#define SECURITY_NT_AUTHORITY