22 return NtCurrentTeb()->ProcessEnvironmentBlock->LoaderLock->OwningThread ==
34 0, 0, 0, 0, 0, 0, 0, &
pSid))
45 return bOK && IsMember;
61 return lstrcmpiW(pchFilePart,
L"msoobe.exe") == 0;
98 if (*phinstDLL ==
NULL)
102 if (*phinstDLL ==
NULL)
107 return *ppfn !=
NULL;
110#define IMM32_GET_FN(ppfn, phinstDLL, dll_name, func_name) \
111 Imm32GetFn((FARPROC*)(ppfn), (phinstDLL), (dll_name), #func_name)
119#define OLE32_FN(name) g_pfnOLE32_##name
131#define Imm32GetOle32Fn(func_name) \
132 IMM32_GET_FN(&OLE32_FN(func_name), &g_hOle32, L"ole32.dll", #func_name)
172#define MSCTF_FN(name) g_pfnMSCTF_##name
180#define Imm32GetMsctfFn(func_name) \
181 IMM32_GET_FN(&MSCTF_FN(func_name), &g_hMsctf, L"msctf.dll", #func_name)
185 TRACE(
"TF_CreateLangBarMgr(%p)\n", ppBarMgr);
195 TRACE(
"TF_InvalidAssemblyListCacheIfExist()\n");
227#undef DEFINE_CTF_IME_FN
228#define DEFINE_CTF_IME_FN(func_name, ret_type, params) \
229 typedef ret_type (WINAPI *FN_##func_name)params;
233#undef DEFINE_CTF_IME_FN
234#define DEFINE_CTF_IME_FN(func_name, ret_type, params) \
235 FN_##func_name g_pfn##func_name = NULL;
239#define CTF_IME_FN(func_name) g_pfn##func_name
278 if (!pApphelpCheckIME)
282 return pApphelpCheckIME(pszAppName);
357 return pData->dwSkipCount;
365 DWORD dwOldSkipCount;
371 dwOldSkipCount =
pData->dwSkipCount;
373 pData->dwSkipCount = dwOldSkipCount + 1;
375 return dwOldSkipCount;
389 dwSkipCount =
pData->dwSkipCount;
393 pData->dwSkipCount = dwSkipCount - 1;
501 (dwCurThreadAptRefs == cCount + 1) &&
518 DWORD CoInitCountSkip;
526 (dwNewThreadAptRefs != CoInitCountSkip + 2) ||
542 if (dwCurThreadAptRefs == 1 &&
589#define Imm32DeleteIMMISPY(pSpy) ImmLocalFree(pSpy)
625 pData->uliCookie.QuadPart = 0;
658 ISPY_Release(
pData->pSpy);
660 pData->uliCookie.QuadPart = 0;
708#undef DEFINE_CTF_IME_FN
709#define DEFINE_CTF_IME_FN(func_name, ret_type, params) \
710 CTF_IME_FN(func_name) = (FN_##func_name)GetProcAddress(g_hCtfIme, #func_name); \
711 if (!CTF_IME_FN(func_name)) \
723#undef DEFINE_CTF_IME_FN
724#define DEFINE_CTF_IME_FN(func_name, ret_type, params) CTF_IME_FN(func_name) = NULL;
776 TRACE(
"(%p)\n", hKL);
799 TRACE(
"(%d)\n", bStarted);
826 TRACE(
"(%p)\n", hIMC);
840 TRACE(
"(%p)\n", hIMC);
932 DWORD_PTR dwImeThreadId, dwCurrentThreadId;
935 TRACE(
"(%p)\n", hIMC);
947 if (dwImeThreadId == dwCurrentThreadId)
1004 TRACE(
"(%p)\n", phinstCtfIme);
1022 *phinstCtfIme = hinstCtfIme;
1116 TRACE(
"(%p)\n", hKL);
1120 TRACE(
"g_disable_CUAS_flag\n");
1127 TRACE(
"CI_TSFDISABLED\n");
1133 TRACE(
"TIM is disabled in registry\n");
1140 TRACE(
"TIM is disabled due to LOGON or MSOBE\n");
1146 TRACE(
"CUAS is disabled in registry\n");
1151 if (
NtCurrentTeb()->ProcessEnvironmentBlock->AppCompatFlags.LowPart & 0x100)
1153 TRACE(
"CUAS is disabled by AppCompatFlags\n");
1160 TRACE(
"TIM is disabled by Loader\n");
1166 TRACE(
"TIM is disabled because CICERO mode is unset\n");
1197 DWORD_PTR dwImeThreadId, dwCurrentThreadId;
1201 DWORD iMsg, dwNumMsgBuf;
1205 TRACE(
"(%p, %d)\n", hIMC, bSend);
1209 if (dwImeThreadId != dwCurrentThreadId)
1211 ERR(
"%p vs %p\n", dwImeThreadId, dwCurrentThreadId);
1235 cbTransMsg =
sizeof(
TRANSMSG) * dwNumMsgBuf;
1247 for (iMsg = 0; iMsg < dwNumMsgBuf; ++iMsg)
1286 DWORD dwShowFlags = 0;
1296 bShown = !(dwShowFlags & 0x800);
1302 pBarMgr->lpVtbl->
Release(pBarMgr);
1321 TRACE(
"(%p, 0x%X)\n", pUnused, dwShowFlags);
1330 pBarMgr->lpVtbl->
Release(pBarMgr);
1363 TRACE(
"(%p)\n", hIMC);
1378 ret = pImeDpi->CtfImeIsGuidMapEnable(hIMC);
1398 TRACE(
"(%p, 0xlX, %p)\n", hIMC, dwUnknown, pdwGuidAtom);
1414 hr = pImeDpi->CtfImeGetGuidAtom(hIMC, dwUnknown, pdwGuidAtom);
#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)
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)
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)
BOOL WINAPI BaseCheckAppcompatCache(_In_z_ LPCWSTR ApplicationName, _In_ HANDLE FileHandle, _In_opt_z_ LPCWSTR Environment, _Out_ PULONG pdwReason)
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 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)
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)
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
BOOL WINAPI ImmIsIME(HKL hKL)
VOID WINAPI ImmUnlockImeDpi(PIMEDPI pImeDpi)
RTL_CRITICAL_SECTION gcsImeDpi
PIMEDPI APIENTRY Imm32FindOrLoadImeDpi(HKL hKL)
BOOL WINAPI ImmLoadIME(HKL hKL)
BOOL WINAPI ImmUnlockIMC(HIMC hIMC)
BOOL WINAPI ImmLoadLayout(HKL hKL, PIMEINFOEX pImeInfoEx)
VOID WINAPI ImmUnlockClientImc(PCLIENTIMC pClientImc)
PCLIENTIMC WINAPI ImmLockClientImc(HIMC hImc)
LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC hIMC)
BOOL WINAPI ImmEnumInputContext(DWORD dwThreadId, IMCENUMPROC lpfn, LPARAM lParam)
LPVOID APIENTRY ImmLocalAlloc(DWORD dwFlags, DWORD dwBytes)
#define FAILED_UNEXPECTEDLY(hr)
#define ImmLocalFree(lpData)
BOOL Imm32GetSystemLibraryPath(LPWSTR pszPath, DWORD cchPath, LPCWSTR pszFileName)
#define IS_NULL_UNEXPECTEDLY(p)
#define IS_FALSE_UNEXPECTEDLY(x)
BOOL WINAPI ImmUnlockIMCC(HIMCC imcc)
LPVOID WINAPI ImmLockIMCC(HIMCC imcc)
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)
DWORD WINAPI TlsAlloc(VOID)
BOOL WINAPI TlsSetValue(IN DWORD Index, IN LPVOID Value)
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)
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE FileHandle
struct _tagTRANSMSG * LPTRANSMSG
struct _tagTRANSMSG TRANSMSG
struct _tagINPUTCONTEXT * LPINPUTCONTEXT
struct _tagTRANSMSG * PTRANSMSG
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)
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
PVOID PVOID PWCHAR PVOID Environment
PVOID PVOID PWCHAR ApplicationName
static HANDLE ULONG_PTR dwData
struct _ULARGE_INTEGER ULARGE_INTEGER
HRESULT WINAPI TF_CreateLangBarMgr(ITfLangBarMgr **pppbm)
HRESULT WINAPI TF_InvalidAssemblyListCacheIfExist(void)
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
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
#define RtlCopyMemory(Destination, Source, Length)
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)
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