diff --git a/sdk/include/psdk/imm.h b/sdk/include/psdk/imm.h
index 26589e8ab05..aba199e7c5d 100644
--- a/sdk/include/psdk/imm.h
+++ b/sdk/include/psdk/imm.h
@@ -468,13 +468,13 @@ typedef struct _tagCOMPOSITIONFORM {
 #define SOFTKEYBOARD_TYPE_T1    0x0001 /* for Tranditional Chinese */
 #define SOFTKEYBOARD_TYPE_C1    0x0002 /* for Simplified Chinese */
 
-HIMC WINAPI ImmAssociateContext(_In_ HWND hWnd, _In_ HIMC hIMC);
+HIMC WINAPI ImmAssociateContext(_In_ HWND hWnd, _In_opt_ HIMC hIMC);
 #if (WINVER >= 0x040A)
-BOOL WINAPI ImmAssociateContextEx(_In_ HWND hWnd, _In_ HIMC hIMC, _In_ DWORD dwFlags);
+BOOL WINAPI ImmAssociateContextEx(_In_ HWND hWnd, _In_opt_ HIMC hIMC, _In_ DWORD dwFlags);
 #endif
 
-BOOL WINAPI ImmConfigureIMEA(_In_ HKL hKL, _In_ HWND hWnd, _In_ DWORD dwMode, _In_ LPVOID lpData);
-BOOL WINAPI ImmConfigureIMEW(_In_ HKL hKL, _In_ HWND hWnd, _In_ DWORD dwMode, _In_ LPVOID lpData);
+BOOL WINAPI ImmConfigureIMEA(_In_ HKL hKL, _In_ HWND hWnd, _In_ DWORD dwMode, _Inout_opt_ LPVOID lpData);
+BOOL WINAPI ImmConfigureIMEW(_In_ HKL hKL, _In_ HWND hWnd, _In_ DWORD dwMode, _Inout_opt_ LPVOID lpData);
 HIMC WINAPI ImmCreateContext(VOID);
 BOOL WINAPI ImmDestroyContext(_In_ HIMC hIMC);
 #if (WINVER >= 0x040A)
@@ -604,7 +604,7 @@ ImmGetConversionStatus(
     _Out_opt_ LPDWORD lpfdwConversion,
     _Out_opt_ LPDWORD lpfdwSentence);
 
-HWND WINAPI ImmGetDefaultIMEWnd(_In_ HWND hWnd);
+HWND WINAPI ImmGetDefaultIMEWnd(_In_opt_ HWND hWnd);
 
 UINT
 WINAPI
@@ -707,14 +707,14 @@ BOOL WINAPI ImmIsIME(_In_ HKL hKL);
 
 BOOL WINAPI
 ImmIsUIMessageA(
-    _In_ HWND hWndIME,
+    _In_opt_ HWND hWndIME,
     _In_ UINT msg,
     _In_ WPARAM wParam,
     _In_ LPARAM lParam);
 
 BOOL WINAPI
 ImmIsUIMessageW(
-    _In_ HWND hWndIME,
+    _In_opt_ HWND hWndIME,
     _In_ UINT msg,
     _In_ WPARAM wParam,
     _In_ LPARAM lParam);
@@ -730,17 +730,17 @@ BOOL
 WINAPI
 ImmRegisterWordA(
     _In_ HKL hKL,
-    _In_ LPCSTR lpszReading,
+    _In_opt_ LPCSTR lpszReading,
     _In_ DWORD dwStyle,
-    _In_ LPCSTR lpszRegister);
+    _In_opt_ LPCSTR lpszRegister);
 
 BOOL
 WINAPI
 ImmRegisterWordW(
     _In_ HKL hKL,
-    _In_ LPCWSTR lpszReading,
+    _In_opt_ LPCWSTR lpszReading,
     _In_ DWORD dwStyle,
-    _In_ LPCWSTR lpszRegister);
+    _In_opt_ LPCWSTR lpszRegister);
 
 BOOL WINAPI ImmReleaseContext(_In_ HWND hWnd, _In_ HIMC hIMC);
 BOOL WINAPI ImmSetCandidateWindow(_In_ HIMC hIMC, _In_ LPCANDIDATEFORM lpCandidate);
@@ -781,17 +781,17 @@ BOOL
 WINAPI
 ImmUnregisterWordA(
     _In_ HKL hKL,
-    _In_ LPCSTR lpszReading,
+    _In_opt_ LPCSTR lpszReading,
     _In_ DWORD dwStyle,
-    _In_ LPCSTR lpszUnregister);
+    _In_opt_ LPCSTR lpszUnregister);
 
 BOOL
 WINAPI
 ImmUnregisterWordW(
     _In_ HKL hKL,
-    _In_ LPCWSTR lpszReading,
+    _In_opt_ LPCWSTR lpszReading,
     _In_ DWORD dwStyle,
-    _In_ LPCWSTR lpszUnregister);
+    _In_opt_ LPCWSTR lpszUnregister);
 
 #ifdef UNICODE
     #define ImmConfigureIME ImmConfigureIMEW
diff --git a/sdk/include/reactos/imm32_undoc.h b/sdk/include/reactos/imm32_undoc.h
index 1dab3eb4537..ef8004430b7 100644
--- a/sdk/include/reactos/imm32_undoc.h
+++ b/sdk/include/reactos/imm32_undoc.h
@@ -113,7 +113,7 @@ C_ASSERT(sizeof(IMEDPI) == 0xa8);
 #define IMEDPI_FLAG_LOCKED 0x2
 
 PIMEDPI WINAPI ImmLockImeDpi(_In_ HKL hKL);
-VOID WINAPI ImmUnlockImeDpi(_Inout_ PIMEDPI pImeDpi);
+VOID WINAPI ImmUnlockImeDpi(_Inout_opt_ PIMEDPI pImeDpi);
 
 /* unconfirmed */
 typedef struct tagCLIENTIMC
@@ -226,12 +226,19 @@ ImmGetImeInfoEx(
 
 BOOL WINAPI ImmLoadLayout(_In_ HKL hKL, _Inout_ PIMEINFOEX pImeInfoEx);
 DWORD WINAPI ImmGetAppCompatFlags(_In_ HIMC hIMC);
-BOOL WINAPI ImmSetActiveContext(_In_ HWND hwnd, _In_ HIMC hIMC, _In_ BOOL fFlag);
+BOOL WINAPI ImmSetActiveContext(_In_ HWND hwnd, _In_opt_ HIMC hIMC, _In_ BOOL fFlag);
 BOOL WINAPI ImmLoadIME(_In_ HKL hKL);
 DWORD WINAPI ImmProcessKey(_In_ HWND, _In_ HKL, _In_ UINT, _In_ LPARAM, _In_ DWORD);
 LRESULT WINAPI ImmPutImeMenuItemsIntoMappedFile(_In_ HIMC hIMC);
 BOOL WINAPI ImmWINNLSGetEnableStatus(_In_opt_ HWND hWnd);
 BOOL WINAPI ImmSetActiveContextConsoleIME(_In_ HWND hwnd, _In_ BOOL fFlag);
+BOOL WINAPI ImmActivateLayout(_In_ HKL hKL);
+BOOL WINAPI ImmFreeLayout(_In_ HKL hKL);
+
+BOOL WINAPI
+ImmWINNLSEnableIME(
+    _In_opt_ HWND hWnd,
+    _In_ BOOL enable);
 
 LRESULT WINAPI
 ImmSystemHandler(
@@ -246,6 +253,16 @@ BOOL WINAPI ImmIMPQueryIMEW(_Inout_ LPIMEPROW pImePro);
 BOOL WINAPI ImmIMPSetIMEA(_In_opt_ HWND hWnd, _Inout_ LPIMEPROA pImePro);
 BOOL WINAPI ImmIMPSetIMEW(_In_opt_ HWND hWnd, _Inout_ LPIMEPROW pImePro);
 
+WORD WINAPI
+ImmSendIMEMessageExA(
+    _In_ HWND hWnd,
+    _In_ LPARAM lParam);
+
+WORD WINAPI
+ImmSendIMEMessageExW(
+    _In_ HWND hWnd,
+    _In_ LPARAM lParam);
+
 HRESULT WINAPI CtfAImmActivate(_Out_opt_ HINSTANCE *phinstCtfIme);
 HRESULT WINAPI CtfAImmDeactivate(_In_ BOOL bDestroy);
 BOOL WINAPI CtfAImmIsIME(_In_ HKL hKL);
@@ -274,10 +291,12 @@ CtfImmDispatchDefImeMessage(
     #define ImmIMPGetIME ImmIMPGetIMEW
     #define ImmIMPQueryIME ImmIMPQueryIMEW
     #define ImmIMPSetIME ImmIMPSetIMEW
+    #define ImmSendIMEMessageEx ImmSendIMEMessageExW
 #else
     #define ImmIMPGetIME ImmIMPGetIMEA
     #define ImmIMPQueryIME ImmIMPQueryIMEA
     #define ImmIMPSetIME ImmIMPSetIMEA
+    #define ImmSendIMEMessageEx ImmSendIMEMessageExA
 #endif
 
 #ifdef __cplusplus
diff --git a/win32ss/user/imm32/candidate.c b/win32ss/user/imm32/candidate.c
index 561b58ee297..8b512bd04c5 100644
--- a/win32ss/user/imm32/candidate.c
+++ b/win32ss/user/imm32/candidate.c
@@ -11,7 +11,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(imm);
 
 #define ROUNDUP4(n) (((n) + 3) & ~3)  /* DWORD alignment */
 
-DWORD APIENTRY
+DWORD
 CandidateListWideToAnsi(const CANDIDATELIST *pWideCL, LPCANDIDATELIST pAnsiCL, DWORD dwBufLen,
                         UINT uCodePage)
 {
@@ -80,8 +80,7 @@ CandidateListWideToAnsi(const CANDIDATELIST *pWideCL, LPCANDIDATELIST pAnsiCL, D
     return dwBufLen;
 }
 
-// Win: InternalGetCandidateListAtoW
-DWORD APIENTRY
+DWORD
 CandidateListAnsiToWide(const CANDIDATELIST *pAnsiCL, LPCANDIDATELIST pWideCL, DWORD dwBufLen,
                         UINT uCodePage)
 {
@@ -149,10 +148,13 @@ CandidateListAnsiToWide(const CANDIDATELIST *pAnsiCL, LPCANDIDATELIST pWideCL, D
     return dwBufLen;
 }
 
-// Win: ImmGetCandidateListWorker
-static DWORD APIENTRY
-ImmGetCandidateListAW(HIMC hIMC, DWORD dwIndex, LPCANDIDATELIST lpCandList, DWORD dwBufLen,
-                      BOOL bAnsi)
+static DWORD
+ImmGetCandidateListAW(
+    _In_ HIMC hIMC,
+    _In_ DWORD dwIndex,
+    _Out_writes_bytes_opt_(dwBufLen) LPCANDIDATELIST lpCandList,
+    _In_ DWORD dwBufLen,
+    _In_ BOOL bAnsi)
 {
     DWORD dwSize, ret = 0;
     UINT uCodePage;
@@ -242,9 +244,11 @@ Quit:
     return ret;
 }
 
-// Win: ImmGetCandidateListCountWorker
-DWORD APIENTRY
-ImmGetCandidateListCountAW(HIMC hIMC, LPDWORD lpdwListCount, BOOL bAnsi)
+static DWORD
+ImmGetCandidateListCountAW(
+    _In_ HIMC hIMC,
+    _Out_ LPDWORD lpdwListCount,
+    _In_ BOOL bAnsi)
 {
     DWORD ret = 0, cbGot, dwIndex;
     PCLIENTIMC pClientImc;
@@ -341,7 +345,11 @@ Quit:
  *		ImmGetCandidateListA (IMM32.@)
  */
 DWORD WINAPI
-ImmGetCandidateListA(HIMC hIMC, DWORD dwIndex, LPCANDIDATELIST lpCandList, DWORD dwBufLen)
+ImmGetCandidateListA(
+    _In_ HIMC hIMC,
+    _In_ DWORD dwIndex,
+    _Out_writes_bytes_opt_(dwBufLen) LPCANDIDATELIST lpCandList,
+    _In_ DWORD dwBufLen)
 {
     return ImmGetCandidateListAW(hIMC, dwIndex, lpCandList, dwBufLen, TRUE);
 }
@@ -349,7 +357,10 @@ ImmGetCandidateListA(HIMC hIMC, DWORD dwIndex, LPCANDIDATELIST lpCandList, DWORD
 /***********************************************************************
  *		ImmGetCandidateListCountA (IMM32.@)
  */
-DWORD WINAPI ImmGetCandidateListCountA(HIMC hIMC, LPDWORD lpdwListCount)
+DWORD WINAPI
+ImmGetCandidateListCountA(
+    _In_ HIMC hIMC,
+    _Out_ LPDWORD lpdwListCount)
 {
     return ImmGetCandidateListCountAW(hIMC, lpdwListCount, TRUE);
 }
@@ -357,7 +368,10 @@ DWORD WINAPI ImmGetCandidateListCountA(HIMC hIMC, LPDWORD lpdwListCount)
 /***********************************************************************
  *		ImmGetCandidateListCountW (IMM32.@)
  */
-DWORD WINAPI ImmGetCandidateListCountW(HIMC hIMC, LPDWORD lpdwListCount)
+DWORD WINAPI
+ImmGetCandidateListCountW(
+    _In_ HIMC hIMC,
+    _Out_ LPDWORD lpdwListCount)
 {
     return ImmGetCandidateListCountAW(hIMC, lpdwListCount, FALSE);
 }
@@ -366,7 +380,11 @@ DWORD WINAPI ImmGetCandidateListCountW(HIMC hIMC, LPDWORD lpdwListCount)
  *		ImmGetCandidateListW (IMM32.@)
  */
 DWORD WINAPI
-ImmGetCandidateListW(HIMC hIMC, DWORD dwIndex, LPCANDIDATELIST lpCandList, DWORD dwBufLen)
+ImmGetCandidateListW(
+    _In_ HIMC hIMC,
+    _In_ DWORD dwIndex,
+    _Out_writes_bytes_opt_(dwBufLen) LPCANDIDATELIST lpCandList,
+    _In_ DWORD dwBufLen)
 {
     return ImmGetCandidateListAW(hIMC, dwIndex, lpCandList, dwBufLen, FALSE);
 }
@@ -375,7 +393,10 @@ ImmGetCandidateListW(HIMC hIMC, DWORD dwIndex, LPCANDIDATELIST lpCandList, DWORD
  *		ImmGetCandidateWindow (IMM32.@)
  */
 BOOL WINAPI
-ImmGetCandidateWindow(HIMC hIMC, DWORD dwIndex, LPCANDIDATEFORM lpCandidate)
+ImmGetCandidateWindow(
+    _In_ HIMC hIMC,
+    _In_ DWORD dwIndex,
+    _Out_ LPCANDIDATEFORM lpCandidate)
 {
     BOOL ret = FALSE;
     LPINPUTCONTEXT pIC;
@@ -408,7 +429,10 @@ ImmGetCandidateWindow(HIMC hIMC, DWORD dwIndex, LPCANDIDATEFORM lpCandidate)
 /***********************************************************************
  *		ImmSetCandidateWindow (IMM32.@)
  */
-BOOL WINAPI ImmSetCandidateWindow(HIMC hIMC, LPCANDIDATEFORM lpCandidate)
+BOOL WINAPI
+ImmSetCandidateWindow(
+    _In_ HIMC hIMC,
+    _In_ LPCANDIDATEFORM lpCandidate)
 {
     HWND hWnd;
     LPINPUTCONTEXT pIC;
diff --git a/win32ss/user/imm32/compstr.c b/win32ss/user/imm32/compstr.c
index 5b1c153d0f4..47301b95ada 100644
--- a/win32ss/user/imm32/compstr.c
+++ b/win32ss/user/imm32/compstr.c
@@ -13,7 +13,7 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(imm);
 
-BOOL APIENTRY
+BOOL
 Imm32OpenICAndCS(HIMC hIMC, LPINPUTCONTEXT *ppIC, LPCOMPOSITIONSTRING *ppCS)
 {
     LPINPUTCONTEXT pIC;
@@ -38,7 +38,7 @@ Imm32OpenICAndCS(HIMC hIMC, LPINPUTCONTEXT *ppIC, LPCOMPOSITIONSTRING *ppCS)
     return TRUE;
 }
 
-static inline LONG APIENTRY
+static inline LONG
 Imm32CompStrAnsiToWide(LPCSTR psz, DWORD cb, LPWSTR lpBuf, DWORD dwBufLen, UINT uCodePage)
 {
     DWORD ret = MultiByteToWideChar(uCodePage, MB_PRECOMPOSED, psz, cb / sizeof(CHAR),
@@ -48,7 +48,7 @@ Imm32CompStrAnsiToWide(LPCSTR psz, DWORD cb, LPWSTR lpBuf, DWORD dwBufLen, UINT
     return ret * sizeof(WCHAR);
 }
 
-static inline LONG APIENTRY
+static inline LONG
 Imm32CompStrWideToAnsi(LPCWSTR psz, DWORD cb, LPSTR lpBuf, DWORD dwBufLen, UINT uCodePage)
 {
     DWORD ret = WideCharToMultiByte(uCodePage, 0, psz, cb / sizeof(WCHAR),
@@ -58,7 +58,7 @@ Imm32CompStrWideToAnsi(LPCWSTR psz, DWORD cb, LPSTR lpBuf, DWORD dwBufLen, UINT
     return ret * sizeof(CHAR);
 }
 
-static INT APIENTRY
+static INT
 Imm32CompAttrWideToAnsi(const BYTE *src, INT src_len, LPCWSTR text,
                         INT str_len, LPBYTE dst, INT dst_len, UINT uCodePage)
 {
@@ -94,7 +94,7 @@ end:
     return rc * sizeof(BYTE);
 }
 
-static INT APIENTRY
+static INT
 Imm32CompAttrAnsiToWide(const BYTE *src, INT src_len, LPCSTR text,
                         INT str_len, LPBYTE dst, INT dst_len, UINT uCodePage)
 {
@@ -129,7 +129,7 @@ Imm32CompAttrAnsiToWide(const BYTE *src, INT src_len, LPCSTR text,
     return rc * sizeof(BYTE);
 }
 
-static INT APIENTRY
+static INT
 Imm32CompClauseAnsiToWide(const DWORD *source, INT slen, LPCSTR text,
                           LPDWORD target, INT tlen, UINT uCodePage)
 {
@@ -160,7 +160,7 @@ Imm32CompClauseAnsiToWide(const DWORD *source, INT slen, LPCSTR text,
     return rc;
 }
 
-static INT APIENTRY
+static INT
 Imm32CompClauseWideToAnsi(const DWORD *source, INT slen, LPCWSTR text,
                           LPDWORD target, INT tlen, UINT uCodePage)
 {
@@ -214,8 +214,7 @@ Imm32CompClauseWideToAnsi(const DWORD *source, INT slen, LPCWSTR text,
 #define CS_DoAttr CS_DoStrA
 #define CS_DoClause CS_DoStrA
 
-// Win: InternalGetCompositionStringA
-LONG APIENTRY
+static LONG
 Imm32GetCompStrA(HIMC hIMC, const COMPOSITIONSTRING *pCS, DWORD dwIndex,
                  LPVOID lpBuf, DWORD dwBufLen, BOOL bAnsiClient, UINT uCodePage)
 {
@@ -365,8 +364,7 @@ Imm32GetCompStrA(HIMC hIMC, const COMPOSITIONSTRING *pCS, DWORD dwIndex,
     return dwBufLen;
 }
 
-// Win: InternalGetCompositionStringW
-LONG APIENTRY
+static LONG
 Imm32GetCompStrW(HIMC hIMC, const COMPOSITIONSTRING *pCS, DWORD dwIndex,
                  LPVOID lpBuf, DWORD dwBufLen, BOOL bAnsiClient, UINT uCodePage)
 {
@@ -515,10 +513,15 @@ Imm32GetCompStrW(HIMC hIMC, const COMPOSITIONSTRING *pCS, DWORD dwIndex,
     return dwBufLen;
 }
 
-// Win: ImmSetCompositionStringWorker
-BOOL APIENTRY
-ImmSetCompositionStringAW(HIMC hIMC, DWORD dwIndex, LPVOID pComp, DWORD dwCompLen,
-                          LPVOID pRead, DWORD dwReadLen, BOOL bAnsiAPI)
+static BOOL
+ImmSetCompositionStringAW(
+    _In_ HIMC hIMC,
+    _In_ DWORD dwIndex,
+    _Inout_updates_bytes_opt_(dwCompLen) LPVOID pComp,
+    _In_ DWORD dwCompLen,
+    _Inout_updates_bytes_opt_(dwReadLen) LPVOID pRead,
+    _In_ DWORD dwReadLen,
+    _In_ BOOL bAnsiAPI)
 {
     BOOL ret = FALSE, bAnsiClient;
     LPVOID pCompNew = NULL, pReadNew = NULL;
@@ -853,7 +856,12 @@ Quit:
 /***********************************************************************
  *		ImmGetCompositionStringA (IMM32.@)
  */
-LONG WINAPI ImmGetCompositionStringA(HIMC hIMC, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen)
+LONG WINAPI
+ImmGetCompositionStringA(
+    _In_ HIMC hIMC,
+    _In_ DWORD dwIndex,
+    _Out_writes_bytes_opt_(dwBufLen) LPVOID lpBuf,
+    _In_ DWORD dwBufLen)
 {
     LONG ret = 0;
     LPINPUTCONTEXT pIC;
@@ -896,7 +904,12 @@ LONG WINAPI ImmGetCompositionStringA(HIMC hIMC, DWORD dwIndex, LPVOID lpBuf, DWO
 /***********************************************************************
  *		ImmGetCompositionStringW (IMM32.@)
  */
-LONG WINAPI ImmGetCompositionStringW(HIMC hIMC, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen)
+LONG WINAPI
+ImmGetCompositionStringW(
+    _In_ HIMC hIMC,
+    _In_ DWORD dwIndex,
+    _Out_writes_bytes_opt_(dwBufLen) LPVOID lpBuf,
+    _In_ DWORD dwBufLen)
 {
     LONG ret = 0;
     LPINPUTCONTEXT pIC;
@@ -940,8 +953,13 @@ LONG WINAPI ImmGetCompositionStringW(HIMC hIMC, DWORD dwIndex, LPVOID lpBuf, DWO
  *		ImmSetCompositionStringA (IMM32.@)
  */
 BOOL WINAPI
-ImmSetCompositionStringA(HIMC hIMC, DWORD dwIndex, LPVOID lpComp, DWORD dwCompLen,
-                         LPVOID lpRead, DWORD dwReadLen)
+ImmSetCompositionStringA(
+    _In_ HIMC hIMC,
+    _In_ DWORD dwIndex,
+    _Inout_updates_bytes_opt_(dwCompLen) LPVOID lpComp,
+    _In_ DWORD dwCompLen,
+    _Inout_updates_bytes_opt_(dwReadLen) LPVOID lpRead,
+    _In_ DWORD dwReadLen)
 {
     TRACE("(%p, %lu, %p, %lu, %p, %lu)\n",
           hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen);
@@ -952,8 +970,13 @@ ImmSetCompositionStringA(HIMC hIMC, DWORD dwIndex, LPVOID lpComp, DWORD dwCompLe
  *		ImmSetCompositionStringW (IMM32.@)
  */
 BOOL WINAPI
-ImmSetCompositionStringW(HIMC hIMC, DWORD dwIndex, LPVOID lpComp, DWORD dwCompLen,
-                         LPVOID lpRead, DWORD dwReadLen)
+ImmSetCompositionStringW(
+    _In_ HIMC hIMC,
+    _In_ DWORD dwIndex,
+    _Inout_updates_bytes_opt_(dwCompLen) LPVOID lpComp,
+    _In_ DWORD dwCompLen,
+    _Inout_updates_bytes_opt_(dwReadLen) LPVOID lpRead,
+    _In_ DWORD dwReadLen)
 {
     TRACE("(%p, %lu, %p, %lu, %p, %lu)\n",
           hIMC, dwIndex, lpComp, dwCompLen, lpRead, dwReadLen);
diff --git a/win32ss/user/imm32/ctf.c b/win32ss/user/imm32/ctf.c
index b0e9ee5c5ab..3f33fa7ed10 100644
--- a/win32ss/user/imm32/ctf.c
+++ b/win32ss/user/imm32/ctf.c
@@ -1208,7 +1208,8 @@ typedef struct IMM_DELAY_SET_LANG_BAND
 } IMM_DELAY_SET_LANG_BAND, *PIMM_DELAY_SET_LANG_BAND;
 
 /* Sends a message to set the language band with delay. */
-static DWORD APIENTRY Imm32DelaySetLangBandProc(LPVOID arg)
+static DWORD WINAPI
+Imm32DelaySetLangBandProc(LPVOID arg)
 {
     HWND hwndDefIME;
     WPARAM wParam;
diff --git a/win32ss/user/imm32/guideline.c b/win32ss/user/imm32/guideline.c
index 7a3e26b63a2..a679e816e1e 100644
--- a/win32ss/user/imm32/guideline.c
+++ b/win32ss/user/imm32/guideline.c
@@ -9,9 +9,13 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(imm);
 
-// Win: ImmGetGuideLineWorker
-DWORD APIENTRY
-ImmGetGuideLineAW(HIMC hIMC, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen, BOOL bAnsi)
+static DWORD
+ImmGetGuideLineAW(
+    _In_ HIMC hIMC,
+    _In_ DWORD dwIndex,
+    _Out_writes_bytes_opt_(dwBufLen) LPVOID lpBuf,
+    _In_ DWORD dwBufLen,
+    _In_ BOOL bAnsi)
 {
     PCLIENTIMC pClientImc;
     LPINPUTCONTEXT pIC;
@@ -187,7 +191,12 @@ Quit:
 /***********************************************************************
  *		ImmGetGuideLineA (IMM32.@)
  */
-DWORD WINAPI ImmGetGuideLineA(HIMC hIMC, DWORD dwIndex, LPSTR lpBuf, DWORD dwBufLen)
+DWORD WINAPI
+ImmGetGuideLineA(
+    _In_ HIMC hIMC,
+    _In_ DWORD dwIndex,
+    _Out_writes_bytes_opt_(dwBufLen) LPSTR lpBuf,
+    _In_ DWORD dwBufLen)
 {
     TRACE("(%p, %lu, %p, %lu)\n", hIMC, dwIndex, lpBuf, dwBufLen);
     return ImmGetGuideLineAW(hIMC, dwIndex, lpBuf, dwBufLen, TRUE);
@@ -196,7 +205,12 @@ DWORD WINAPI ImmGetGuideLineA(HIMC hIMC, DWORD dwIndex, LPSTR lpBuf, DWORD dwBuf
 /***********************************************************************
  *		ImmGetGuideLineW (IMM32.@)
  */
-DWORD WINAPI ImmGetGuideLineW(HIMC hIMC, DWORD dwIndex, LPWSTR lpBuf, DWORD dwBufLen)
+DWORD WINAPI
+ImmGetGuideLineW(
+    _In_ HIMC hIMC,
+    _In_ DWORD dwIndex,
+    _Out_writes_bytes_opt_(dwBufLen) LPWSTR lpBuf,
+    _In_ DWORD dwBufLen)
 {
     TRACE("(%p, %lu, %p, %lu)\n", hIMC, dwIndex, lpBuf, dwBufLen);
     return ImmGetGuideLineAW(hIMC, dwIndex, lpBuf, dwBufLen, FALSE);
diff --git a/win32ss/user/imm32/ime.c b/win32ss/user/imm32/ime.c
index 879dd244f33..fea87ba1c71 100644
--- a/win32ss/user/imm32/ime.c
+++ b/win32ss/user/imm32/ime.c
@@ -13,11 +13,10 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(imm);
 
-RTL_CRITICAL_SECTION gcsImeDpi; // Win: gcsImeDpi
-PIMEDPI gpImeDpiList = NULL; // Win: gpImeDpi
+RTL_CRITICAL_SECTION gcsImeDpi;
+PIMEDPI gpImeDpiList = NULL;
 
-// Win: ImmGetImeDpi
-PIMEDPI APIENTRY Imm32FindImeDpi(HKL hKL)
+PIMEDPI Imm32FindImeDpi(HKL hKL)
 {
     PIMEDPI pImeDpi;
 
@@ -32,8 +31,7 @@ PIMEDPI APIENTRY Imm32FindImeDpi(HKL hKL)
     return pImeDpi;
 }
 
-// Win: UnloadIME
-VOID APIENTRY Imm32FreeIME(PIMEDPI pImeDpi, BOOL bDestroy)
+VOID Imm32FreeIME(PIMEDPI pImeDpi, BOOL bDestroy)
 {
     if (pImeDpi->hInst == NULL)
         return;
@@ -43,8 +41,7 @@ VOID APIENTRY Imm32FreeIME(PIMEDPI pImeDpi, BOOL bDestroy)
     pImeDpi->hInst = NULL;
 }
 
-// Win: InquireIme
-BOOL APIENTRY Imm32InquireIme(PIMEDPI pImeDpi)
+BOOL Imm32InquireIme(PIMEDPI pImeDpi)
 {
     WCHAR szUIClass[64];
     WNDCLASSW wcW;
@@ -194,7 +191,8 @@ BOOL APIENTRY Imm32InquireIme(PIMEDPI pImeDpi)
 #include <imetable.h>
 #undef DEFINE_IME_ENTRY
 
-BOOL APIENTRY Imm32LoadIME(PIMEINFOEX pImeInfoEx, PIMEDPI pImeDpi)
+static BOOL
+Imm32LoadIME(PIMEINFOEX pImeInfoEx, PIMEDPI pImeDpi)
 {
     WCHAR szPath[MAX_PATH];
     HINSTANCE hIME;
@@ -207,7 +205,7 @@ BOOL APIENTRY Imm32LoadIME(PIMEINFOEX pImeInfoEx, PIMEDPI pImeDpi)
     pImeDpi->hInst = hIME = LoadLibraryW(szPath);
     if (hIME == NULL)
     {
-        ERR("LoadLibraryW(%S) failed\n", szPath);
+        ERR("LoadLibraryW(%s) failed\n", debugstr_w(szPath));
         return FALSE;
     }
 
@@ -222,7 +220,7 @@ BOOL APIENTRY Imm32LoadIME(PIMEINFOEX pImeInfoEx, PIMEDPI pImeDpi)
         fn = GetProcAddress(hIME, #name); \
         if (fn) pImeDpi->name = (FN_##name)fn; \
         else if (!(optional)) { \
-            ERR("'%s' not found in IME module '%S'.\n", #name, szPath); \
+            ERR("'%s' not found in IME module %s.\n", #name, debugstr_w(szPath)); \
             goto Failed; \
         } \
     } while (0);
@@ -234,7 +232,7 @@ BOOL APIENTRY Imm32LoadIME(PIMEINFOEX pImeInfoEx, PIMEDPI pImeDpi)
     {
 #define CHECK_IME_FN(name) do { \
     if (!pImeDpi->name) { \
-        ERR("'%s' not found in Cicero IME module '%S'.\n", #name, szPath); \
+        ERR("'%s' not found in Cicero IME module %s.\n", #name, debugstr_w(szPath)); \
         goto Failed; \
     } \
 } while(0)
@@ -279,7 +277,8 @@ Failed:
     return ret;
 }
 
-PIMEDPI APIENTRY Imm32LoadImeDpi(HKL hKL, BOOL bLock)
+static PIMEDPI
+Imm32LoadImeDpi(HKL hKL, BOOL bLock)
 {
     IMEINFOEX ImeInfoEx;
     CHARSETINFO ci;
@@ -348,8 +347,7 @@ PIMEDPI APIENTRY Imm32LoadImeDpi(HKL hKL, BOOL bLock)
     }
 }
 
-// Win: FindOrLoadImeDpi
-PIMEDPI APIENTRY Imm32FindOrLoadImeDpi(HKL hKL)
+PIMEDPI Imm32FindOrLoadImeDpi(HKL hKL)
 {
     PIMEDPI pImeDpi;
 
@@ -365,7 +363,7 @@ PIMEDPI APIENTRY Imm32FindOrLoadImeDpi(HKL hKL)
     return pImeDpi;
 }
 
-static LRESULT APIENTRY
+static LRESULT
 ImeDpi_Escape(PIMEDPI pImeDpi, HIMC hIMC, UINT uSubFunc, LPVOID lpData, HKL hKL)
 {
     if (IS_IME_HKL(hKL))
@@ -376,8 +374,8 @@ ImeDpi_Escape(PIMEDPI pImeDpi, HIMC hIMC, UINT uSubFunc, LPVOID lpData, HKL hKL)
     return 0;
 }
 
-// Win: ImmUnloadIME
-BOOL APIENTRY Imm32ReleaseIME(HKL hKL)
+BOOL
+Imm32ReleaseIME(_In_ HKL hKL)
 {
     BOOL ret = TRUE;
     PIMEDPI pImeDpi0, pImeDpi1;
@@ -427,7 +425,8 @@ Quit:
 /***********************************************************************
  *		ImmIsIME (IMM32.@)
  */
-BOOL WINAPI ImmIsIME(HKL hKL)
+BOOL WINAPI
+ImmIsIME(_In_ HKL hKL)
 {
     IMEINFOEX info;
     TRACE("(%p)\n", hKL);
@@ -437,7 +436,8 @@ BOOL WINAPI ImmIsIME(HKL hKL)
 /***********************************************************************
  *		ImmGetDefaultIMEWnd (IMM32.@)
  */
-HWND WINAPI ImmGetDefaultIMEWnd(HWND hWnd)
+HWND WINAPI
+ImmGetDefaultIMEWnd(_In_opt_ HWND hWnd)
 {
     if (!IS_IMM_MODE())
     {
@@ -454,7 +454,12 @@ HWND WINAPI ImmGetDefaultIMEWnd(HWND hWnd)
 /***********************************************************************
  *		ImmNotifyIME (IMM32.@)
  */
-BOOL WINAPI ImmNotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD_PTR dwValue)
+BOOL WINAPI
+ImmNotifyIME(
+    _In_ HIMC hIMC,
+    _In_ DWORD dwAction,
+    _In_ DWORD dwIndex,
+    _In_ DWORD_PTR dwValue)
 {
     HKL hKL;
     PIMEDPI pImeDpi;
@@ -522,7 +527,8 @@ ImmGetImeInfoEx(PIMEINFOEX pImeInfoEx, IMEINFOEXCLASS SearchType, PVOID pvSearch
 /***********************************************************************
  *		ImmLockImeDpi (IMM32.@)
  */
-PIMEDPI WINAPI ImmLockImeDpi(HKL hKL)
+PIMEDPI WINAPI
+ImmLockImeDpi(_In_ HKL hKL)
 {
     PIMEDPI pImeDpi = NULL;
 
@@ -551,7 +557,9 @@ PIMEDPI WINAPI ImmLockImeDpi(HKL hKL)
 /***********************************************************************
  *		ImmUnlockImeDpi (IMM32.@)
  */
-VOID WINAPI ImmUnlockImeDpi(PIMEDPI pImeDpi)
+VOID WINAPI
+ImmUnlockImeDpi(
+    _Inout_opt_ PIMEDPI pImeDpi)
 {
     PIMEDPI *ppEntry;
 
@@ -599,7 +607,8 @@ VOID WINAPI ImmUnlockImeDpi(PIMEDPI pImeDpi)
 /***********************************************************************
  *		ImmLoadIME (IMM32.@)
  */
-BOOL WINAPI ImmLoadIME(HKL hKL)
+BOOL WINAPI
+ImmLoadIME(_In_ HKL hKL)
 {
     PIMEDPI pImeDpi;
 
@@ -618,7 +627,8 @@ BOOL WINAPI ImmLoadIME(HKL hKL)
 /***********************************************************************
  *		ImmDisableIME (IMM32.@)
  */
-BOOL WINAPI ImmDisableIME(DWORD dwThreadId)
+BOOL WINAPI
+ImmDisableIME(_In_ DWORD dwThreadId)
 {
     return NtUserDisableThreadIme(dwThreadId);
 }
@@ -626,7 +636,11 @@ BOOL WINAPI ImmDisableIME(DWORD dwThreadId)
 /***********************************************************************
  *		ImmGetDescriptionA (IMM32.@)
  */
-UINT WINAPI ImmGetDescriptionA(HKL hKL, LPSTR lpszDescription, UINT uBufLen)
+UINT WINAPI
+ImmGetDescriptionA(
+    _In_ HKL hKL,
+    _Out_writes_opt_(uBufLen) LPSTR lpszDescription,
+    _In_ UINT uBufLen)
 {
     IMEINFOEX info;
     size_t cch;
@@ -650,7 +664,11 @@ UINT WINAPI ImmGetDescriptionA(HKL hKL, LPSTR lpszDescription, UINT uBufLen)
 /***********************************************************************
  *		ImmGetDescriptionW (IMM32.@)
  */
-UINT WINAPI ImmGetDescriptionW(HKL hKL, LPWSTR lpszDescription, UINT uBufLen)
+UINT WINAPI
+ImmGetDescriptionW(
+    _In_ HKL hKL,
+    _Out_writes_opt_(uBufLen) LPWSTR lpszDescription,
+    _In_ UINT uBufLen)
 {
     IMEINFOEX info;
     size_t cch;
@@ -673,7 +691,11 @@ UINT WINAPI ImmGetDescriptionW(HKL hKL, LPWSTR lpszDescription, UINT uBufLen)
 /***********************************************************************
  *		ImmGetIMEFileNameA (IMM32.@)
  */
-UINT WINAPI ImmGetIMEFileNameA( HKL hKL, LPSTR lpszFileName, UINT uBufLen)
+UINT WINAPI
+ImmGetIMEFileNameA(
+    _In_ HKL hKL,
+    _Out_writes_opt_(uBufLen) LPSTR lpszFileName,
+    _In_ UINT uBufLen)
 {
     BOOL bDefUsed;
     IMEINFOEX info;
@@ -706,7 +728,11 @@ UINT WINAPI ImmGetIMEFileNameA( HKL hKL, LPSTR lpszFileName, UINT uBufLen)
 /***********************************************************************
  *		ImmGetIMEFileNameW (IMM32.@)
  */
-UINT WINAPI ImmGetIMEFileNameW(HKL hKL, LPWSTR lpszFileName, UINT uBufLen)
+UINT WINAPI
+ImmGetIMEFileNameW(
+    _In_ HKL hKL,
+    _Out_writes_opt_(uBufLen) LPWSTR lpszFileName,
+    _In_ UINT uBufLen)
 {
     IMEINFOEX info;
     size_t cch;
@@ -737,7 +763,10 @@ UINT WINAPI ImmGetIMEFileNameW(HKL hKL, LPWSTR lpszFileName, UINT uBufLen)
 /***********************************************************************
  *		ImmGetProperty (IMM32.@)
  */
-DWORD WINAPI ImmGetProperty(HKL hKL, DWORD fdwIndex)
+DWORD WINAPI
+ImmGetProperty(
+    _In_ HKL hKL,
+    _In_ DWORD fdwIndex)
 {
     IMEINFOEX ImeInfoEx;
     LPIMEINFO pImeInfo;
@@ -787,7 +816,12 @@ DWORD WINAPI ImmGetProperty(HKL hKL, DWORD fdwIndex)
 /***********************************************************************
  *		ImmEscapeA (IMM32.@)
  */
-LRESULT WINAPI ImmEscapeA(HKL hKL, HIMC hIMC, UINT uSubFunc, LPVOID lpData)
+LRESULT WINAPI
+ImmEscapeA(
+    _In_ HKL hKL,
+    _In_ HIMC hIMC,
+    _In_ UINT uSubFunc,
+    _Inout_opt_ LPVOID lpData)
 {
     LRESULT ret;
     PIMEDPI pImeDpi;
@@ -875,7 +909,12 @@ LRESULT WINAPI ImmEscapeA(HKL hKL, HIMC hIMC, UINT uSubFunc, LPVOID lpData)
 /***********************************************************************
  *		ImmEscapeW (IMM32.@)
  */
-LRESULT WINAPI ImmEscapeW(HKL hKL, HIMC hIMC, UINT uSubFunc, LPVOID lpData)
+LRESULT WINAPI
+ImmEscapeW(
+    _In_ HKL hKL,
+    _In_ HIMC hIMC,
+    _In_ UINT uSubFunc,
+    _Inout_opt_ LPVOID lpData)
 {
     LRESULT ret;
     PIMEDPI pImeDpi;
@@ -953,7 +992,8 @@ LRESULT WINAPI ImmEscapeW(HKL hKL, HIMC hIMC, UINT uSubFunc, LPVOID lpData)
 /***********************************************************************
  *		ImmGetOpenStatus (IMM32.@)
  */
-BOOL WINAPI ImmGetOpenStatus(HIMC hIMC)
+BOOL WINAPI
+ImmGetOpenStatus(_In_ HIMC hIMC)
 {
     BOOL ret;
     LPINPUTCONTEXT pIC;
@@ -976,7 +1016,10 @@ BOOL WINAPI ImmGetOpenStatus(HIMC hIMC)
 /***********************************************************************
  *		ImmSetOpenStatus (IMM32.@)
  */
-BOOL WINAPI ImmSetOpenStatus(HIMC hIMC, BOOL fOpen)
+BOOL WINAPI
+ImmSetOpenStatus(
+    _In_ HIMC hIMC,
+    _In_ BOOL fOpen)
 {
     DWORD dwConversion;
     LPINPUTCONTEXT pIC;
@@ -1019,7 +1062,10 @@ BOOL WINAPI ImmSetOpenStatus(HIMC hIMC, BOOL fOpen)
 /***********************************************************************
  *		ImmGetStatusWindowPos (IMM32.@)
  */
-BOOL WINAPI ImmGetStatusWindowPos(HIMC hIMC, LPPOINT lpptPos)
+BOOL WINAPI
+ImmGetStatusWindowPos(
+    _In_ HIMC hIMC,
+    _Out_ LPPOINT lpptPos)
 {
     LPINPUTCONTEXT pIC;
     BOOL ret;
@@ -1041,7 +1087,10 @@ BOOL WINAPI ImmGetStatusWindowPos(HIMC hIMC, LPPOINT lpptPos)
 /***********************************************************************
  *		ImmSetStatusWindowPos (IMM32.@)
  */
-BOOL WINAPI ImmSetStatusWindowPos(HIMC hIMC, LPPOINT lpptPos)
+BOOL WINAPI
+ImmSetStatusWindowPos(
+    _In_ HIMC hIMC,
+    _In_ LPPOINT lpptPos)
 {
     LPINPUTCONTEXT pIC;
     HWND hWnd;
@@ -1069,7 +1118,10 @@ BOOL WINAPI ImmSetStatusWindowPos(HIMC hIMC, LPPOINT lpptPos)
 /***********************************************************************
  *		ImmGetCompositionWindow (IMM32.@)
  */
-BOOL WINAPI ImmGetCompositionWindow(HIMC hIMC, LPCOMPOSITIONFORM lpCompForm)
+BOOL WINAPI
+ImmGetCompositionWindow(
+    _In_ HIMC hIMC,
+    _Out_ LPCOMPOSITIONFORM lpCompForm)
 {
     LPINPUTCONTEXT pIC;
     BOOL ret = FALSE;
@@ -1093,7 +1145,10 @@ BOOL WINAPI ImmGetCompositionWindow(HIMC hIMC, LPCOMPOSITIONFORM lpCompForm)
 /***********************************************************************
  *		ImmSetCompositionWindow (IMM32.@)
  */
-BOOL WINAPI ImmSetCompositionWindow(HIMC hIMC, LPCOMPOSITIONFORM lpCompForm)
+BOOL WINAPI
+ImmSetCompositionWindow(
+    _In_ HIMC hIMC,
+    _In_ LPCOMPOSITIONFORM lpCompForm)
 {
     LPINPUTCONTEXTDX pIC;
     HWND hWnd;
@@ -1125,7 +1180,10 @@ BOOL WINAPI ImmSetCompositionWindow(HIMC hIMC, LPCOMPOSITIONFORM lpCompForm)
 /***********************************************************************
  *		ImmGetCompositionFontA (IMM32.@)
  */
-BOOL WINAPI ImmGetCompositionFontA(HIMC hIMC, LPLOGFONTA lplf)
+BOOL WINAPI
+ImmGetCompositionFontA(
+    _In_ HIMC hIMC,
+    _Out_ LPLOGFONTA lplf)
 {
     PCLIENTIMC pClientImc;
     BOOL ret = FALSE, bWide;
@@ -1161,7 +1219,10 @@ BOOL WINAPI ImmGetCompositionFontA(HIMC hIMC, LPLOGFONTA lplf)
 /***********************************************************************
  *		ImmGetCompositionFontW (IMM32.@)
  */
-BOOL WINAPI ImmGetCompositionFontW(HIMC hIMC, LPLOGFONTW lplf)
+BOOL WINAPI
+ImmGetCompositionFontW(
+    _In_ HIMC hIMC,
+    _Out_ LPLOGFONTW lplf)
 {
     PCLIENTIMC pClientImc;
     BOOL bWide;
@@ -1198,7 +1259,10 @@ BOOL WINAPI ImmGetCompositionFontW(HIMC hIMC, LPLOGFONTW lplf)
 /***********************************************************************
  *		ImmSetCompositionFontA (IMM32.@)
  */
-BOOL WINAPI ImmSetCompositionFontA(HIMC hIMC, LPLOGFONTA lplf)
+BOOL WINAPI
+ImmSetCompositionFontA(
+    _In_ HIMC hIMC,
+    _In_ LPLOGFONTA lplf)
 {
     LOGFONTW lfW;
     PCLIENTIMC pClientImc;
@@ -1254,7 +1318,10 @@ BOOL WINAPI ImmSetCompositionFontA(HIMC hIMC, LPLOGFONTA lplf)
 /***********************************************************************
  *		ImmSetCompositionFontW (IMM32.@)
  */
-BOOL WINAPI ImmSetCompositionFontW(HIMC hIMC, LPLOGFONTW lplf)
+BOOL WINAPI
+ImmSetCompositionFontW(
+    _In_ HIMC hIMC,
+    _In_ LPLOGFONTW lplf)
 {
     LOGFONTA lfA;
     PCLIENTIMC pClientImc;
@@ -1311,8 +1378,13 @@ BOOL WINAPI ImmSetCompositionFontW(HIMC hIMC, LPLOGFONTW lplf)
  *		ImmGetConversionListA (IMM32.@)
  */
 DWORD WINAPI
-ImmGetConversionListA(HKL hKL, HIMC hIMC, LPCSTR pSrc, LPCANDIDATELIST lpDst,
-                      DWORD dwBufLen, UINT uFlag)
+ImmGetConversionListA(
+    _In_ HKL hKL,
+    _In_ HIMC hIMC,
+    _In_ LPCSTR pSrc,
+    _Out_writes_bytes_(dwBufLen) LPCANDIDATELIST lpDst,
+    _In_ DWORD dwBufLen,
+    _In_ UINT uFlag)
 {
     DWORD ret = 0;
     UINT cb;
@@ -1320,7 +1392,7 @@ ImmGetConversionListA(HKL hKL, HIMC hIMC, LPCSTR pSrc, LPCANDIDATELIST lpDst,
     LPCANDIDATELIST pCL = NULL;
     PIMEDPI pImeDpi;
 
-    TRACE("(%p, %p, %s, %p, %lu, 0x%lX)\n", hKL, hIMC, pSrc, lpDst, dwBufLen, uFlag);
+    TRACE("(%p, %p, %s, %p, %lu, 0x%lX)\n", hKL, hIMC, debugstr_a(pSrc), lpDst, dwBufLen, uFlag);
 
     pImeDpi = Imm32FindOrLoadImeDpi(hKL);
     if (IS_NULL_UNEXPECTEDLY(pImeDpi))
@@ -1366,8 +1438,13 @@ Quit:
  *		ImmGetConversionListW (IMM32.@)
  */
 DWORD WINAPI
-ImmGetConversionListW(HKL hKL, HIMC hIMC, LPCWSTR pSrc, LPCANDIDATELIST lpDst,
-                      DWORD dwBufLen, UINT uFlag)
+ImmGetConversionListW(
+    _In_ HKL hKL,
+    _In_ HIMC hIMC,
+    _In_ LPCWSTR pSrc,
+    _Out_writes_bytes_(dwBufLen) LPCANDIDATELIST lpDst,
+    _In_ DWORD dwBufLen,
+    _In_ UINT uFlag)
 {
     DWORD ret = 0;
     INT cb;
@@ -1375,7 +1452,7 @@ ImmGetConversionListW(HKL hKL, HIMC hIMC, LPCWSTR pSrc, LPCANDIDATELIST lpDst,
     LPCANDIDATELIST pCL = NULL;
     LPSTR pszSrcA = NULL;
 
-    TRACE("(%p, %p, %S, %p, %lu, 0x%lX)\n", hKL, hIMC, pSrc, lpDst, dwBufLen, uFlag);
+    TRACE("(%p, %p, %s, %p, %lu, 0x%lX)\n", hKL, hIMC, debugstr_w(pSrc), lpDst, dwBufLen, uFlag);
 
     pImeDpi = Imm32FindOrLoadImeDpi(hKL);
     if (IS_NULL_UNEXPECTEDLY(pImeDpi))
@@ -1420,7 +1497,11 @@ Quit:
 /***********************************************************************
  *		ImmGetConversionStatus (IMM32.@)
  */
-BOOL WINAPI ImmGetConversionStatus(HIMC hIMC, LPDWORD lpfdwConversion, LPDWORD lpfdwSentence)
+BOOL WINAPI
+ImmGetConversionStatus(
+    _In_ HIMC hIMC,
+    _Out_opt_ LPDWORD lpfdwConversion,
+    _Out_opt_ LPDWORD lpfdwSentence)
 {
     LPINPUTCONTEXT pIC;
 
@@ -1449,7 +1530,11 @@ BOOL WINAPI ImmGetConversionStatus(HIMC hIMC, LPDWORD lpfdwConversion, LPDWORD l
 /***********************************************************************
  *		ImmSetConversionStatus (IMM32.@)
  */
-BOOL WINAPI ImmSetConversionStatus(HIMC hIMC, DWORD fdwConversion, DWORD fdwSentence)
+BOOL WINAPI
+ImmSetConversionStatus(
+    _In_ HIMC hIMC,
+    _In_ DWORD fdwConversion,
+    _In_ DWORD fdwSentence)
 {
     HKL hKL;
     LPINPUTCONTEXT pIC;
@@ -1508,7 +1593,12 @@ BOOL WINAPI ImmSetConversionStatus(HIMC hIMC, DWORD fdwConversion, DWORD fdwSent
 /***********************************************************************
  *		ImmConfigureIMEA (IMM32.@)
  */
-BOOL WINAPI ImmConfigureIMEA(HKL hKL, HWND hWnd, DWORD dwMode, LPVOID lpData)
+BOOL WINAPI
+ImmConfigureIMEA(
+    _In_ HKL hKL,
+    _In_ HWND hWnd,
+    _In_ DWORD dwMode,
+    _Inout_opt_ LPVOID lpData)
 {
     BOOL ret = FALSE;
     PIMEDPI pImeDpi;
@@ -1563,7 +1653,12 @@ Quit:
 /***********************************************************************
  *		ImmConfigureIMEW (IMM32.@)
  */
-BOOL WINAPI ImmConfigureIMEW(HKL hKL, HWND hWnd, DWORD dwMode, LPVOID lpData)
+BOOL WINAPI
+ImmConfigureIMEW(
+    _In_ HKL hKL,
+    _In_ HWND hWnd,
+    _In_ DWORD dwMode,
+    _Inout_opt_ LPVOID lpData)
 {
     BOOL ret = FALSE;
     PIMEDPI pImeDpi;
@@ -1618,7 +1713,10 @@ Quit:
 /***********************************************************************
  *		ImmWINNLSEnableIME (IMM32.@)
  */
-BOOL WINAPI ImmWINNLSEnableIME(HWND hWnd, BOOL enable)
+BOOL WINAPI
+ImmWINNLSEnableIME(
+    _In_opt_ HWND hWnd,
+    _In_ BOOL enable)
 {
     HIMC hIMC;
     PCLIENTIMC pClientImc;
diff --git a/win32ss/user/imm32/imm.c b/win32ss/user/imm32/imm.c
index 14ab5a44da7..f211a86cb87 100644
--- a/win32ss/user/imm32/imm.c
+++ b/win32ss/user/imm32/imm.c
@@ -20,7 +20,7 @@ SHAREDINFO gSharedInfo = { NULL };
 BYTE gfImmInitialized = FALSE; /* Is IMM32 initialized? */
 ULONG_PTR gHighestUserAddress = 0;
 
-static BOOL APIENTRY ImmInitializeGlobals(HMODULE hMod)
+static BOOL ImmInitializeGlobals(HMODULE hMod)
 {
     NTSTATUS status;
     SYSTEM_BASIC_INFORMATION SysInfo;
@@ -67,7 +67,10 @@ ImmRegisterClient(
 /***********************************************************************
  *		ImmLoadLayout (IMM32.@)
  */
-BOOL WINAPI ImmLoadLayout(HKL hKL, PIMEINFOEX pImeInfoEx)
+BOOL WINAPI
+ImmLoadLayout(
+    _In_ HKL hKL,
+    _Inout_ PIMEINFOEX pImeInfoEx)
 {
     DWORD cbData, dwType;
     HKEY hKey;
@@ -117,7 +120,8 @@ BOOL WINAPI ImmLoadLayout(HKL hKL, PIMEINFOEX pImeInfoEx)
  *
  * NOTE: HKL_SWITCH_TO_NON_IME and HKL_RELEASE_IME are special values for hKL.
  */
-BOOL WINAPI ImmFreeLayout(HKL hKL)
+BOOL WINAPI
+ImmFreeLayout(_In_ HKL hKL)
 {
     WCHAR szKBD[KL_NAMELENGTH];
     UINT iKL, cKLs;
@@ -183,7 +187,8 @@ Retry:
     return TRUE;
 }
 
-VOID APIENTRY Imm32SelectInputContext(HKL hNewKL, HKL hOldKL, HIMC hIMC)
+static VOID
+Imm32SelectInputContext(HKL hNewKL, HKL hOldKL, HIMC hIMC)
 {
     PCLIENTIMC pClientImc;
     LPINPUTCONTEXTDX pIC;
@@ -425,7 +430,6 @@ typedef struct SELECT_LAYOUT
     HKL hOldKL;
 } SELECT_LAYOUT, *LPSELECT_LAYOUT;
 
-// Win: SelectContextProc
 static BOOL CALLBACK Imm32SelectContextProc(HIMC hIMC, LPARAM lParam)
 {
     LPSELECT_LAYOUT pSelect = (LPSELECT_LAYOUT)lParam;
@@ -433,7 +437,6 @@ static BOOL CALLBACK Imm32SelectContextProc(HIMC hIMC, LPARAM lParam)
     return TRUE;
 }
 
-// Win: NotifyIMEProc
 static BOOL CALLBACK Imm32NotifyIMEProc(HIMC hIMC, LPARAM lParam)
 {
     ImmNotifyIME(hIMC, NI_COMPOSITIONSTR, (DWORD)lParam, 0);
@@ -443,7 +446,8 @@ static BOOL CALLBACK Imm32NotifyIMEProc(HIMC hIMC, LPARAM lParam)
 /***********************************************************************
  *		ImmActivateLayout (IMM32.@)
  */
-BOOL WINAPI ImmActivateLayout(HKL hKL)
+BOOL WINAPI
+ImmActivateLayout(_In_ HKL hKL)
 {
     PIMEDPI pImeDpi;
     HKL hOldKL;
@@ -492,7 +496,10 @@ BOOL WINAPI ImmActivateLayout(HKL hKL)
 /***********************************************************************
  *		ImmAssociateContext (IMM32.@)
  */
-HIMC WINAPI ImmAssociateContext(HWND hWnd, HIMC hIMC)
+HIMC WINAPI
+ImmAssociateContext(
+    _In_ HWND hWnd,
+    _In_opt_ HIMC hIMC)
 {
     PWND pWnd;
     HWND hwndFocus;
@@ -541,7 +548,11 @@ HIMC WINAPI ImmAssociateContext(HWND hWnd, HIMC hIMC)
 /***********************************************************************
  *              ImmAssociateContextEx (IMM32.@)
  */
-BOOL WINAPI ImmAssociateContextEx(HWND hWnd, HIMC hIMC, DWORD dwFlags)
+BOOL WINAPI
+ImmAssociateContextEx(
+    _In_ HWND hWnd,
+    _In_opt_ HIMC hIMC,
+    _In_ DWORD dwFlags)
 {
     HWND hwndFocus;
     PWND pFocusWnd;
@@ -591,7 +602,8 @@ BOOL WINAPI ImmAssociateContextEx(HWND hWnd, HIMC hIMC, DWORD dwFlags)
 /***********************************************************************
  *		ImmCreateContext (IMM32.@)
  */
-HIMC WINAPI ImmCreateContext(void)
+HIMC WINAPI
+ImmCreateContext(VOID)
 {
     PCLIENTIMC pClientImc;
     HIMC hIMC;
@@ -622,8 +634,8 @@ HIMC WINAPI ImmCreateContext(void)
     return hIMC;
 }
 
-// Win: DestroyImeModeSaver
-static VOID APIENTRY Imm32DestroyImeModeSaver(LPINPUTCONTEXTDX pIC)
+static VOID
+Imm32DestroyImeModeSaver(LPINPUTCONTEXTDX pIC)
 {
     PIME_STATE pState, pNext;
     PIME_SUBSTATE pSubState, pSubNext;
@@ -644,8 +656,8 @@ static VOID APIENTRY Imm32DestroyImeModeSaver(LPINPUTCONTEXTDX pIC)
     pIC->pState = NULL;
 }
 
-// Win: DestroyInputContext
-BOOL APIENTRY Imm32DestroyInputContext(HIMC hIMC, HKL hKL, BOOL bKeep)
+static BOOL
+Imm32DestroyInputContext(HIMC hIMC, HKL hKL, BOOL bKeep)
 {
     PIMEDPI pImeDpi;
     LPINPUTCONTEXTDX pIC;
@@ -736,8 +748,7 @@ Finish:
 }
 
 // NOTE: Windows does recursive call ImmLockIMC here but we don't do so.
-// Win: BOOL CreateInputContext(HIMC hIMC, HKL hKL, BOOL fSelect)
-BOOL APIENTRY
+static BOOL
 Imm32CreateInputContext(HIMC hIMC, LPINPUTCONTEXT pIC, PCLIENTIMC pClientImc, HKL hKL, BOOL fSelect)
 {
     DWORD dwIndex, cbPrivate;
@@ -838,7 +849,7 @@ Fail:
     return FALSE;
 }
 
-LPINPUTCONTEXT APIENTRY Imm32InternalLockIMC(HIMC hIMC, BOOL fSelect)
+LPINPUTCONTEXT Imm32InternalLockIMC(HIMC hIMC, BOOL fSelect)
 {
     HANDLE hIC;
     LPINPUTCONTEXT pIC = NULL;
@@ -916,7 +927,8 @@ Failure:
 /***********************************************************************
  *		ImmDestroyContext (IMM32.@)
  */
-BOOL WINAPI ImmDestroyContext(HIMC hIMC)
+BOOL WINAPI
+ImmDestroyContext(_In_ HIMC hIMC)
 {
     HKL hKL;
 
@@ -938,7 +950,8 @@ BOOL WINAPI ImmDestroyContext(HIMC hIMC)
 /***********************************************************************
  *		ImmLockClientImc (IMM32.@)
  */
-PCLIENTIMC WINAPI ImmLockClientImc(HIMC hImc)
+PCLIENTIMC WINAPI
+ImmLockClientImc(_In_ HIMC hImc)
 {
     PIMC pIMC;
     PCLIENTIMC pClientImc;
@@ -984,7 +997,8 @@ Finish:
 /***********************************************************************
  *		ImmUnlockClientImc (IMM32.@)
  */
-VOID WINAPI ImmUnlockClientImc(PCLIENTIMC pClientImc)
+VOID WINAPI
+ImmUnlockClientImc(_Inout_ PCLIENTIMC pClientImc)
 {
     LONG cLocks;
     HANDLE hInputContext;
@@ -1047,7 +1061,8 @@ Quit:
 /***********************************************************************
  *		ImmGetContext (IMM32.@)
  */
-HIMC WINAPI ImmGetContext(HWND hWnd)
+HIMC WINAPI
+ImmGetContext(_In_ HWND hWnd)
 {
     TRACE("(%p)\n", hWnd);
     if (IS_NULL_UNEXPECTEDLY(hWnd))
@@ -1060,7 +1075,8 @@ HIMC WINAPI ImmGetContext(HWND hWnd)
  *
  * NOTE: This is not ImmLockIMCC. Don't confuse.
  */
-LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC hIMC)
+LPINPUTCONTEXT WINAPI
+ImmLockIMC(_In_ HIMC hIMC)
 {
     TRACE("(%p)\n", hIMC);
     return Imm32InternalLockIMC(hIMC, TRUE);
@@ -1069,7 +1085,8 @@ LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC hIMC)
 /***********************************************************************
 *		ImmUnlockIMC(IMM32.@)
 */
-BOOL WINAPI ImmUnlockIMC(HIMC hIMC)
+BOOL WINAPI
+ImmUnlockIMC(_In_ HIMC hIMC)
 {
     PCLIENTIMC pClientImc;
 
@@ -1088,7 +1105,10 @@ BOOL WINAPI ImmUnlockIMC(HIMC hIMC)
 /***********************************************************************
  *		ImmReleaseContext (IMM32.@)
  */
-BOOL WINAPI ImmReleaseContext(HWND hWnd, HIMC hIMC)
+BOOL WINAPI
+ImmReleaseContext(
+    _In_ HWND hWnd,
+    _In_ HIMC hIMC)
 {
     TRACE("(%p, %p)\n", hWnd, hIMC);
     UNREFERENCED_PARAMETER(hWnd);
@@ -1099,7 +1119,11 @@ BOOL WINAPI ImmReleaseContext(HWND hWnd, HIMC hIMC)
 /***********************************************************************
  *              ImmEnumInputContext(IMM32.@)
  */
-BOOL WINAPI ImmEnumInputContext(DWORD dwThreadId, IMCENUMPROC lpfn, LPARAM lParam)
+BOOL WINAPI
+ImmEnumInputContext(
+    _In_ DWORD dwThreadId,
+    _In_ IMCENUMPROC lpfn,
+    _In_ LPARAM lParam)
 {
     HIMC *phList;
     DWORD dwIndex, dwCount;
@@ -1127,7 +1151,11 @@ BOOL WINAPI ImmEnumInputContext(DWORD dwThreadId, IMCENUMPROC lpfn, LPARAM lPara
 /***********************************************************************
  *              ImmSetActiveContext(IMM32.@)
  */
-BOOL WINAPI ImmSetActiveContext(HWND hWnd, HIMC hIMC, BOOL fActive)
+BOOL WINAPI
+ImmSetActiveContext(
+    _In_ HWND hWnd,
+    _In_opt_ HIMC hIMC,
+    _In_ BOOL fActive)
 {
     PCLIENTIMC pClientImc;
     LPINPUTCONTEXTDX pIC;
@@ -1277,7 +1305,7 @@ UINT WINAPI GetKeyboardLayoutCP(_In_ LANGID wLangId)
 }
 
 #ifndef NDEBUG
-VOID APIENTRY Imm32UnitTest(VOID)
+VOID Imm32UnitTest(VOID)
 {
     if (0)
     {
diff --git a/win32ss/user/imm32/keymsg.c b/win32ss/user/imm32/keymsg.c
index 348f9f25783..304fd5b3815 100644
--- a/win32ss/user/imm32/keymsg.c
+++ b/win32ss/user/imm32/keymsg.c
@@ -14,8 +14,8 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(imm);
 
-/* Win: IMENonIMEToggle */
-BOOL APIENTRY Imm32ImeNonImeToggle(HIMC hIMC, HKL hKL, HWND hWnd, BOOL bNowIME, LANGID LangID)
+static BOOL
+Imm32ImeNonImeToggle(HIMC hIMC, HKL hKL, HWND hWnd, BOOL bNowIME, LANGID LangID)
 {
     HKL hOldKL, LayoutList[32], hFoundKL = NULL;
     UINT iLayout, nLayoutCount;
@@ -64,8 +64,8 @@ BOOL APIENTRY Imm32ImeNonImeToggle(HIMC hIMC, HKL hKL, HWND hWnd, BOOL bNowIME,
 }
 
 /* Open or close the IME on Chinese or Taiwanese */
-/* Win: CIMENonIMEToggle */
-BOOL APIENTRY Imm32CImeNonImeToggle(HIMC hIMC, HKL hKL, HWND hWnd, LANGID LangID)
+static BOOL
+Imm32CImeNonImeToggle(HIMC hIMC, HKL hKL, HWND hWnd, LANGID LangID)
 {
     LPINPUTCONTEXT pIC;
     BOOL fOpen;
@@ -95,8 +95,8 @@ BOOL APIENTRY Imm32CImeNonImeToggle(HIMC hIMC, HKL hKL, HWND hWnd, LANGID LangID
 }
 
 /* Toggle shape mode on Chinese or Taiwanese */
-/* Win: TShapeToggle */
-BOOL APIENTRY Imm32CShapeToggle(HIMC hIMC, HKL hKL, HWND hWnd)
+static BOOL
+Imm32CShapeToggle(HIMC hIMC, HKL hKL, HWND hWnd)
 {
     LPINPUTCONTEXT pIC;
     BOOL fOpen;
@@ -126,8 +126,8 @@ BOOL APIENTRY Imm32CShapeToggle(HIMC hIMC, HKL hKL, HWND hWnd)
     return TRUE;
 }
 
-/* Win: CSymbolToggle */
-BOOL APIENTRY Imm32CSymbolToggle(HIMC hIMC, HKL hKL, HWND hWnd)
+static BOOL
+Imm32CSymbolToggle(HIMC hIMC, HKL hKL, HWND hWnd)
 {
     LPINPUTCONTEXT pIC;
     BOOL fOpen;
@@ -158,7 +158,8 @@ BOOL APIENTRY Imm32CSymbolToggle(HIMC hIMC, HKL hKL, HWND hWnd)
 }
 
 /* Open or close Japanese IME */
-BOOL APIENTRY Imm32JCloseOpen(HIMC hIMC, HKL hKL, HWND hWnd)
+static BOOL
+Imm32JCloseOpen(HIMC hIMC, HKL hKL, HWND hWnd)
 {
     BOOL fOpen;
     LPINPUTCONTEXTDX pIC;
@@ -184,8 +185,8 @@ BOOL APIENTRY Imm32JCloseOpen(HIMC hIMC, HKL hKL, HWND hWnd)
     return TRUE;
 }
 
-/* Win: KShapeToggle */
-BOOL APIENTRY Imm32KShapeToggle(HIMC hIMC)
+static BOOL
+Imm32KShapeToggle(HIMC hIMC)
 {
     LPINPUTCONTEXT pIC;
     DWORD dwConversion, dwSentence;
@@ -207,8 +208,8 @@ BOOL APIENTRY Imm32KShapeToggle(HIMC hIMC)
     return TRUE;
 }
 
-/* Win: KHanjaConvert */
-BOOL APIENTRY Imm32KHanjaConvert(HIMC hIMC)
+static BOOL
+Imm32KHanjaConvert(HIMC hIMC)
 {
     LPINPUTCONTEXT pIC;
     DWORD dwConversion, dwSentence;
@@ -225,8 +226,8 @@ BOOL APIENTRY Imm32KHanjaConvert(HIMC hIMC)
     return TRUE;
 }
 
-/* Win: KEnglishHangul */
-BOOL APIENTRY Imm32KEnglish(HIMC hIMC)
+static BOOL
+Imm32KEnglish(HIMC hIMC)
 {
     LPINPUTCONTEXT pIC;
     DWORD dwConversion, dwSentence;
@@ -247,8 +248,8 @@ BOOL APIENTRY Imm32KEnglish(HIMC hIMC)
     return TRUE;
 }
 
-/* Win: HotKeyIDDispatcher */
-BOOL APIENTRY Imm32ProcessHotKey(HWND hWnd, HIMC hIMC, HKL hKL, DWORD dwHotKeyID)
+static BOOL
+Imm32ProcessHotKey(HWND hWnd, HIMC hIMC, HKL hKL, DWORD dwHotKeyID)
 {
     PIMEDPI pImeDpi;
     BOOL ret;
@@ -305,9 +306,13 @@ BOOL APIENTRY Imm32ProcessHotKey(HWND hWnd, HIMC hIMC, HKL hKL, DWORD dwHotKeyID
     return ret;
 }
 
-/* Win: ImmIsUIMessageWorker */
-static BOOL APIENTRY
-ImmIsUIMessageAW(HWND hWndIME, UINT msg, WPARAM wParam, LPARAM lParam, BOOL bAnsi)
+static BOOL
+ImmIsUIMessageAW(
+    _In_opt_ HWND hWndIME,
+    _In_ UINT msg,
+    _In_ WPARAM wParam,
+    _In_ LPARAM lParam,
+    _In_ BOOL bAnsi)
 {
     switch (msg)
     {
@@ -364,12 +369,12 @@ Quit:
     return TRUE;
 }
 
-BOOL APIENTRY Imm32SendNotification(BOOL bProcess)
+BOOL Imm32SendNotification(BOOL bProcess)
 {
     return ImmEnumInputContext((bProcess ? -1 : 0), Imm32SendNotificationProc, 0);
 }
 
-LRESULT APIENTRY
+static LRESULT
 Imm32ProcessRequest(HIMC hIMC, PWND pWnd, DWORD dwCommand, LPVOID pData, BOOL bAnsiAPI)
 {
     HWND hWnd;
@@ -578,8 +583,12 @@ Quit:
     return ret;
 }
 
-/* Win: ImmRequestMessageWorker */
-LRESULT APIENTRY ImmRequestMessageAW(HIMC hIMC, WPARAM wParam, LPARAM lParam, BOOL bAnsi)
+static LRESULT
+ImmRequestMessageAW(
+    _In_ HIMC hIMC,
+    _In_ WPARAM wParam,
+    _In_ LPARAM lParam,
+    _In_ BOOL bAnsi)
 {
     LRESULT ret = 0;
     LPINPUTCONTEXT pIC;
@@ -607,7 +616,12 @@ LRESULT APIENTRY ImmRequestMessageAW(HIMC hIMC, WPARAM wParam, LPARAM lParam, BO
 /***********************************************************************
  *		ImmIsUIMessageA (IMM32.@)
  */
-BOOL WINAPI ImmIsUIMessageA(HWND hWndIME, UINT msg, WPARAM wParam, LPARAM lParam)
+BOOL WINAPI
+ImmIsUIMessageA(
+    _In_opt_ HWND hWndIME,
+    _In_ UINT msg,
+    _In_ WPARAM wParam,
+    _In_ LPARAM lParam)
 {
     TRACE("(%p, 0x%X, %p, %p)\n", hWndIME, msg, wParam, lParam);
     return ImmIsUIMessageAW(hWndIME, msg, wParam, lParam, TRUE);
@@ -616,7 +630,12 @@ BOOL WINAPI ImmIsUIMessageA(HWND hWndIME, UINT msg, WPARAM wParam, LPARAM lParam
 /***********************************************************************
  *		ImmIsUIMessageW (IMM32.@)
  */
-BOOL WINAPI ImmIsUIMessageW(HWND hWndIME, UINT msg, WPARAM wParam, LPARAM lParam)
+BOOL WINAPI
+ImmIsUIMessageW(
+    _In_opt_ HWND hWndIME,
+    _In_ UINT msg,
+    _In_ WPARAM wParam,
+    _In_ LPARAM lParam)
 {
     TRACE("(%p, 0x%X, %p, %p)\n", hWndIME, msg, wParam, lParam);
     return ImmIsUIMessageAW(hWndIME, msg, wParam, lParam, FALSE);
@@ -626,8 +645,11 @@ BOOL WINAPI ImmIsUIMessageW(HWND hWndIME, UINT msg, WPARAM wParam, LPARAM lParam
  *              ImmGetHotKey(IMM32.@)
  */
 BOOL WINAPI
-ImmGetHotKey(IN DWORD dwHotKey, OUT LPUINT lpuModifiers, OUT LPUINT lpuVKey,
-             OUT LPHKL lphKL)
+ImmGetHotKey(
+    _In_ DWORD dwHotKey,
+    _Out_ LPUINT lpuModifiers,
+    _Out_ LPUINT lpuVKey,
+    _Out_ LPHKL lphKL)
 {
     TRACE("(0x%lX, %p, %p, %p)\n", dwHotKey, lpuModifiers, lpuVKey, lphKL);
     if (lpuModifiers && lpuVKey)
@@ -638,7 +660,8 @@ ImmGetHotKey(IN DWORD dwHotKey, OUT LPUINT lpuModifiers, OUT LPUINT lpuVKey,
 /***********************************************************************
  *              ImmWINNLSGetIMEHotkey (IMM32.@)
  */
-UINT WINAPI ImmWINNLSGetIMEHotkey(HWND hwndIme)
+UINT WINAPI
+ImmWINNLSGetIMEHotkey(_In_ HWND hwndIme)
 {
     TRACE("(%p)\n", hwndIme);
     UNREFERENCED_PARAMETER(hwndIme);
@@ -648,7 +671,10 @@ UINT WINAPI ImmWINNLSGetIMEHotkey(HWND hwndIme)
 /***********************************************************************
  *		ImmSimulateHotKey (IMM32.@)
  */
-BOOL WINAPI ImmSimulateHotKey(HWND hWnd, DWORD dwHotKeyID)
+BOOL WINAPI
+ImmSimulateHotKey(
+    _In_ HWND hWnd,
+    _In_ DWORD dwHotKeyID)
 {
     HIMC hIMC;
     DWORD dwThreadId;
@@ -668,7 +694,8 @@ BOOL WINAPI ImmSimulateHotKey(HWND hWnd, DWORD dwHotKeyID)
 /***********************************************************************
  *		ImmGetVirtualKey (IMM32.@)
  */
-UINT WINAPI ImmGetVirtualKey(HWND hWnd)
+UINT WINAPI
+ImmGetVirtualKey(_In_ HWND hWnd)
 {
     HIMC hIMC;
     LPINPUTCONTEXTDX pIC;
@@ -691,7 +718,8 @@ UINT WINAPI ImmGetVirtualKey(HWND hWnd)
 /***********************************************************************
  *		ImmGetAppCompatFlags (IMM32.@)
  */
-DWORD WINAPI ImmGetAppCompatFlags(HIMC hIMC)
+DWORD WINAPI
+ImmGetAppCompatFlags(_In_ HIMC hIMC)
 {
     PCLIENTIMC pClientIMC;
     DWORD dwFlags;
@@ -712,7 +740,12 @@ DWORD WINAPI ImmGetAppCompatFlags(HIMC hIMC)
  *       ( Undocumented, called from user32.dll )
  */
 DWORD WINAPI
-ImmProcessKey(HWND hWnd, HKL hKL, UINT vKey, LPARAM lParam, DWORD dwHotKeyID)
+ImmProcessKey(
+    _In_ HWND hWnd,
+    _In_ HKL hKL,
+    _In_ UINT vKey,
+    _In_ LPARAM lParam,
+    _In_ DWORD dwHotKeyID)
 {
     DWORD ret = 0;
     HIMC hIMC;
@@ -841,7 +874,8 @@ ImmSystemHandler(
 /***********************************************************************
  *		ImmGenerateMessage(IMM32.@)
  */
-BOOL WINAPI ImmGenerateMessage(HIMC hIMC)
+BOOL WINAPI
+ImmGenerateMessage(_In_ HIMC hIMC)
 {
     PCLIENTIMC pClientImc;
     LPINPUTCONTEXT pIC;
@@ -918,8 +952,12 @@ Quit:
     return TRUE;
 }
 
-VOID APIENTRY
-ImmPostMessages(HWND hwnd, HIMC hIMC, DWORD dwCount, LPTRANSMSG lpTransMsg)
+static VOID
+ImmPostMessages(
+    _In_ HWND hwnd,
+    _In_ HIMC hIMC,
+    _In_ DWORD dwCount,
+    _In_ LPTRANSMSG lpTransMsg)
 {
     DWORD dwIndex;
     PCLIENTIMC pClientImc;
@@ -978,7 +1016,12 @@ ImmPostMessages(HWND hwnd, HIMC hIMC, DWORD dwCount, LPTRANSMSG lpTransMsg)
  *       ImmTranslateMessage(IMM32.@)
  *       ( Undocumented, call internally and from user32.dll )
  */
-BOOL WINAPI ImmTranslateMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lKeyData)
+BOOL WINAPI
+ImmTranslateMessage(
+    _In_ HWND hwnd,
+    _In_ UINT msg,
+    _In_ WPARAM wParam,
+    _In_ LPARAM lKeyData)
 {
 #define MSG_COUNT 0x100
     BOOL ret = FALSE;
@@ -1115,7 +1158,11 @@ Quit:
 /***********************************************************************
  *              ImmRequestMessageA(IMM32.@)
  */
-LRESULT WINAPI ImmRequestMessageA(HIMC hIMC, WPARAM wParam, LPARAM lParam)
+LRESULT WINAPI
+ImmRequestMessageA(
+    _In_ HIMC hIMC,
+    _In_ WPARAM wParam,
+    _In_ LPARAM lParam)
 {
     TRACE("(%p, %p, %p)\n", hIMC, wParam, lParam);
     return ImmRequestMessageAW(hIMC, wParam, lParam, TRUE);
@@ -1124,7 +1171,11 @@ LRESULT WINAPI ImmRequestMessageA(HIMC hIMC, WPARAM wParam, LPARAM lParam)
 /***********************************************************************
  *              ImmRequestMessageW(IMM32.@)
  */
-LRESULT WINAPI ImmRequestMessageW(HIMC hIMC, WPARAM wParam, LPARAM lParam)
+LRESULT WINAPI
+ImmRequestMessageW(
+    _In_ HIMC hIMC,
+    _In_ WPARAM wParam,
+    _In_ LPARAM lParam)
 {
     TRACE("(%p, %p, %p)\n", hIMC, wParam, lParam);
     return ImmRequestMessageAW(hIMC, wParam, lParam, FALSE);
diff --git a/win32ss/user/imm32/precomp.h b/win32ss/user/imm32/precomp.h
index b3f2d7db66a..3a46d2f03f2 100644
--- a/win32ss/user/imm32/precomp.h
+++ b/win32ss/user/imm32/precomp.h
@@ -93,36 +93,36 @@ extern HANDLE ghImmHeap;
 extern DWORD g_aimm_compat_flags;
 
 BOOL Imm32GetSystemLibraryPath(LPWSTR pszPath, DWORD cchPath, LPCWSTR pszFileName);
-VOID APIENTRY LogFontAnsiToWide(const LOGFONTA *plfA, LPLOGFONTW plfW);
-VOID APIENTRY LogFontWideToAnsi(const LOGFONTW *plfW, LPLOGFONTA plfA);
+VOID LogFontAnsiToWide(const LOGFONTA *plfA, LPLOGFONTW plfW);
+VOID LogFontWideToAnsi(const LOGFONTW *plfW, LPLOGFONTA plfA);
 LPVOID FASTCALL ValidateHandleNoErr(HANDLE hObject, UINT uType);
 LPVOID FASTCALL ValidateHandle(HANDLE hObject, UINT uType);
 #define ValidateHwndNoErr(hwnd) ValidateHandleNoErr((hwnd), TYPE_WINDOW)
 #define ValidateHwnd(hwnd) ValidateHandle((hwnd), TYPE_WINDOW)
-BOOL APIENTRY Imm32CheckImcProcess(PIMC pIMC);
+BOOL Imm32CheckImcProcess(PIMC pIMC);
 
 LPVOID ImmLocalAlloc(_In_ DWORD dwFlags, _In_ DWORD dwBytes);
 #define ImmLocalFree(lpData) HeapFree(ghImmHeap, 0, (lpData))
 
-LPWSTR APIENTRY Imm32WideFromAnsi(UINT uCodePage, LPCSTR pszA);
-LPSTR APIENTRY Imm32AnsiFromWide(UINT uCodePage, LPCWSTR pszW);
-LONG APIENTRY IchWideFromAnsi(LONG cchAnsi, LPCSTR pchAnsi, UINT uCodePage);
-LONG APIENTRY IchAnsiFromWide(LONG cchWide, LPCWSTR pchWide, UINT uCodePage);
-PIMEDPI APIENTRY Imm32FindOrLoadImeDpi(HKL hKL);
-LPINPUTCONTEXT APIENTRY Imm32InternalLockIMC(HIMC hIMC, BOOL fSelect);
-BOOL APIENTRY Imm32ReleaseIME(HKL hKL);
+LPWSTR Imm32WideFromAnsi(UINT uCodePage, LPCSTR pszA);
+LPSTR Imm32AnsiFromWide(UINT uCodePage, LPCWSTR pszW);
+LONG IchWideFromAnsi(LONG cchAnsi, LPCSTR pchAnsi, UINT uCodePage);
+LONG IchAnsiFromWide(LONG cchWide, LPCWSTR pchWide, UINT uCodePage);
+PIMEDPI Imm32FindOrLoadImeDpi(HKL hKL);
+LPINPUTCONTEXT Imm32InternalLockIMC(HIMC hIMC, BOOL fSelect);
+BOOL Imm32ReleaseIME(_In_ HKL hKL);
 BOOL Imm32IsSystemJapaneseOrKorean(VOID);
-BOOL APIENTRY Imm32IsCrossThreadAccess(HIMC hIMC);
-BOOL APIENTRY Imm32IsCrossProcessAccess(HWND hWnd);
+BOOL Imm32IsCrossThreadAccess(HIMC hIMC);
+BOOL Imm32IsCrossProcessAccess(HWND hWnd);
 BOOL Imm32IsImcAnsi(HIMC hIMC);
 BOOL Imm32LoadImeVerInfo(_Out_ PIMEINFOEX pImeInfoEx);
 
 #define ImeDpi_IsUnicode(pImeDpi)      ((pImeDpi)->ImeInfo.fdwProperty & IME_PROP_UNICODE)
 
-DWORD APIENTRY
+DWORD
 CandidateListWideToAnsi(const CANDIDATELIST *pWideCL, LPCANDIDATELIST pAnsiCL, DWORD dwBufLen,
                         UINT uCodePage);
-DWORD APIENTRY
+DWORD
 CandidateListAnsiToWide(const CANDIDATELIST *pAnsiCL, LPCANDIDATELIST pWideCL, DWORD dwBufLen,
                         UINT uCodePage);
 
@@ -136,19 +136,19 @@ Imm32MakeIMENotify(
     _In_ DWORD dwCommand,
     _Inout_opt_ DWORD_PTR dwData);
 
-DWORD APIENTRY Imm32BuildHimcList(DWORD dwThreadId, HIMC **pphList);
+DWORD Imm32BuildHimcList(DWORD dwThreadId, HIMC **pphList);
 
-PIME_STATE APIENTRY Imm32FetchImeState(LPINPUTCONTEXTDX pIC, HKL hKL);
-PIME_SUBSTATE APIENTRY Imm32FetchImeSubState(PIME_STATE pState, HKL hKL);
+PIME_STATE Imm32FetchImeState(LPINPUTCONTEXTDX pIC, HKL hKL);
+PIME_SUBSTATE Imm32FetchImeSubState(PIME_STATE pState, HKL hKL);
 
-BOOL APIENTRY
+BOOL
 Imm32LoadImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL);
-BOOL APIENTRY
+BOOL
 Imm32SaveImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL);
 
-DWORD APIENTRY
+DWORD
 Imm32ReconvertAnsiFromWide(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc, UINT uCodePage);
-DWORD APIENTRY
+DWORD
 Imm32ReconvertWideFromAnsi(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc, UINT uCodePage);
 
 HRESULT
diff --git a/win32ss/user/imm32/regword.c b/win32ss/user/imm32/regword.c
index d9e1c5a2605..c35f9ff2aed 100644
--- a/win32ss/user/imm32/regword.c
+++ b/win32ss/user/imm32/regword.c
@@ -92,17 +92,21 @@ Quit:
  *		ImmEnumRegisterWordA (IMM32.@)
  */
 UINT WINAPI
-ImmEnumRegisterWordA(HKL hKL, REGISTERWORDENUMPROCA lpfnEnumProc,
-                     LPCSTR lpszReading, DWORD dwStyle,
-                     LPCSTR lpszRegister, LPVOID lpData)
+ImmEnumRegisterWordA(
+    _In_ HKL hKL,
+    _In_ REGISTERWORDENUMPROCA lpfnEnumProc,
+    _In_opt_ LPCSTR lpszReading,
+    _In_ DWORD dwStyle,
+    _In_opt_ LPCSTR lpszRegister,
+    _Inout_opt_ LPVOID lpData)
 {
     UINT ret = 0;
     LPWSTR pszReadingW = NULL, pszRegisterW = NULL;
     ENUM_WORD_W2A EnumDataW2A;
     PIMEDPI pImeDpi;
 
-    TRACE("(%p, %p, %s, 0x%lX, %s, %p)\n", hKL, lpfnEnumProc, lpszReading,
-          dwStyle, lpszRegister, lpData);
+    TRACE("(%p, %p, %s, 0x%lX, %s, %p)\n", hKL, lpfnEnumProc, debugstr_a(lpszReading),
+          dwStyle, debugstr_a(lpszRegister), lpData);
 
     pImeDpi = Imm32FindOrLoadImeDpi(hKL);
     if (IS_NULL_UNEXPECTEDLY(pImeDpi))
@@ -149,17 +153,21 @@ Quit:
  *		ImmEnumRegisterWordW (IMM32.@)
  */
 UINT WINAPI
-ImmEnumRegisterWordW(HKL hKL, REGISTERWORDENUMPROCW lpfnEnumProc,
-                     LPCWSTR lpszReading, DWORD dwStyle,
-                     LPCWSTR lpszRegister, LPVOID lpData)
+ImmEnumRegisterWordW(
+    _In_ HKL hKL,
+    _In_ REGISTERWORDENUMPROCW lpfnEnumProc,
+    _In_opt_ LPCWSTR lpszReading,
+    _In_ DWORD dwStyle,
+    _In_opt_ LPCWSTR lpszRegister,
+    _Inout_opt_ LPVOID lpData)
 {
     UINT ret = 0;
     LPSTR pszReadingA = NULL, pszRegisterA = NULL;
     ENUM_WORD_A2W EnumDataA2W;
     PIMEDPI pImeDpi;
 
-    TRACE("(%p, %p, %S, 0x%lX, %S, %p)\n", hKL, lpfnEnumProc, lpszReading,
-          dwStyle, lpszRegister, lpData);
+    TRACE("(%p, %p, %s, 0x%lX, %s, %p)\n", hKL, lpfnEnumProc, debugstr_w(lpszReading),
+          dwStyle, debugstr_w(lpszRegister), lpData);
 
     pImeDpi = Imm32FindOrLoadImeDpi(hKL);
     if (IS_NULL_UNEXPECTEDLY(pImeDpi))
@@ -206,7 +214,11 @@ Quit:
 /***********************************************************************
  *		ImmGetRegisterWordStyleA (IMM32.@)
  */
-UINT WINAPI ImmGetRegisterWordStyleA(HKL hKL, UINT nItem, LPSTYLEBUFA lpStyleBuf)
+UINT WINAPI
+ImmGetRegisterWordStyleA(
+    _In_ HKL hKL,
+    _In_ UINT nItem,
+    _Out_writes_(nItem) LPSTYLEBUFA lpStyleBuf)
 {
     UINT iItem, ret = 0;
     PIMEDPI pImeDpi;
@@ -265,7 +277,11 @@ Quit:
 /***********************************************************************
  *		ImmGetRegisterWordStyleW (IMM32.@)
  */
-UINT WINAPI ImmGetRegisterWordStyleW(HKL hKL, UINT nItem, LPSTYLEBUFW lpStyleBuf)
+UINT WINAPI
+ImmGetRegisterWordStyleW(
+    _In_ HKL hKL,
+    _In_ UINT nItem,
+    _Out_writes_(nItem) LPSTYLEBUFW lpStyleBuf)
 {
     UINT iItem, ret = 0;
     PIMEDPI pImeDpi;
@@ -324,13 +340,17 @@ Quit:
  *		ImmRegisterWordA (IMM32.@)
  */
 BOOL WINAPI
-ImmRegisterWordA(HKL hKL, LPCSTR lpszReading, DWORD dwStyle, LPCSTR lpszRegister)
+ImmRegisterWordA(
+    _In_ HKL hKL,
+    _In_opt_ LPCSTR lpszReading,
+    _In_ DWORD dwStyle,
+    _In_opt_ LPCSTR lpszRegister)
 {
     BOOL ret = FALSE;
     PIMEDPI pImeDpi;
     LPWSTR pszReadingW = NULL, pszRegisterW = NULL;
 
-    TRACE("(%p, %s, 0x%lX, %s)\n", hKL, lpszReading, dwStyle, lpszRegister);
+    TRACE("(%p, %s, 0x%lX, %s)\n", hKL, debugstr_a(lpszReading), dwStyle, debugstr_a(lpszRegister));
 
     pImeDpi = Imm32FindOrLoadImeDpi(hKL);
     if (IS_NULL_UNEXPECTEDLY(pImeDpi))
@@ -371,13 +391,18 @@ Quit:
  *		ImmRegisterWordW (IMM32.@)
  */
 BOOL WINAPI
-ImmRegisterWordW(HKL hKL, LPCWSTR lpszReading, DWORD dwStyle, LPCWSTR lpszRegister)
+ImmRegisterWordW(
+    _In_ HKL hKL,
+    _In_opt_ LPCWSTR lpszReading,
+    _In_ DWORD dwStyle,
+    _In_opt_ LPCWSTR lpszRegister)
 {
     BOOL ret = FALSE;
     PIMEDPI pImeDpi;
     LPSTR pszReadingA = NULL, pszRegisterA = NULL;
 
-    TRACE("(%p, %S, 0x%lX, %S)\n", hKL, lpszReading, dwStyle, lpszRegister);
+    TRACE("(%p, %s, 0x%lX, %s)\n", hKL, debugstr_w(lpszReading), dwStyle,
+          debugstr_w(lpszRegister));
 
     pImeDpi = Imm32FindOrLoadImeDpi(hKL);
     if (IS_NULL_UNEXPECTEDLY(pImeDpi))
@@ -418,13 +443,18 @@ Quit:
  *		ImmUnregisterWordA (IMM32.@)
  */
 BOOL WINAPI
-ImmUnregisterWordA(HKL hKL, LPCSTR lpszReading, DWORD dwStyle, LPCSTR lpszUnregister)
+ImmUnregisterWordA(
+    _In_ HKL hKL,
+    _In_opt_ LPCSTR lpszReading,
+    _In_ DWORD dwStyle,
+    _In_opt_ LPCSTR lpszUnregister)
 {
     BOOL ret = FALSE;
     PIMEDPI pImeDpi;
     LPWSTR pszReadingW = NULL, pszUnregisterW = NULL;
 
-    TRACE("(%p, %s, 0x%lX, %s)\n", hKL, lpszReading, dwStyle, lpszUnregister);
+    TRACE("(%p, %s, 0x%lX, %s)\n", hKL, debugstr_a(lpszReading), dwStyle,
+          debugstr_a(lpszUnregister));
 
     pImeDpi = Imm32FindOrLoadImeDpi(hKL);
     if (IS_NULL_UNEXPECTEDLY(pImeDpi))
@@ -465,13 +495,18 @@ Quit:
  *		ImmUnregisterWordW (IMM32.@)
  */
 BOOL WINAPI
-ImmUnregisterWordW(HKL hKL, LPCWSTR lpszReading, DWORD dwStyle, LPCWSTR lpszUnregister)
+ImmUnregisterWordW(
+    _In_ HKL hKL,
+    _In_opt_ LPCWSTR lpszReading,
+    _In_ DWORD dwStyle,
+    _In_opt_ LPCWSTR lpszUnregister)
 {
     BOOL ret = FALSE;
     PIMEDPI pImeDpi;
     LPSTR pszReadingA = NULL, pszUnregisterA = NULL;
 
-    TRACE("(%p, %S, 0x%lX, %S)\n", hKL, lpszReading, dwStyle, lpszUnregister);
+    TRACE("(%p, %s, 0x%lX, %s)\n", hKL, debugstr_w(lpszReading), dwStyle,
+          debugstr_w(lpszUnregister));
 
     pImeDpi = Imm32FindOrLoadImeDpi(hKL);
     if (IS_NULL_UNEXPECTEDLY(pImeDpi))
diff --git a/win32ss/user/imm32/softkbd.c b/win32ss/user/imm32/softkbd.c
index 762c89a45f9..56db683c04d 100644
--- a/win32ss/user/imm32/softkbd.c
+++ b/win32ss/user/imm32/softkbd.c
@@ -192,7 +192,7 @@ T1_GetTextMetric(_Out_ LPTEXTMETRICW ptm)
 
 #if DBG
     GetTextFaceW(hDC, _countof(szFace), szFace);
-    TRACE("szFace: %S\n", szFace);
+    TRACE("szFace: %s\n", debugstr_w(szFace));
 #endif
 
     GetTextMetricsW(hDC, ptm);
diff --git a/win32ss/user/imm32/utils.c b/win32ss/user/imm32/utils.c
index e15417da3ce..bb5f096642b 100644
--- a/win32ss/user/imm32/utils.c
+++ b/win32ss/user/imm32/utils.c
@@ -13,7 +13,7 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(imm);
 
-HANDLE ghImmHeap = NULL; // Win: pImmHeap
+HANDLE ghImmHeap = NULL;
 
 PTHREADINFO FASTCALL Imm32CurrentPti(VOID)
 {
@@ -22,15 +22,14 @@ PTHREADINFO FASTCALL Imm32CurrentPti(VOID)
     return NtCurrentTeb()->Win32ThreadInfo;
 }
 
-BOOL APIENTRY Imm32IsCrossThreadAccess(HIMC hIMC)
+BOOL Imm32IsCrossThreadAccess(HIMC hIMC)
 {
     DWORD_PTR dwImeThreadId = NtUserQueryInputContext(hIMC, QIC_INPUTTHREADID);
     DWORD_PTR dwCurrentThreadId = GetCurrentThreadId();
     return dwImeThreadId != dwCurrentThreadId;
 }
 
-// Win: TestWindowProcess
-BOOL APIENTRY Imm32IsCrossProcessAccess(HWND hWnd)
+BOOL Imm32IsCrossProcessAccess(HWND hWnd)
 {
     DWORD_PTR WndPID = NtUserQueryWindow(hWnd, QUERY_WINDOW_UNIQUE_PROCESS_ID);
     DWORD_PTR CurrentPID = (DWORD_PTR)NtCurrentTeb()->ClientId.UniqueProcess;
@@ -94,7 +93,7 @@ BOOL Imm32IsImcAnsi(HIMC hIMC)
     return ret;
 }
 
-LPWSTR APIENTRY Imm32WideFromAnsi(UINT uCodePage, LPCSTR pszA)
+LPWSTR Imm32WideFromAnsi(UINT uCodePage, LPCSTR pszA)
 {
     INT cch = lstrlenA(pszA);
     LPWSTR pszW = ImmLocalAlloc(0, (cch + 1) * sizeof(WCHAR));
@@ -105,7 +104,7 @@ LPWSTR APIENTRY Imm32WideFromAnsi(UINT uCodePage, LPCSTR pszA)
     return pszW;
 }
 
-LPSTR APIENTRY Imm32AnsiFromWide(UINT uCodePage, LPCWSTR pszW)
+LPSTR Imm32AnsiFromWide(UINT uCodePage, LPCWSTR pszW)
 {
     INT cchW = lstrlenW(pszW);
     INT cchA = (cchW + 1) * sizeof(WCHAR);
@@ -118,8 +117,7 @@ LPSTR APIENTRY Imm32AnsiFromWide(UINT uCodePage, LPCWSTR pszW)
 }
 
 /* Converts the character index */
-/* Win: CalcCharacterPositionAtoW */
-LONG APIENTRY IchWideFromAnsi(LONG cchAnsi, LPCSTR pchAnsi, UINT uCodePage)
+LONG IchWideFromAnsi(LONG cchAnsi, LPCSTR pchAnsi, UINT uCodePage)
 {
     LONG cchWide;
     for (cchWide = 0; cchAnsi > 0; ++cchWide)
@@ -139,8 +137,7 @@ LONG APIENTRY IchWideFromAnsi(LONG cchAnsi, LPCSTR pchAnsi, UINT uCodePage)
 }
 
 /* Converts the character index */
-/* Win: CalcCharacterPositionWtoA */
-LONG APIENTRY IchAnsiFromWide(LONG cchWide, LPCWSTR pchWide, UINT uCodePage)
+LONG IchAnsiFromWide(LONG cchWide, LPCWSTR pchWide, UINT uCodePage)
 {
     LONG cb, cchAnsi;
     for (cchAnsi = 0; cchWide > 0; ++cchAnsi, ++pchWide, --cchWide)
@@ -152,7 +149,6 @@ LONG APIENTRY IchAnsiFromWide(LONG cchWide, LPCWSTR pchWide, UINT uCodePage)
     return cchAnsi;
 }
 
-// Win: InternalGetSystemPathName
 BOOL Imm32GetSystemLibraryPath(LPWSTR pszPath, DWORD cchPath, LPCWSTR pszFileName)
 {
     if (!pszFileName[0] || !GetSystemDirectoryW(pszPath, cchPath))
@@ -165,8 +161,7 @@ BOOL Imm32GetSystemLibraryPath(LPWSTR pszPath, DWORD cchPath, LPCWSTR pszFileNam
     return TRUE;
 }
 
-// Win: LFontAtoLFontW
-VOID APIENTRY LogFontAnsiToWide(const LOGFONTA *plfA, LPLOGFONTW plfW)
+VOID LogFontAnsiToWide(const LOGFONTA *plfA, LPLOGFONTW plfW)
 {
     size_t cch;
     RtlCopyMemory(plfW, plfA, offsetof(LOGFONTA, lfFaceName));
@@ -178,8 +173,7 @@ VOID APIENTRY LogFontAnsiToWide(const LOGFONTA *plfA, LPLOGFONTW plfW)
     plfW->lfFaceName[cch] = 0;
 }
 
-// Win: LFontWtoLFontA
-VOID APIENTRY LogFontWideToAnsi(const LOGFONTW *plfW, LPLOGFONTA plfA)
+VOID LogFontWideToAnsi(const LOGFONTW *plfW, LPLOGFONTA plfA)
 {
     size_t cch;
     RtlCopyMemory(plfA, plfW, offsetof(LOGFONTW, lfFaceName));
@@ -204,7 +198,6 @@ static PVOID FASTCALL DesktopPtrToUser(PVOID ptr)
         return (PVOID)NtUserCallOneParam((DWORD_PTR)ptr, ONEPARAM_ROUTINE_GETDESKTOPMAPPING);
 }
 
-// Win: HMValidateHandleNoRip
 LPVOID FASTCALL ValidateHandleNoErr(HANDLE hObject, UINT uType)
 {
     UINT index;
@@ -243,7 +236,6 @@ LPVOID FASTCALL ValidateHandleNoErr(HANDLE hObject, UINT uType)
     return ptr;
 }
 
-// Win: HMValidateHandle
 LPVOID FASTCALL ValidateHandle(HANDLE hObject, UINT uType)
 {
     LPVOID pvObj = ValidateHandleNoErr(hObject, uType);
@@ -257,8 +249,7 @@ LPVOID FASTCALL ValidateHandle(HANDLE hObject, UINT uType)
     return NULL;
 }
 
-// Win: TestInputContextProcess
-BOOL APIENTRY Imm32CheckImcProcess(PIMC pIMC)
+BOOL Imm32CheckImcProcess(PIMC pIMC)
 {
     HIMC hIMC;
     DWORD_PTR dwPID1, dwPID2;
@@ -344,8 +335,7 @@ Imm32MakeIMENotify(
     return TRUE;
 }
 
-// Win: BuildHimcList
-DWORD APIENTRY Imm32BuildHimcList(DWORD dwThreadId, HIMC **pphList)
+DWORD Imm32BuildHimcList(DWORD dwThreadId, HIMC **pphList)
 {
 #define INITIAL_COUNT 0x40
 #define MAX_RETRY 10
@@ -384,8 +374,7 @@ DWORD APIENTRY Imm32BuildHimcList(DWORD dwThreadId, HIMC **pphList)
 #undef MAX_RETRY
 }
 
-// Win: GetImeModeSaver
-PIME_STATE APIENTRY
+PIME_STATE
 Imm32FetchImeState(LPINPUTCONTEXTDX pIC, HKL hKL)
 {
     PIME_STATE pState;
@@ -408,8 +397,7 @@ Imm32FetchImeState(LPINPUTCONTEXTDX pIC, HKL hKL)
     return pState;
 }
 
-// Win: GetImePrivateModeSaver
-PIME_SUBSTATE APIENTRY
+PIME_SUBSTATE
 Imm32FetchImeSubState(PIME_STATE pState, HKL hKL)
 {
     PIME_SUBSTATE pSubState;
@@ -428,8 +416,7 @@ Imm32FetchImeSubState(PIME_STATE pState, HKL hKL)
     return pSubState;
 }
 
-// Win: RestorePrivateMode
-BOOL APIENTRY
+BOOL
 Imm32LoadImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL)
 {
     PIME_SUBSTATE pSubState = Imm32FetchImeSubState(pState, hKL);
@@ -440,8 +427,7 @@ Imm32LoadImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL)
     return TRUE;
 }
 
-// Win: SavePrivateMode
-BOOL APIENTRY
+BOOL
 Imm32SaveImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL)
 {
     PIME_SUBSTATE pSubState = Imm32FetchImeSubState(pState, hKL);
@@ -461,7 +447,7 @@ Imm32SaveImeStateSentence(LPINPUTCONTEXTDX pIC, PIME_STATE pState, HKL hKL)
  * dwCompStrOffset, and dwTargetStrOffset are the byte offset.
  */
 
-DWORD APIENTRY
+DWORD
 Imm32ReconvertWideFromAnsi(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc, UINT uCodePage)
 {
     DWORD cch0, cchDest, cbDest;
@@ -524,7 +510,7 @@ Imm32ReconvertWideFromAnsi(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc,
     return cbDest;
 }
 
-DWORD APIENTRY
+DWORD
 Imm32ReconvertAnsiFromWide(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc, UINT uCodePage)
 {
     DWORD cch0, cch1, cchDest, cbDest;
@@ -592,7 +578,8 @@ Imm32ReconvertAnsiFromWide(LPRECONVERTSTRING pDest, const RECONVERTSTRING *pSrc,
 /***********************************************************************
  *		ImmCreateIMCC(IMM32.@)
  */
-HIMCC WINAPI ImmCreateIMCC(DWORD size)
+HIMCC WINAPI
+ImmCreateIMCC(_In_ DWORD size)
 {
     if (size < sizeof(DWORD))
         size = sizeof(DWORD);
@@ -602,7 +589,8 @@ HIMCC WINAPI ImmCreateIMCC(DWORD size)
 /***********************************************************************
  *       ImmDestroyIMCC(IMM32.@)
  */
-HIMCC WINAPI ImmDestroyIMCC(HIMCC block)
+HIMCC WINAPI
+ImmDestroyIMCC(_In_ HIMCC block)
 {
     if (block)
         return LocalFree(block);
@@ -612,7 +600,8 @@ HIMCC WINAPI ImmDestroyIMCC(HIMCC block)
 /***********************************************************************
  *		ImmLockIMCC(IMM32.@)
  */
-LPVOID WINAPI ImmLockIMCC(HIMCC imcc)
+LPVOID WINAPI
+ImmLockIMCC(_In_ HIMCC imcc)
 {
     if (imcc)
         return LocalLock(imcc);
@@ -622,7 +611,8 @@ LPVOID WINAPI ImmLockIMCC(HIMCC imcc)
 /***********************************************************************
  *		ImmUnlockIMCC(IMM32.@)
  */
-BOOL WINAPI ImmUnlockIMCC(HIMCC imcc)
+BOOL WINAPI
+ImmUnlockIMCC(_In_ HIMCC imcc)
 {
     if (imcc)
         return LocalUnlock(imcc);
@@ -632,7 +622,8 @@ BOOL WINAPI ImmUnlockIMCC(HIMCC imcc)
 /***********************************************************************
  *		ImmGetIMCCLockCount(IMM32.@)
  */
-DWORD WINAPI ImmGetIMCCLockCount(HIMCC imcc)
+DWORD WINAPI
+ImmGetIMCCLockCount(_In_ HIMCC imcc)
 {
     return LocalFlags(imcc) & LMEM_LOCKCOUNT;
 }
@@ -640,7 +631,10 @@ DWORD WINAPI ImmGetIMCCLockCount(HIMCC imcc)
 /***********************************************************************
  *		ImmReSizeIMCC(IMM32.@)
  */
-HIMCC WINAPI ImmReSizeIMCC(HIMCC imcc, DWORD size)
+HIMCC WINAPI
+ImmReSizeIMCC(
+    _In_ HIMCC imcc,
+    _In_ DWORD size)
 {
     if (!imcc)
         return NULL;
@@ -650,7 +644,8 @@ HIMCC WINAPI ImmReSizeIMCC(HIMCC imcc, DWORD size)
 /***********************************************************************
  *		ImmGetIMCCSize(IMM32.@)
  */
-DWORD WINAPI ImmGetIMCCSize(HIMCC imcc)
+DWORD WINAPI
+ImmGetIMCCSize(_In_ HIMCC imcc)
 {
     if (imcc)
         return LocalSize(imcc);
@@ -660,7 +655,8 @@ DWORD WINAPI ImmGetIMCCSize(HIMCC imcc)
 /***********************************************************************
  *		ImmGetIMCLockCount(IMM32.@)
  */
-DWORD WINAPI ImmGetIMCLockCount(HIMC hIMC)
+DWORD WINAPI
+ImmGetIMCLockCount(_In_ HIMC hIMC)
 {
     DWORD ret;
     HANDLE hInputContext;
diff --git a/win32ss/user/imm32/win3.c b/win32ss/user/imm32/win3.c
index 7904c751561..970979b5da9 100644
--- a/win32ss/user/imm32/win3.c
+++ b/win32ss/user/imm32/win3.c
@@ -11,8 +11,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(imm);
 
 #ifdef IMM_WIN3_SUPPORT /* 3.x support */
 
-/* Win: JTransCompositionA */
-DWORD APIENTRY
+DWORD
 Imm32JTransCompA(LPINPUTCONTEXTDX pIC, LPCOMPOSITIONSTRING pCS,
                  const TRANSMSG *pSrc, LPTRANSMSG pDest)
 {
@@ -21,8 +20,7 @@ Imm32JTransCompA(LPINPUTCONTEXTDX pIC, LPCOMPOSITIONSTRING pCS,
     return 1;
 }
 
-/* Win: JTransCompositionW */
-DWORD APIENTRY
+DWORD
 Imm32JTransCompW(LPINPUTCONTEXTDX pIC, LPCOMPOSITIONSTRING pCS,
                  const TRANSMSG *pSrc, LPTRANSMSG pDest)
 {
@@ -33,7 +31,7 @@ Imm32JTransCompW(LPINPUTCONTEXTDX pIC, LPCOMPOSITIONSTRING pCS,
 
 typedef LRESULT (WINAPI *FN_SendMessage)(HWND, UINT, WPARAM, LPARAM);
 
-DWORD APIENTRY
+DWORD
 WINNLSTranslateMessageJ(DWORD dwCount, LPTRANSMSG pTrans, LPINPUTCONTEXTDX pIC,
                         LPCOMPOSITIONSTRING pCS, BOOL bAnsi)
 {
@@ -172,7 +170,7 @@ DoDefault:
     return ret;
 }
 
-DWORD APIENTRY
+DWORD
 WINNLSTranslateMessageK(DWORD dwCount, LPTRANSMSG pEntries, LPINPUTCONTEXTDX pIC,
                         LPCOMPOSITIONSTRING pCS, BOOL bAnsi)
 {
@@ -180,7 +178,7 @@ WINNLSTranslateMessageK(DWORD dwCount, LPTRANSMSG pEntries, LPINPUTCONTEXTDX pIC
     return dwCount;
 }
 
-DWORD APIENTRY
+DWORD
 WINNLSTranslateMessage(DWORD dwCount, LPTRANSMSG pEntries, HIMC hIMC, BOOL bAnsi, WORD wLang)
 {
     BOOL ret = FALSE;
@@ -213,7 +211,10 @@ WINNLSTranslateMessage(DWORD dwCount, LPTRANSMSG pEntries, HIMC hIMC, BOOL bAnsi
 /***********************************************************************
  *		ImmSendIMEMessageExA(IMM32.@)
  */
-WORD WINAPI ImmSendIMEMessageExA(HWND hWnd, LPARAM lParam)
+WORD WINAPI
+ImmSendIMEMessageExA(
+    _In_ HWND hWnd,
+    _In_ LPARAM lParam)
 {
     FIXME("(%p, %p)\n", hWnd, lParam);
     return 0;
@@ -222,7 +223,10 @@ WORD WINAPI ImmSendIMEMessageExA(HWND hWnd, LPARAM lParam)
 /***********************************************************************
  *		ImmSendIMEMessageExW(IMM32.@)
  */
-WORD WINAPI ImmSendIMEMessageExW(HWND hWnd, LPARAM lParam)
+WORD WINAPI
+ImmSendIMEMessageExW(
+    _In_ HWND hWnd,
+    _In_ LPARAM lParam)
 {
     FIXME("(%p, %p)\n", hWnd, lParam);
     return 0;