https://git.reactos.org/?p=reactos.git;a=commitdiff;h=e5548aa5014adee6e608d9fd1d57a912274a283e

commit e5548aa5014adee6e608d9fd1d57a912274a283e
Author:     Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com>
AuthorDate: Mon Jan 1 11:05:49 2024 +0900
Commit:     GitHub <nore...@github.com>
CommitDate: Mon Jan 1 11:05:49 2024 +0900

    [MSCTFIME][SDK] Improve human readability (#6240)
    
    Improve code quality.
    JIRA issue: CORE-19360
    - Add some SAL annotations.
    - Add readable comments more.
    - Rename some member variables.
---
 dll/ime/msctfime/msctfime.cpp       | 265 ++++++++++++++++++++++--------------
 sdk/include/reactos/cicero/cicimc.h |  25 ++--
 2 files changed, 173 insertions(+), 117 deletions(-)

diff --git a/dll/ime/msctfime/msctfime.cpp b/dll/ime/msctfime/msctfime.cpp
index 769b56e6502..c5bfab1abdb 100644
--- a/dll/ime/msctfime/msctfime.cpp
+++ b/dll/ime/msctfime/msctfime.cpp
@@ -37,7 +37,7 @@ UINT WM_MSIME_KEYMAP = 0;
 /**
  * @implemented
  */
-BOOL IsMsImeMessage(UINT uMsg)
+BOOL IsMsImeMessage(_In_ UINT uMsg)
 {
     return (uMsg == WM_MSIME_SERVICE ||
             uMsg == WM_MSIME_UIREADY ||
@@ -82,6 +82,9 @@ BOOL RegisterMSIMEMessage(VOID)
 typedef BOOLEAN (WINAPI *FN_DllShutDownInProgress)(VOID);
 
 /**
+ * This function calls ntdll!RtlDllShutdownInProgress.
+ * It can detect the system is shutting down or not.
+ *
  * @implemented
  */
 EXTERN_C BOOLEAN WINAPI
@@ -103,6 +106,8 @@ DllShutDownInProgress(VOID)
 }
 
 /**
+ * This function checks if the current user logon session is interactive.
+ *
  * @implemented
  */
 static BOOL
@@ -160,9 +165,11 @@ HRESULT UninitDisplayAttrbuteLib(PCIC_LIBTHREAD pLibThread)
 }
 
 /**
+ * Gets the charset from a language ID.
+ *
  * @implemented
  */
-BYTE GetCharsetFromLangId(DWORD dwValue)
+BYTE GetCharsetFromLangId(_In_ DWORD dwValue)
 {
     CHARSETINFO info;
     if (!::TranslateCharsetInfo((DWORD*)(DWORD_PTR)dwValue, &info, 
TCI_SRCLOCALE))
@@ -171,10 +178,15 @@ BYTE GetCharsetFromLangId(DWORD dwValue)
 }
 
 /**
+ * Selects or unselects the input context.
+ *
  * @implemented
  */
 HRESULT
-InternalSelectEx(HIMC hIMC, BOOL fSelect, LANGID LangID)
+InternalSelectEx(
+    _In_ HIMC hIMC,
+    _In_ BOOL fSelect,
+    _In_ LANGID LangID)
 {
     CicIMCLock imcLock(hIMC);
     if (!imcLock)
@@ -574,45 +586,49 @@ HRESULT CCompartmentEventSink::_Unadvise()
     return S_OK;
 }
 
+class CInputContextOwnerCallBack;
+
 /***********************************************************************
  *      CicInputContext
+ *
+ * The msctfime.ime's input context.
  */
-
-class CInputContextOwnerCallBack;
-
-/* FIXME */
 class CicInputContext
     : public ITfCleanupContextSink
     , public ITfContextOwnerCompositionSink
     , public ITfCompositionSink
 {
 public:
-    DWORD m_dw[2];
+    ITfContextOwnerCompositionSink *m_pContextOwnerCompositionSink;
+    DWORD m_dwUnknown0;
     LONG m_cRefs;
     HIMC m_hIMC;
     ITfDocumentMgr *m_pDocumentMgr;
     ITfContext *m_pContext;
-    DWORD m_dw0_0[1];
+    DWORD m_dwUnknown1;
     CInputContextOwnerCallBack *m_pICOwnerCallback;
-    DWORD m_dw0;
+    LPVOID m_pTextEventSink;
     CCompartmentEventSink *m_pCompEventSink1;
     CCompartmentEventSink *m_pCompEventSink2;
-    DWORD m_dw0_5[4];
-    DWORD m_dw1[2];
+    DWORD m_dwUnknown3[4];
+    DWORD m_dwUnknown4[2];
     DWORD m_dwQueryPos;
-    DWORD m_dw1_5[1];
+    DWORD m_dwUnknown5;
     GUID m_guid;
-    DWORD m_dw2[19];
+    DWORD m_dwUnknown6[11];
+    BOOL m_bSelecting;
+    DWORD m_dwUnknown7[7];
     WORD m_cGuidAtoms;
     WORD m_padding;
     DWORD m_adwGuidAtoms[256];
-    DWORD m_dw3[19];
+    DWORD m_dwUnknown8[19];
 
 public:
-    CicInputContext(TfClientId cliendId, PCIC_LIBTHREAD pLibThread, HIMC hIMC);
-    virtual ~CicInputContext()
-    {
-    }
+    CicInputContext(
+        _In_ TfClientId cliendId,
+        _Inout_ PCIC_LIBTHREAD pLibThread,
+        _In_ HIMC hIMC);
+    virtual ~CicInputContext() { }
 
     // IUnknown interface
     STDMETHODIMP QueryInterface(REFIID riid, LPVOID* ppvObj) override;
@@ -620,7 +636,7 @@ public:
     STDMETHODIMP_(ULONG) Release() override;
 
     // ITfCleanupContextSink interface
-    STDMETHODIMP OnCleanupContext(TfEditCookie ecWrite, ITfContext *pic) 
override;
+    STDMETHODIMP OnCleanupContext(_In_ TfEditCookie ecWrite, _Inout_ 
ITfContext *pic) override;
 
     // ITfContextOwnerCompositionSink interface
     STDMETHODIMP OnStartComposition(ITfCompositionView *pComposition, BOOL 
*pfOk) override;
@@ -636,14 +652,17 @@ public:
         _In_ BYTE iAtom,
         _Out_opt_ LPDWORD pdwGuidAtom);
 
-    HRESULT CreateInputContext(ITfThreadMgr *pThreadMgr, CicIMCLock& imcLock);
+    HRESULT CreateInputContext(_Inout_ ITfThreadMgr *pThreadMgr, _Inout_ 
CicIMCLock& imcLock);
     HRESULT DestroyInputContext();
 };
 
 /**
  * @unimplemented
  */
-CicInputContext::CicInputContext(TfClientId cliendId, PCIC_LIBTHREAD 
pLibThread, HIMC hIMC)
+CicInputContext::CicInputContext(
+    _In_ TfClientId cliendId,
+    _Inout_ PCIC_LIBTHREAD pLibThread,
+    _In_ HIMC hIMC)
 {
     m_hIMC = hIMC;
     m_guid = GUID_NULL;
@@ -757,7 +776,9 @@ CicInputContext::GetGuidAtom(
  * @unimplemented
  */
 HRESULT
-CicInputContext::CreateInputContext(ITfThreadMgr *pThreadMgr, CicIMCLock& 
imcLock)
+CicInputContext::CreateInputContext(
+    _Inout_ ITfThreadMgr *pThreadMgr,
+    _Inout_ CicIMCLock& imcLock)
 {
     //FIXME
     return E_NOTIMPL;
@@ -783,6 +804,8 @@ CicInputContext::OnCompositionTerminated(TfEditCookie 
ecWrite, ITfComposition *p
 }
 
 /**
+ * Retrieves the IME information.
+ *
  * @implemented
  */
 HRESULT
@@ -872,12 +895,12 @@ protected:
 
 public:
     CThreadMgrEventSink(
-        FN_INITDOCMGR fnInit,
-        FN_PUSHPOP fnPushPop = NULL,
-        LPVOID pvCallbackPV = NULL);
+        _In_ FN_INITDOCMGR fnInit,
+        _In_ FN_PUSHPOP fnPushPop = NULL,
+        _Inout_ LPVOID pvCallbackPV = NULL);
     virtual ~CThreadMgrEventSink() { }
 
-    void SetCallbackPV(LPVOID pv);
+    void SetCallbackPV(_Inout_ LPVOID pv);
     HRESULT _Advise(ITfThreadMgr *pThreadMgr);
     HRESULT _Unadvise();
 
@@ -904,9 +927,9 @@ public:
  * @implemented
  */
 CThreadMgrEventSink::CThreadMgrEventSink(
-    FN_INITDOCMGR fnInit,
-    FN_PUSHPOP fnPushPop,
-    LPVOID pvCallbackPV)
+    _In_ FN_INITDOCMGR fnInit,
+    _In_ FN_PUSHPOP fnPushPop,
+    _Inout_ LPVOID pvCallbackPV)
 {
     m_fnInit = fnInit;
     m_fnPushPop = fnPushPop;
@@ -996,7 +1019,7 @@ STDMETHODIMP CThreadMgrEventSink::OnPopContext(ITfContext 
*pic)
     return m_fnPushPop(4, pic, m_pCallbackPV);
 }
 
-void CThreadMgrEventSink::SetCallbackPV(LPVOID pv)
+void CThreadMgrEventSink::SetCallbackPV(_Inout_ LPVOID pv)
 {
     if (!m_pCallbackPV)
         m_pCallbackPV = pv;
@@ -1052,7 +1075,7 @@ HRESULT CThreadMgrEventSink::_Unadvise()
 class CFunctionProvider : public IUnknown
 {
 public:
-    CFunctionProvider(TfClientId clientId)
+    CFunctionProvider(_In_ TfClientId clientId)
     {
     }
 
@@ -1091,8 +1114,8 @@ class CicBridge : public ITfSysHookSink
 {
 protected:
     LONG m_cRefs;
-    DWORD m_dwImmxInit;
-    DWORD m_dw[1];
+    BOOL m_bImmxInited;
+    BOOL m_bUnknown1;
     BOOL m_bDeactivating;
     DWORD m_cActivateLocks;
     ITfKeystrokeMgr *m_pKeystrokeMgr;
@@ -1100,7 +1123,7 @@ protected:
     CThreadMgrEventSink *m_pThreadMgrEventSink;
     TfClientId m_cliendId;
     CIC_LIBTHREAD m_LibThread;
-    DWORD m_dw21;
+    BOOL m_bUnknown2;
 
     static BOOL CALLBACK EnumCreateInputContextCallback(HIMC hIMC, LPARAM 
lParam);
     static BOOL CALLBACK EnumDestroyInputContextCallback(HIMC hIMC, LPARAM 
lParam);
@@ -1119,32 +1142,41 @@ public:
     STDMETHODIMP OnSysKeyboardProc(UINT, LONG) override;
     STDMETHODIMP OnSysShellProc(INT, UINT, LONG) override;
 
-    HRESULT InitIMMX(TLS *pTLS);
-    BOOL UnInitIMMX(TLS *pTLS);
-    HRESULT ActivateIMMX(TLS *pTLS, ITfThreadMgr_P *pThreadMgr);
-    HRESULT DeactivateIMMX(TLS *pTLS, ITfThreadMgr_P *pThreadMgr);
+    HRESULT InitIMMX(_Inout_ TLS *pTLS);
+    BOOL UnInitIMMX(_Inout_ TLS *pTLS);
+    HRESULT ActivateIMMX(_Inout_ TLS *pTLS, _Inout_ ITfThreadMgr_P 
*pThreadMgr);
+    HRESULT DeactivateIMMX(_Inout_ TLS *pTLS, _Inout_ ITfThreadMgr_P 
*pThreadMgr);
 
     HRESULT CreateInputContext(TLS *pTLS, HIMC hIMC);
     HRESULT DestroyInputContext(TLS *pTLS, HIMC hIMC);
     ITfContext *GetInputContext(CicIMCCLock<CTFIMECONTEXT>& imeContext);
 
     HRESULT SelectEx(
-        TLS *pTLS,
-        ITfThreadMgr_P *pThreadMgr,
-        HIMC hIMC,
-        BOOL fSelect,
-        HKL hKL);
+        _Inout_ TLS *pTLS,
+        _Inout_ ITfThreadMgr_P *pThreadMgr,
+        _In_ HIMC hIMC,
+        _In_ BOOL fSelect,
+        _In_ HKL hKL);
     HRESULT OnSetOpenStatus(
         TLS *pTLS,
         ITfThreadMgr_P *pThreadMgr,
         CicIMCLock& imcLock,
         CicInputContext *pCicIC);
 
-    void PostTransMsg(HWND hWnd, INT cTransMsgs, LPTRANSMSG pTransMsgs);
-    void GetDocumentManager(CicIMCCLock<CTFIMECONTEXT>& imeContext);
+    void PostTransMsg(_In_ HWND hWnd, _In_ INT cTransMsgs, _In_ const TRANSMSG 
*pTransMsgs);
+    void GetDocumentManager(_Inout_ CicIMCCLock<CTFIMECONTEXT>& imeContext);
 
-    HRESULT ConfigureGeneral(TLS* pTLS, ITfThreadMgr *pThreadMgr, HKL hKL, 
HWND hWnd);
-    HRESULT ConfigureRegisterWord(TLS* pTLS, ITfThreadMgr *pThreadMgr, HKL 
hKL, HWND hWnd, LPVOID lpData);
+    HRESULT
+    ConfigureGeneral(_Inout_ TLS* pTLS,
+        _In_ ITfThreadMgr *pThreadMgr,
+        _In_ HKL hKL,
+        _In_ HWND hWnd);
+    HRESULT ConfigureRegisterWord(
+        _Inout_ TLS* pTLS,
+        _In_ ITfThreadMgr *pThreadMgr,
+        _In_ HKL hKL,
+        _In_ HWND hWnd,
+        _Inout_opt_ LPVOID lpData);
 };
 
 class CActiveLanguageProfileNotifySink : public 
ITfActiveLanguageProfileNotifySink
@@ -1158,7 +1190,7 @@ protected:
     LPVOID m_pUserData;
 
 public:
-    CActiveLanguageProfileNotifySink(FN_COMPARE fnCompare, void *pUserData);
+    CActiveLanguageProfileNotifySink(_In_ FN_COMPARE fnCompare, _Inout_opt_ 
void *pUserData);
     virtual ~CActiveLanguageProfileNotifySink();
 
     HRESULT _Advise(ITfThreadMgr *pThreadMgr);
@@ -1181,8 +1213,8 @@ public:
  * @implemented
  */
 CActiveLanguageProfileNotifySink::CActiveLanguageProfileNotifySink(
-    FN_COMPARE fnCompare,
-    void *pUserData)
+    _In_ FN_COMPARE fnCompare,
+    _Inout_opt_ void *pUserData)
 {
     m_dwConnection = (DWORD)-1;
     m_fnCompare = fnCompare;
@@ -1322,7 +1354,7 @@ protected:
     UINT    m_nCodePage;
     LANGID  m_LangID2;
     WORD    m_padding2;
-    DWORD   m_dw3[1];
+    DWORD   m_dwUnknown1;
     LONG    m_cRefs;
 
     static INT CALLBACK
@@ -1341,11 +1373,15 @@ public:
     STDMETHODIMP_(ULONG) AddRef() override;
     STDMETHODIMP_(ULONG) Release() override;
 
-    HRESULT GetActiveLanguageProfile(HKL hKL, REFGUID rguid, 
TF_LANGUAGEPROFILE *pProfile);
-    HRESULT GetLangId(LANGID *pLangID);
-    HRESULT GetCodePageA(UINT *puCodePage);
-
-    HRESULT InitProfileInstance(TLS *pTLS);
+    HRESULT
+    GetActiveLanguageProfile(
+        _In_ HKL hKL,
+        _In_ REFGUID rguid,
+        _Out_ TF_LANGUAGEPROFILE *pProfile);
+    HRESULT GetLangId(_Out_ LANGID *pLangID);
+    HRESULT GetCodePageA(_Out_ UINT *puCodePage);
+
+    HRESULT InitProfileInstance(_Inout_ TLS *pTLS);
 };
 
 /**
@@ -1360,7 +1396,7 @@ CicProfile::CicProfile()
     m_LangID1 = 0;
     m_nCodePage = CP_ACP;
     m_LangID2 = 0;
-    m_dw3[0] = 0;
+    m_dwUnknown1 = 0;
 }
 
 /**
@@ -1433,7 +1469,7 @@ CicProfile::ActiveLanguageProfileNotifySinkCallback(
 /**
  * @implemented
  */
-HRESULT CicProfile::GetCodePageA(UINT *puCodePage)
+HRESULT CicProfile::GetCodePageA(_Out_ UINT *puCodePage)
 {
     if (!puCodePage)
         return E_INVALIDARG;
@@ -1466,7 +1502,7 @@ HRESULT CicProfile::GetCodePageA(UINT *puCodePage)
 /**
  * @implemented
  */
-HRESULT CicProfile::GetLangId(LANGID *pLangID)
+HRESULT CicProfile::GetLangId(_Out_ LANGID *pLangID)
 {
     *pLangID = 0;
 
@@ -1500,7 +1536,8 @@ public:
     ITfThreadMgr_P *m_pThreadMgr;
     DWORD m_dwFlags1;
     DWORD m_dwFlags2;
-    DWORD m_dwUnknown2[2];
+    DWORD m_dwUnknown2;
+    BOOL m_bDestroyed;
     DWORD m_dwNowOpening;
     DWORD m_NonEAComposition;
     DWORD m_cWnds;
@@ -1574,8 +1611,8 @@ TLS* TLS::InternalAllocateTLS()
         return NULL;
     }
 
-    pTLS->m_dwUnknown2[0] |= 1;
-    pTLS->m_dwUnknown2[2] |= 1;
+    pTLS->m_dwFlags1 |= 1;
+    pTLS->m_dwUnknown2 |= 1;
     return pTLS;
 }
 
@@ -1604,7 +1641,7 @@ BOOL TLS::InternalDestroyTLS()
  * @implemented
  */
 HRESULT
-CicProfile::InitProfileInstance(TLS *pTLS)
+CicProfile::InitProfileInstance(_Inout_ TLS *pTLS)
 {
     HRESULT hr = TF_CreateInputProcessorProfiles(&m_pIPProfiles);
     if (FAILED(hr))
@@ -1633,7 +1670,10 @@ CicProfile::InitProfileInstance(TLS *pTLS)
 /**
  * @implemented
  */
-STDMETHODIMP CicInputContext::OnCleanupContext(TfEditCookie ecWrite, 
ITfContext *pic)
+STDMETHODIMP
+CicInputContext::OnCleanupContext(
+    _In_ TfEditCookie ecWrite,
+    _Inout_ ITfContext *pic)
 {
     TLS *pTLS = TLS::PeekTLS();
     if (!pTLS || !pTLS->m_pProfile)
@@ -1686,10 +1726,10 @@ STDMETHODIMP 
CicInputContext::OnCleanupContext(TfEditCookie ecWrite, ITfContext
 
 CicBridge::CicBridge()
 {
-    m_dwImmxInit &= ~1;
-    m_dw[0] &= ~1;
+    m_bImmxInited = FALSE;
+    m_bUnknown1 = FALSE;
     m_bDeactivating = FALSE;
-    m_dw21 &= ~1;
+    m_bUnknown2 = FALSE;
     m_pKeystrokeMgr = NULL;
     m_pDocMgr = NULL;
     m_pThreadMgrEventSink = NULL;
@@ -1747,7 +1787,7 @@ CicBridge::~CicBridge()
         UnInitIMMX(pTLS);
 }
 
-void CicBridge::GetDocumentManager(CicIMCCLock<CTFIMECONTEXT>& imeContext)
+void CicBridge::GetDocumentManager(_Inout_ CicIMCCLock<CTFIMECONTEXT>& 
imeContext)
 {
     CicInputContext *pCicIC = imeContext.get().m_pCicIC;
     if (pCicIC)
@@ -1765,7 +1805,10 @@ void 
CicBridge::GetDocumentManager(CicIMCCLock<CTFIMECONTEXT>& imeContext)
 /**
  * @unimplemented
  */
-HRESULT CicBridge::CreateInputContext(TLS *pTLS, HIMC hIMC)
+HRESULT
+CicBridge::CreateInputContext(
+    _Inout_ TLS *pTLS,
+    _In_ HIMC hIMC)
 {
     CicIMCLock imcLock(hIMC);
     HRESULT hr = imcLock.m_hr;
@@ -1888,15 +1931,16 @@ HRESULT CicBridge::OnSetOpenStatus(
 }
 
 /**
+ * Selects the IME context.
  * @implemented
  */
 HRESULT
 CicBridge::SelectEx(
-    TLS *pTLS,
-    ITfThreadMgr_P *pThreadMgr,
-    HIMC hIMC,
-    BOOL fSelect,
-    HKL hKL)
+    _Inout_ TLS *pTLS,
+    _Inout_ ITfThreadMgr_P *pThreadMgr,
+    _In_ HIMC hIMC,
+    _In_ BOOL fSelect,
+    _In_ HKL hKL)
 {
     CicIMCLock imcLock(hIMC);
     if (FAILED(imcLock.m_hr))
@@ -1910,12 +1954,12 @@ CicBridge::SelectEx(
 
     CicInputContext *pCicIC = imeContext.get().m_pCicIC;
     if (pCicIC)
-        pCicIC->m_dw2[11] |= 1;
+        pCicIC->m_bSelecting = TRUE;
 
     if (fSelect)
     {
         if (pCicIC)
-            pCicIC->m_dw2[1] &= ~1;
+            pCicIC->m_dwUnknown6[1] &= ~1;
         if (imcLock.get().fOpen)
             OnSetOpenStatus(pTLS, pThreadMgr, imcLock, pCicIC);
     }
@@ -1924,7 +1968,7 @@ CicBridge::SelectEx(
         ITfContext *pContext = GetInputContext(imeContext);
         pThreadMgr->RequestPostponedLock(pContext);
         if (pCicIC)
-            pCicIC->m_dw2[11] &= ~1;
+            pCicIC->m_bSelecting = FALSE;
         if (pContext)
             pContext->Release();
     }
@@ -1932,6 +1976,10 @@ CicBridge::SelectEx(
     return imeContext.m_hr;
 }
 
+/**
+ * Used in CicBridge::EnumCreateInputContextCallback and
+ * CicBridge::EnumDestroyInputContextCallback.
+ */
 typedef struct ENUM_CREATE_DESTROY_IC
 {
     TLS *m_pTLS;
@@ -1939,6 +1987,7 @@ typedef struct ENUM_CREATE_DESTROY_IC
 } ENUM_CREATE_DESTROY_IC, *PENUM_CREATE_DESTROY_IC;
 
 /**
+ * Creates input context for the current thread.
  * @implemented
  */
 BOOL CALLBACK CicBridge::EnumCreateInputContextCallback(HIMC hIMC, LPARAM 
lParam)
@@ -1949,6 +1998,7 @@ BOOL CALLBACK 
CicBridge::EnumCreateInputContextCallback(HIMC hIMC, LPARAM lParam
 }
 
 /**
+ * Destroys input context for the current thread.
  * @implemented
  */
 BOOL CALLBACK CicBridge::EnumDestroyInputContextCallback(HIMC hIMC, LPARAM 
lParam)
@@ -1961,7 +2011,10 @@ BOOL CALLBACK 
CicBridge::EnumDestroyInputContextCallback(HIMC hIMC, LPARAM lPara
 /**
  * @implemented
  */
-HRESULT CicBridge::ActivateIMMX(TLS *pTLS, ITfThreadMgr_P *pThreadMgr)
+HRESULT
+CicBridge::ActivateIMMX(
+    _Inout_ TLS *pTLS,
+    _Inout_ ITfThreadMgr_P *pThreadMgr)
 {
     HRESULT hr = pThreadMgr->ActivateEx(&m_cliendId, 1);
     if (hr != S_OK)
@@ -2006,7 +2059,7 @@ HRESULT CicBridge::ActivateIMMX(TLS *pTLS, ITfThreadMgr_P 
*pThreadMgr)
     pThreadMgr->SetSysHookSink(this);
 
     hr = S_OK;
-    if (pTLS->m_dwUnknown2[1] & 1)
+    if (pTLS->m_bDestroyed)
     {
         ENUM_CREATE_DESTROY_IC Data = { pTLS, this };
         ImmEnumInputContext(0, CicBridge::EnumCreateInputContextCallback, 
(LPARAM)&Data);
@@ -2023,7 +2076,10 @@ Finish:
 /**
  * @implemented
  */
-HRESULT CicBridge::DeactivateIMMX(TLS *pTLS, ITfThreadMgr_P *pThreadMgr)
+HRESULT
+CicBridge::DeactivateIMMX(
+    _Inout_ TLS *pTLS,
+    _Inout_ ITfThreadMgr_P *pThreadMgr)
 {
     if (m_bDeactivating)
         return TRUE;
@@ -2034,7 +2090,7 @@ HRESULT CicBridge::DeactivateIMMX(TLS *pTLS, 
ITfThreadMgr_P *pThreadMgr)
     {
         ENUM_CREATE_DESTROY_IC Data = { pTLS, this };
         ImmEnumInputContext(0, CicBridge::EnumDestroyInputContextCallback, 
(LPARAM)&Data);
-        pTLS->m_dwUnknown2[1] |= 1;
+        pTLS->m_bDestroyed = TRUE;
 
         ITfSourceSingle *pSource = NULL;
         if (pThreadMgr->QueryInterface(IID_ITfSourceSingle, (void **)&pSource) 
== S_OK)
@@ -2068,9 +2124,10 @@ HRESULT CicBridge::DeactivateIMMX(TLS *pTLS, 
ITfThreadMgr_P *pThreadMgr)
 /**
  * @implemented
  */
-HRESULT CicBridge::InitIMMX(TLS *pTLS)
+HRESULT
+CicBridge::InitIMMX(_Inout_ TLS *pTLS)
 {
-    if (m_dwImmxInit & 1)
+    if (m_bImmxInited)
         return S_OK;
 
     HRESULT hr = S_OK;
@@ -2130,14 +2187,14 @@ HRESULT CicBridge::InitIMMX(TLS *pTLS)
         return E_FAIL;
     }
 
-    m_dwImmxInit |= 1;
+    m_bImmxInited = TRUE;
     return S_OK;
 }
 
 /**
  * @implemented
  */
-BOOL CicBridge::UnInitIMMX(TLS *pTLS)
+BOOL CicBridge::UnInitIMMX(_Inout_ TLS *pTLS)
 {
     UninitDisplayAttrbuteLib(&m_LibThread);
     TFUninitLib_Thread(&m_LibThread);
@@ -2167,7 +2224,7 @@ BOOL CicBridge::UnInitIMMX(TLS *pTLS)
         pTLS->m_pThreadMgr = NULL;
     }
 
-    m_dwImmxInit &= ~1;
+    m_bImmxInited = FALSE;
     return TRUE;
 }
 
@@ -2198,7 +2255,11 @@ STDMETHODIMP CicBridge::OnSysShellProc(INT, UINT, LONG)
 /**
  * @implemented
  */
-void CicBridge::PostTransMsg(HWND hWnd, INT cTransMsgs, LPTRANSMSG pTransMsgs)
+void
+CicBridge::PostTransMsg(
+    _In_ HWND hWnd,
+    _In_ INT cTransMsgs,
+    _In_ const TRANSMSG *pTransMsgs)
 {
     for (INT i = 0; i < cTransMsgs; ++i, ++pTransMsgs)
     {
@@ -2211,10 +2272,10 @@ void CicBridge::PostTransMsg(HWND hWnd, INT cTransMsgs, 
LPTRANSMSG pTransMsgs)
  */
 HRESULT
 CicBridge::ConfigureGeneral(
-    TLS* pTLS,
-    ITfThreadMgr *pThreadMgr,
-    HKL hKL,
-    HWND hWnd)
+    _Inout_ TLS* pTLS,
+    _In_ ITfThreadMgr *pThreadMgr,
+    _In_ HKL hKL,
+    _In_ HWND hWnd)
 {
     CicProfile *pProfile = pTLS->m_pProfile;
     if (!pProfile)
@@ -2250,11 +2311,11 @@ CicBridge::ConfigureGeneral(
  */
 HRESULT
 CicBridge::ConfigureRegisterWord(
-    TLS* pTLS,
-    ITfThreadMgr *pThreadMgr,
-    HKL hKL,
-    HWND hWnd,
-    LPVOID lpData)
+    _Inout_ TLS* pTLS,
+    _In_ ITfThreadMgr *pThreadMgr,
+    _In_ HKL hKL,
+    _In_ HWND hWnd,
+    _Inout_opt_ LPVOID lpData)
 {
     CicProfile *pProfile = pTLS->m_pProfile;
     if (!pProfile)
@@ -2311,9 +2372,9 @@ CicBridge::ConfigureRegisterWord(
  */
 HRESULT
 CicProfile::GetActiveLanguageProfile(
-    HKL hKL,
-    REFGUID rguid,
-    TF_LANGUAGEPROFILE *pProfile)
+    _In_ HKL hKL,
+    _In_ REFGUID rguid,
+    _Out_ TF_LANGUAGEPROFILE *pProfile)
 {
     return E_NOTIMPL;
 }
@@ -2916,7 +2977,9 @@ CtfImeIsIME(
     return FALSE;
 }
 
-/**
+/***********************************************************************
+ *      CtfImeThreadDetach (MSCTFIME.@)
+ *
  * @implemented
  */
 EXTERN_C HRESULT WINAPI
diff --git a/sdk/include/reactos/cicero/cicimc.h 
b/sdk/include/reactos/cicero/cicimc.h
index dcef56ef687..4f0e6c73e0a 100644
--- a/sdk/include/reactos/cicero/cicimc.h
+++ b/sdk/include/reactos/cicero/cicimc.h
@@ -184,22 +184,24 @@ protected:
     }
 };
 
+#define CUSTOM_CAND_INFO_SIZE 1964
+
 inline BOOL CicIMCLock::ClearCand()
 {
     HIMCC hNewCandInfo, hCandInfo = m_pIC->hCandInfo;
     if (hCandInfo)
     {
-        hNewCandInfo = ImmReSizeIMCC(hCandInfo, 1964);
+        hNewCandInfo = ImmReSizeIMCC(hCandInfo, CUSTOM_CAND_INFO_SIZE);
         if (!hNewCandInfo)
         {
             ImmDestroyIMCC(m_pIC->hCandInfo);
-            m_pIC->hCandInfo = ImmCreateIMCC(1964);
+            m_pIC->hCandInfo = ImmCreateIMCC(CUSTOM_CAND_INFO_SIZE);
             return FALSE;
         }
     }
     else
     {
-        hNewCandInfo = ImmCreateIMCC(1964u);
+        hNewCandInfo = ImmCreateIMCC(CUSTOM_CAND_INFO_SIZE);
     }
 
     m_pIC->hCandInfo = hNewCandInfo;
@@ -210,24 +212,15 @@ inline BOOL CicIMCLock::ClearCand()
     if (!candInfo)
     {
         ImmDestroyIMCC(m_pIC->hCandInfo);
-        m_pIC->hCandInfo = ImmCreateIMCC(1964);
+        m_pIC->hCandInfo = ImmCreateIMCC(CUSTOM_CAND_INFO_SIZE);
         return FALSE;
     }
 
-    candInfo.get().dwSize = 1964;
+    candInfo.get().dwSize = CUSTOM_CAND_INFO_SIZE;
     candInfo.get().dwCount = 0;
     candInfo.get().dwOffset[0] = sizeof(CANDIDATEINFO);
 
-    LPBYTE pb = (LPBYTE)(&candInfo.get());
-    pb += sizeof(CANDIDATEINFO);
-
-    LPDWORD pdwUnknown = (LPDWORD)pb;
-    pdwUnknown[0] = candInfo.get().dwSize - sizeof(CANDIDATEINFO); // +0x0
-    pdwUnknown[2] = 0;     // +0x08
-    pdwUnknown[3] = 0;     // +0x0c
-    pdwUnknown[4] = 0;     // +0x10
-    pdwUnknown[1] = 1;     // +0x04
-    pdwUnknown[5] = 9;     // +0x14
-    pdwUnknown[6] = 1048;  // +0x18
+    // FIXME: Something is trailing after CANDIDATEINFO...
+
     return TRUE;
 }

Reply via email to