19#define WIN32_NO_STATUS
50#define IMM_INIT_MAGIC 0x19650412
51#define IMM_INVALID_CANDFORM ULONG_MAX
52#define INVALID_HOTKEY_ID 0xFFFFFFFF
53#define MAX_CANDIDATEFORM 4
54#define MAX_IMM_FILENAME 80
56#define LANGID_CHINESE_SIMPLIFIED MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED)
57#define LANGID_CHINESE_TRADITIONAL MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL)
58#define LANGID_JAPANESE MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT)
60#define REGKEY_KEYBOARD_LAYOUTS L"System\\CurrentControlSet\\Control\\Keyboard Layouts"
61#define REGKEY_IMM L"Software\\Microsoft\\Windows NT\\CurrentVersion\\IMM"
63#define ROUNDUP4(n) (((n) + 3) & ~3)
84#define ValidateHwndNoErr(hwnd) ValidateHandleNoErr((hwnd), TYPE_WINDOW)
85#define ValidateHwnd(hwnd) ValidateHandle((hwnd), TYPE_WINDOW)
89#define ImmLocalFree(lpData) HeapFree(ghImmHeap, 0, (lpData))
104 #define UNEXPECTED() ASSERT(FALSE)
106 #define UNEXPECTED() 0
114#define IS_NULL_UNEXPECTEDLY(p) (!(p))
115#define IS_ZERO_UNEXPECTEDLY(p) (!(p))
116#define IS_TRUE_UNEXPECTEDLY(x) (x)
117#define IS_FALSE_UNEXPECTEDLY(x) (!(x))
118#define IS_ERROR_UNEXPECTEDLY(x) (!(x))
120#define IS_NULL_UNEXPECTEDLY(p) \
121 (!(p) ? (ros_dbg_log(__WINE_DBCL_ERR, __wine_dbch___default, \
122 __FILE__, __FUNCTION__, __LINE__, "%s was NULL\n", #p), UNEXPECTED(), TRUE) \
124#define IS_ZERO_UNEXPECTEDLY(p) \
125 (!(p) ? (ros_dbg_log(__WINE_DBCL_ERR, __wine_dbch___default, \
126 __FILE__, __FUNCTION__, __LINE__, "%s was zero\n", #p), UNEXPECTED(), TRUE) \
128#define IS_TRUE_UNEXPECTEDLY(x) \
129 ((x) ? (ros_dbg_log(__WINE_DBCL_ERR, __wine_dbch___default, \
130 __FILE__, __FUNCTION__, __LINE__, "%s was non-zero\n", #x), UNEXPECTED(), TRUE) \
132#define IS_FALSE_UNEXPECTEDLY(x) \
133 ((!(x)) ? (ros_dbg_log(__WINE_DBCL_ERR, __wine_dbch___default, \
134 __FILE__, __FUNCTION__, __LINE__, "%s was FALSE\n", #x), UNEXPECTED(), TRUE) \
136#define IS_ERROR_UNEXPECTEDLY(x) \
137 ((x) != ERROR_SUCCESS ? (ros_dbg_log(__WINE_DBCL_ERR, __wine_dbch___default, \
138 __FILE__, __FUNCTION__, __LINE__, \
139 "%s was 0x%X\n", #x, (x)), TRUE) \
143#define IS_CROSS_THREAD_HIMC(hIMC) IS_TRUE_UNEXPECTEDLY(Imm32IsCrossThreadAccess(hIMC))
144#define IS_CROSS_PROCESS_HWND(hWnd) IS_TRUE_UNEXPECTEDLY(Imm32IsCrossProcessAccess(hWnd))
145#define ImeDpi_IsUnicode(pImeDpi) ((pImeDpi)->ImeInfo.fdwProperty & IME_PROP_UNICODE)
146#define IS_16BIT_MODE() (GetWin32ClientInfo()->dwTIFlags & TIF_16BIT)
LPINPUTCONTEXT APIENTRY Imm32InternalLockIMC(HIMC hIMC, BOOL fSelect)
VOID APIENTRY LogFontAnsiToWide(const LOGFONTA *plfA, LPLOGFONTW plfW)
LPSTR APIENTRY Imm32AnsiFromWide(UINT uCodePage, LPCWSTR pszW)
BOOL APIENTRY Imm32WriteImeLayout(HKL hKL, LPCWSTR pchFilePart, LPCWSTR pszLayoutText)
struct REG_IME * PREG_IME
BOOL WINAPI Imm32IsImcAnsi(HIMC hIMC)
BOOL APIENTRY Imm32MakeIMENotify(HIMC hIMC, HWND hwnd, DWORD dwAction, DWORD_PTR dwIndex, DWORD_PTR dwValue, DWORD_PTR dwCommand, DWORD_PTR dwData)
PIME_SUBSTATE APIENTRY Imm32FetchImeSubState(PIME_STATE pState, HKL hKL)
LPVOID APIENTRY ImmLocalAlloc(DWORD dwFlags, DWORD dwBytes)
HRESULT APIENTRY Imm32StrToUInt(LPCWSTR pszText, LPDWORD pdwValue, ULONG nBase)
BOOL APIENTRY Imm32IsCrossThreadAccess(HIMC hIMC)
VOID APIENTRY LogFontWideToAnsi(const LOGFONTW *plfW, LPLOGFONTA plfA)
BOOL Imm32StoreBitmapToBytes(HBITMAP hbm, LPBYTE pbData, DWORD cbDataMax)
BOOL APIENTRY Imm32CopyImeFile(LPWSTR pszOldFile, LPCWSTR pszNewFile)
LPVOID FASTCALL ValidateHandleNoErr(HANDLE hObject, UINT uType)
DWORD APIENTRY CandidateListAnsiToWide(const CANDIDATELIST *pAnsiCL, LPCANDIDATELIST pWideCL, DWORD dwBufLen, UINT uCodePage)
RTL_CRITICAL_SECTION gcsImeDpi
UINT APIENTRY Imm32GetImeLayout(PREG_IME pLayouts, UINT cLayouts)
BOOL APIENTRY Imm32CheckImcProcess(PIMC pIMC)
BOOL APIENTRY Imm32LoadImeVerInfo(PIMEINFOEX pImeInfoEx)
PIMEDPI APIENTRY Imm32FindOrLoadImeDpi(HKL hKL)
PTHREADINFO FASTCALL Imm32CurrentPti(VOID)
LONG APIENTRY IchWideFromAnsi(LONG cchAnsi, LPCSTR pchAnsi, UINT uCodePage)
BOOL APIENTRY Imm32IsCrossProcessAccess(HWND hWnd)
DWORD APIENTRY Imm32ReconvertAnsiFromWide(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc, UINT uCodePage)
BOOL Imm32GetSystemLibraryPath(LPWSTR pszPath, DWORD cchPath, LPCWSTR pszFileName)
DWORD APIENTRY Imm32BuildHimcList(DWORD dwThreadId, HIMC **pphList)
LPVOID FASTCALL ValidateHandle(HANDLE hObject, UINT uType)
PIME_STATE APIENTRY Imm32FetchImeState(LPINPUTCONTEXTDX pIC, HKL hKL)
BOOL APIENTRY Imm32SaveImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL)
HRESULT APIENTRY Imm32UIntToStr(DWORD dwValue, ULONG nBase, LPWSTR pszBuff, USHORT cchBuff)
BOOL APIENTRY Imm32IsSystemJapaneseOrKorean(VOID)
HKL APIENTRY Imm32AssignNewLayout(UINT cKLs, const REG_IME *pLayouts, WORD wLangID)
DWORD APIENTRY CandidateListWideToAnsi(const CANDIDATELIST *pWideCL, LPCANDIDATELIST pAnsiCL, DWORD dwBufLen, UINT uCodePage)
HBITMAP Imm32LoadBitmapFromBytes(const BYTE *pb)
BOOL APIENTRY Imm32LoadImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL)
INT APIENTRY Imm32ImeMenuWideToAnsi(const IMEMENUITEMINFOW *pItemW, LPIMEMENUITEMINFOA pItemA, UINT uCodePage)
INT APIENTRY Imm32ImeMenuAnsiToWide(const IMEMENUITEMINFOA *pItemA, LPIMEMENUITEMINFOW pItemW, UINT uCodePage, BOOL bBitmap)
LONG APIENTRY IchAnsiFromWide(LONG cchWide, LPCWSTR pchWide, UINT uCodePage)
BOOL APIENTRY Imm32ReleaseIME(HKL hKL)
LPWSTR APIENTRY Imm32WideFromAnsi(UINT uCodePage, LPCSTR pszA)
DWORD APIENTRY Imm32ReconvertWideFromAnsi(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc, UINT uCodePage)
static HANDLE ULONG_PTR dwData
WORD WORD PSZ PSZ pszFileName
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_ DWORD _In_ DWORD dwBufLen
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_updates_bytes_to_ pdwDataLen BYTE * pbData