29 return dwImeThreadId != dwCurrentThreadId;
36 return WndPID != CurrentPID;
79 TRACE(
"The country has no special IME support\n");
110 INT cchA = (cchW + 1) *
sizeof(
WCHAR);
123 for (cchWide = 0; cchAnsi > 0; ++cchWide)
143 for (cchAnsi = 0; cchWide > 0; ++cchAnsi, ++pchWide, --cchWide)
156 ERR(
"Invalid filename\n");
195 if (
pdi->pvDesktopBase <=
ptr && ptr < pdi->pvDesktopLimit)
211 WARN(
"Not a handle\n");
266 if (dwPID1 != dwPID2)
268 WARN(
"PID 0x%X != 0x%X\n", dwPID1, dwPID2);
311 TRACE(
"NotifyIME(%p, %lu, %lu, %p)\n", hIMC, dwAction, dwIndex, dwValue);
312 if (!pImeDpi->NotifyIME(hIMC, dwAction, dwIndex, dwValue))
313 WARN(
"NotifyIME(%p, %lu, %lu, %p) failed\n", hIMC, dwAction, dwIndex, dwValue);
319 WARN(
"pImeDpi was NULL\n");
324 WARN(
"dwThreadId was zero\n");
329 WARN(
"dwAction was zero\n");
332 if (
hwnd && dwCommand)
340#define INITIAL_COUNT 0x40
366 ERR(
"Abnormal status\n");
371 *pphList = phNewList;
382 for (pState = pIC->
pState; pState; pState = pState->
pNext)
384 if (pState->
wLang == Lang)
392 pState->
wLang = Lang;
404 for (pSubState = pState->
pSubState; pSubState; pSubState = pSubState->
pNext)
406 if (pSubState->
hKL == hKL)
413 pSubState->
hKL = hKL;
426 pIC->fdwSentence |= pSubState->
dwValue;
437 pSubState->
dwValue = (pIC->fdwSentence & 0xffff0000);
457 if (pSrc->dwVersion != 0)
465 cbDest =
sizeof(RECONVERTSTRING) + (
cchDest + 1) *
sizeof(
WCHAR);
469 if (pDest->dwSize < cbDest)
476 pDest->dwSize = cbDest;
479 pDest->dwVersion = 0;
482 pDest->dwStrOffset =
sizeof(RECONVERTSTRING);
486 pDest->dwCompStrOffset = cch0 *
sizeof(
WCHAR);
489 cch0 =
IchWideFromAnsi(pSrc->dwCompStrOffset + pSrc->dwCompStrLen, pchSrc, uCodePage);
490 pDest->dwCompStrLen = (cch0 *
sizeof(
WCHAR) - pDest->dwCompStrOffset) /
sizeof(
WCHAR);
494 pDest->dwTargetStrOffset = cch0 *
sizeof(
WCHAR);
497 cch0 =
IchWideFromAnsi(pSrc->dwTargetStrOffset + pSrc->dwTargetStrLen, pchSrc, uCodePage);
498 pDest->dwTargetStrLen = (cch0 *
sizeof(
WCHAR) - pSrc->dwTargetStrOffset) /
sizeof(
WCHAR);
509 TRACE(
"cbDest: 0x%X\n", cbDest);
520 if (pSrc->dwVersion != 0)
528 cbDest =
sizeof(RECONVERTSTRING) + (
cchDest + 1) *
sizeof(
CHAR);
532 if (pDest->dwSize < cbDest)
539 pDest->dwSize = cbDest;
542 pDest->dwVersion = 0;
545 pDest->dwStrOffset =
sizeof(RECONVERTSTRING);
548 cch1 = pSrc->dwCompStrOffset /
sizeof(
WCHAR);
550 pDest->dwCompStrOffset = cch0 *
sizeof(
CHAR);
554 pDest->dwCompStrLen = cch0 *
sizeof(
CHAR) - pDest->dwCompStrOffset;
557 cch1 = pSrc->dwTargetStrOffset /
sizeof(
WCHAR);
559 pDest->dwTargetStrOffset = cch0 *
sizeof(
CHAR);
562 cch0 =
IchAnsiFromWide(cch1 + pSrc->dwTargetStrLen, pchSrc, uCodePage);
563 pDest->dwTargetStrLen = cch0 *
sizeof(
CHAR) - pDest->dwTargetStrOffset;
569 pchDest = (
LPSTR)pDest + pDest->dwStrOffset;
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define NT_SUCCESS(StatCode)
#define ERROR_INVALID_HANDLE
#define WideCharToMultiByte
#define MultiByteToWideChar
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
BOOL WINAPI IsDBCSLeadByteEx(UINT codepage, BYTE testchar)
LCID WINAPI GetSystemDefaultLCID(void)
_In_ uint64_t _In_ uint64_t _In_ uint64_t generation
HLOCAL NTAPI LocalReAlloc(HLOCAL hMem, SIZE_T dwBytes, UINT uFlags)
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
LPVOID NTAPI LocalLock(HLOCAL hMem)
BOOL NTAPI LocalUnlock(HLOCAL hMem)
SIZE_T NTAPI LocalSize(HLOCAL hMem)
UINT NTAPI LocalFlags(HLOCAL hMem)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
static const struct newhuff ht[]
PCLIENTIMC WINAPI ImmLockClientImc(_In_ HIMC hImc)
PIMEDPI WINAPI ImmLockImeDpi(_In_ HKL hKL)
VOID WINAPI ImmUnlockImeDpi(_Inout_opt_ PIMEDPI pImeDpi)
VOID WINAPI ImmUnlockClientImc(_Inout_ PCLIENTIMC pClientImc)
DWORD_PTR NTAPI NtUserCallOneParam(DWORD_PTR Param, DWORD Routine)
@ THREADSTATE_GETTHREADINFO
#define ONEPARAM_ROUTINE_GETDESKTOPMAPPING
DWORD_PTR NTAPI NtUserQueryInputContext(HIMC hIMC, DWORD dwType)
#define HANDLEENTRY_DESTROY
DWORD_PTR NTAPI NtUserQueryWindow(HWND hWnd, DWORD Index)
NTSTATUS NTAPI NtUserBuildHimcList(_In_ DWORD dwThreadId, _In_ DWORD dwCount, _Out_ HIMC *phList, _Out_ PDWORD pdwCount)
#define GetWin32ClientInfo()
#define QUERY_WINDOW_UNIQUE_PROCESS_ID
BOOL NTAPI NtUserValidateHandleSecure(HANDLE hHdl)
DWORD_PTR NTAPI NtUserGetThreadState(DWORD Routine)
struct _USER_HANDLE_ENTRY * PUSER_HANDLE_ENTRY
#define FIRST_USER_HANDLE
int WINAPI lstrlenA(LPCSTR lpString)
static DWORD DWORD void LPSTR DWORD cch
static HANDLE ULONG_PTR dwData
static HMODULE MODULEINFO DWORD cb
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToInteger(PUNICODE_STRING String, ULONG Base, PULONG Value)
NTSYSAPI NTSTATUS NTAPI RtlIntegerToUnicodeString(ULONG Value, ULONG Base, PUNICODE_STRING String)
#define offsetof(TYPE, MEMBER)
#define LANGIDFROMLCID(l)
#define STATUS_BUFFER_TOO_SMALL
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchLengthA(STRSAFE_LPCSTR psz, size_t cchMax, size_t *pcchLength)
STRSAFEAPI StringCchLengthW(STRSAFE_LPCWSTR psz, size_t cchMax, size_t *pcchLength)
struct IME_SUBSTATE * pNext
struct IME_STATE * pState
CHAR lfFaceName[LF_FACESIZE]
WCHAR lfFaceName[LF_FACESIZE]
CHAR lfFaceName[LF_FACESIZE]
WCHAR lfFaceName[LF_FACESIZE]
#define RtlCopyMemory(Destination, Source, Length)
WORD WORD PSZ PSZ pszFileName
_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 ImmLocalFree(lpData)
#define IS_NULL_UNEXPECTEDLY(p)
DWORD Imm32BuildHimcList(DWORD dwThreadId, HIMC **pphList)
BOOL Imm32IsCrossThreadAccess(HIMC hIMC)
DWORD WINAPI ImmGetIMCCSize(_In_ HIMCC imcc)
LONG IchAnsiFromWide(LONG cchWide, LPCWSTR pchWide, UINT uCodePage)
PIME_SUBSTATE Imm32FetchImeSubState(PIME_STATE pState, HKL hKL)
BOOL WINAPI ImmUnlockIMCC(_In_ HIMCC imcc)
LPVOID FASTCALL ValidateHandleNoErr(HANDLE hObject, UINT uType)
BOOL Imm32LoadImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL)
HIMCC WINAPI ImmReSizeIMCC(_In_ HIMCC imcc, _In_ DWORD size)
DWORD Imm32ReconvertWideFromAnsi(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc, UINT uCodePage)
HIMCC WINAPI ImmDestroyIMCC(_In_ HIMCC block)
LPWSTR Imm32WideFromAnsi(UINT uCodePage, LPCSTR pszA)
DWORD WINAPI ImmGetIMCCLockCount(_In_ HIMCC imcc)
PTHREADINFO FASTCALL Imm32CurrentPti(VOID)
DWORD WINAPI ImmGetIMCLockCount(_In_ HIMC hIMC)
BOOL Imm32MakeIMENotify(_In_ HIMC hIMC, _In_ HWND hwnd, _In_ DWORD dwAction, _In_ DWORD dwIndex, _Inout_opt_ DWORD_PTR dwValue, _In_ DWORD dwCommand, _Inout_opt_ DWORD_PTR dwData)
LONG IchWideFromAnsi(LONG cchAnsi, LPCSTR pchAnsi, UINT uCodePage)
VOID LogFontAnsiToWide(const LOGFONTA *plfA, LPLOGFONTW plfW)
BOOL Imm32GetSystemLibraryPath(LPWSTR pszPath, DWORD cchPath, LPCWSTR pszFileName)
BOOL Imm32IsImcAnsi(HIMC hIMC)
HRESULT Imm32UIntToStr(_In_ DWORD dwValue, _In_ ULONG nBase, _Out_ PWSTR pszBuff, _In_ USHORT cchBuff)
BOOL Imm32SaveImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL)
LPVOID FASTCALL ValidateHandle(HANDLE hObject, UINT uType)
LPSTR Imm32AnsiFromWide(UINT uCodePage, LPCWSTR pszW)
BOOL Imm32IsSystemJapaneseOrKorean(VOID)
BOOL Imm32IsCrossProcessAccess(HWND hWnd)
PIME_STATE Imm32FetchImeState(LPINPUTCONTEXTDX pIC, HKL hKL)
static PVOID FASTCALL DesktopPtrToUser(PVOID ptr)
DWORD Imm32ReconvertAnsiFromWide(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc, UINT uCodePage)
LPVOID ImmLocalAlloc(_In_ DWORD dwFlags, _In_ DWORD dwBytes)
VOID LogFontWideToAnsi(const LOGFONTW *plfW, LPLOGFONTA plfA)
HIMCC WINAPI ImmCreateIMCC(_In_ DWORD size)
HRESULT Imm32StrToUInt(_In_ PCWSTR pszText, _Out_ PDWORD pdwValue, _In_ ULONG nBase)
BOOL Imm32CheckImcProcess(PIMC pIMC)
LPVOID WINAPI ImmLockIMCC(_In_ HIMCC imcc)
DWORD WINAPI GetCurrentThreadId(void)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
_In_ LPWSTR _In_ ULONG _In_ ULONG _In_ ULONG _Out_ DEVINFO * pdi
#define ERROR_INVALID_WINDOW_HANDLE
_In_ DWORD _In_ int _In_ int cchDest
HKL WINAPI GetKeyboardLayout(_In_ DWORD)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
static unsigned int block