/*++ Copyright (c) 2001, Microsoft Corporation Module Name: oldaimm.cpp Abstract: This file implements the old AIMM Class. Author: Revision History: Notes: --*/ #include "private.h" #include "oldaimm.h" #include "delay.h" #include "cregkey.h" #include "globals.h" #ifdef OLD_AIMM_ENABLED #include "imtls.h" DWORD g_dwTLSIndex = -1; BOOL g_fInLegacyClsid = FALSE; BOOL g_fTrident55 = FALSE; BOOL g_fAIMM12Trident = FALSE; typedef enum { CUAS_UNKNOWN = -1, CUAS_OFF = 0, CUAS_ON = 1 } CUAS_SWITCH; CUAS_SWITCH g_fCUAS = CUAS_UNKNOWN; //+--------------------------------------------------------------------------- // // IsCTFIMEEnabled // //---------------------------------------------------------------------------- BOOL IsCTFIMEEnabled() { return imm32prev::CtfImmIsCiceroEnabled(); } //+--------------------------------------------------------------------------- // // IsOldAImm // //---------------------------------------------------------------------------- BOOL IsOldAImm() { if (! GetSystemMetrics( SM_IMMENABLED )) return TRUE; if (! IsCTFIMEEnabled()) return TRUE; return FALSE; } //+--------------------------------------------------------------------------- // // IsCUAS_ON // //---------------------------------------------------------------------------- BOOL IsCUAS_ON() { // // REGKEY // const TCHAR c_szCTFSharedKey[] = TEXT("SOFTWARE\\Microsoft\\CTF\\SystemShared"); // REG_DWORD : 0 // No // 1 // Yes const TCHAR c_szCUAS[] = TEXT("CUAS"); if (g_fCUAS == CUAS_UNKNOWN) { CMyRegKey CtfReg; LONG lRet; lRet = CtfReg.Open(HKEY_LOCAL_MACHINE, c_szCTFSharedKey, KEY_READ); if (lRet == ERROR_SUCCESS) { DWORD dw; lRet = CtfReg.QueryValue(dw, c_szCUAS); if (lRet == ERROR_SUCCESS) { g_fCUAS = (dw == 0 ? CUAS_OFF : CUAS_ON); } } } return g_fCUAS == CUAS_ON ? TRUE : FALSE; } //+--------------------------------------------------------------------------- // // OldAImm_DllProcessAttach // //---------------------------------------------------------------------------- BOOL OldAImm_DllProcessAttach(HINSTANCE hInstance) { g_hInst = hInstance; g_dwTLSIndex = TlsAlloc(); if (!DIMM12_DllProcessAttach()) return FALSE; if (!WIN32LR_DllProcessAttach()) return FALSE; return TRUE; } BOOL OldAImm_DllThreadAttach() { WIN32LR_DllThreadAttach(); return TRUE; } VOID OldAImm_DllThreadDetach() { WIN32LR_DllThreadDetach(); IMTLS_Free(); } VOID OldAImm_DllProcessDetach() { WIN32LR_DllProcessDetach(); IMTLS_Free(); TlsFree(g_dwTLSIndex); } #else // OLD_AIMM_ENABLED BOOL IsOldAImm() { return FALSE; } BOOL OldAImm_DllProcessAttach(HINSTANCE hInstance) { return FALSE; } BOOL OldAImm_DllThreadAttach() { return FALSE; } VOID OldAImm_DllThreadDetach() { } VOID OldAImm_DllProcessDetach() { } #endif // OLD_AIMM_ENABLED