Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

179 lines
6.2 KiB

//+---------------------------------------------------------------------------
//
// File: globals.cpp
//
// Contents: Global variables.
//
//----------------------------------------------------------------------------
#include "private.h"
#include "globals.h"
HINSTANCE g_hInst = NULL;
// used by COM server
HINSTANCE GetServerHINSTANCE(void)
{
return g_hInst;
}
DWORD g_dwTLSIndex = TLS_OUT_OF_INDEXES;
DECLARE_OSVER()
CCiceroSharedMem g_SharedMemory;
HKL g_hklDefault;
// registered messages
UINT g_msgPrivate;
//
// private message for SetFocusNotifySink
//
UINT g_msgSetFocus;
UINT g_msgThreadTerminate;
UINT g_msgThreadItemChange;
//
// private message for Modal LangBar
//
UINT g_msgLBarModal;
UINT g_msgRpcSendReceive;
UINT g_msgThreadMarshal;
UINT g_msgCheckThreadInputIdel;
#ifdef POINTER_MARSHAL
UINT g_msgPointerMarshal;
#endif
UINT g_msgStubCleanUp;
UINT g_msgShowFloating;
UINT g_msgLBUpdate;
UINT g_msgNuiMgrDirtyUpdate;
//
// g_csInDllMain.
//
// We should try not to use Thread Synchronizaion. However we got some
// race condition in stress testing so we need it.
// g_csInDllMain just protect the section that could be touched from
// DllMain so that we need to be very careful for the critical section.
// We can not call some Kernel API (LoadLibrary, CreateProcess and so on)
// there.
//
CCicCriticalSectionStatic g_csInDllMain;
CCicCriticalSectionStatic g_cs;
// for combase
CRITICAL_SECTION *GetServerCritSec(void)
{
return g_cs;
}
#ifdef DEBUG
// for tracking last owner of g_cs
const TCHAR *g_szMutexEnterFile = NULL;
int g_iMutexEnterLine = -1;
#endif // DEBUG
TfGuidAtom g_gaApp;
TfGuidAtom g_gaSystem;
BOOL g_fCTFMONProcess = FALSE;
BOOL g_fCUAS = FALSE;
TCHAR g_szCUASImeFile[16];
//
// application compatibility flag
//
DWORD g_dwAppCompatibility = 0;
/* 626761ad-78d2-44d2-be8b-752cf122acec */
const GUID GUID_APPLICATION = { 0x626761ad, 0x78d2, 0x44d2, {0xbe, 0x8b, 0x75, 0x2c, 0xf1, 0x22, 0xac, 0xec} };
/* 78cb5b0e-26ed-4fcc-854c-77e8f3d1aa80 */
const GUID GUID_SYSTEM = { 0x78cb5b0e, 0x26ed, 0x4fcc, {0x85, 0x4c, 0x77, 0xe8, 0xf3, 0xd1, 0xaa, 0x80} };
const TCHAR c_szCTFKey[] = TEXT("SOFTWARE\\Microsoft\\CTF\\");
const TCHAR c_szTIPKey[] = TEXT("TIP");
const TCHAR c_szCTFTIPKey[] = TEXT("SOFTWARE\\Microsoft\\CTF\\TIP\\");
const TCHAR c_szLangBarKey[] = TEXT("SOFTWARE\\Microsoft\\CTF\\LangBar\\");
const WCHAR c_szDescriptionW[] = L"Description";
const WCHAR c_szMUIDescriptionW[] = L"Display Description";
const WCHAR c_szEnableW[] = L"Enable";
const TCHAR c_szEnable[] = TEXT("Enable");
const TCHAR c_szDisabledOnTransitory[] = TEXT("DisabledOnTransitory");
const TCHAR c_szAsmKey[] = TEXT("SOFTWARE\\Microsoft\\CTF\\Assemblies");
const TCHAR c_szCompartKey[] = TEXT("SOFTWARE\\Microsoft\\CTF\\Compartment");
const TCHAR c_szGlobalCompartment[] = TEXT("GlobalCompartment");
const TCHAR c_szNonInit[] = TEXT("NonInit");
const TCHAR c_szDefault[] = TEXT("Default");
const TCHAR c_szProfile[] = TEXT("Profile");
const WCHAR c_szProfileW[] = L"Profile";
const TCHAR c_szDefaultAsmName[] = TEXT("Default Assembly");
const TCHAR c_szUpdateProfile[] = TEXT("UpdateProfile");
const TCHAR c_szAssembly[] = TEXT("Assemblies");
const TCHAR c_szLanguageProfileKey[] = TEXT("LanguageProfile\\");
const TCHAR c_szSubstitutehKL[] = TEXT("SubstituteLayout");
const TCHAR c_szKeyboardLayout[] = TEXT("KeyboardLayout");
const WCHAR c_szIconFileW[] = L"IconFile";
const TCHAR c_szIconIndex[] = TEXT("IconIndex");
const WCHAR c_szIconIndexW[] = L"IconIndex";
const TCHAR c_szShowStatus[] = TEXT("ShowStatus");
const TCHAR c_szLabel[] = TEXT("Label");
const TCHAR c_szTransparency[] = TEXT("Transparency");
const TCHAR c_szExtraIconsOnMinimized[] = TEXT("ExtraIconsOnMinimized");
const TCHAR c_szLocaleInfo[] = TEXT("SYSTEM\\CurrentControlSet\\Control\\Nls\\Locale");
const TCHAR c_szLocaleInfoNT4[] = TEXT("SYSTEM\\CurrentControlSet\\Control\\Nls\\Language");
const TCHAR c_szKeyboardLayoutKey[] = TEXT("SYSTEM\\CurrentControlSet\\Control\\Keyboard Layouts\\");
const TCHAR c_szKbdUSNameNT[] = TEXT("kbdus.dll");
const TCHAR c_szKbdUSName[] = TEXT("kbdus.kbd");
const TCHAR c_szLayoutFile[] = TEXT("layout file");
const TCHAR c_szIMEFile[] = TEXT("IME file");
const TCHAR c_szRunInputCPLCmdLine[] = TEXT("RunDll32.exe shell32.dll,Control_RunDLL %s");
const TCHAR c_szRunInputCPL[] = TEXT("input.cpl");
const TCHAR c_szRunInputCPLOnWin9x[] = TEXT("input98.cpl");
const TCHAR c_szRunInputCPLOnNT51[] = TEXT("input.dll");
const TCHAR c_szHHEXELANGBARCHM[] = TEXT("hh.exe langbar.chm");
const TCHAR c_szHHEXE[] = TEXT("hh.exe");
// marshal window class
const TCHAR c_szCicMarshalClass[] = "CicMarshalWndClass";
const TCHAR c_szCicMarshalWnd[] = "CicMarshalWnd";
const TCHAR c_szAppCompat[] = TEXT("SOFTWARE\\Microsoft\\CTF\\Compatibility\\");
const TCHAR c_szCompatibility[] = TEXT("Compatibility");
const TCHAR c_szCtfShared[] = TEXT("SOFTWARE\\Microsoft\\CTF\\SystemShared\\");
const TCHAR c_szCUAS[] = TEXT("CUAS");
const TCHAR c_szIMMKey[] = TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\IMM");
const TCHAR c_szCUASIMEFile[] = TEXT("IME File");
//+---------------------------------------------------------------------------
//
// CheckAnchorStores
//
//----------------------------------------------------------------------------
// if set TRUE, we don't ask for ITextStoreAnchor during context creation
BOOL g_fNoITextStoreAnchor = TRUE;
void CheckAnchorStores()
{
HKEY hKeyCTF;
DWORD cb;
DWORD dwEnable;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, c_szCTFKey, NULL, KEY_READ, &hKeyCTF) != ERROR_SUCCESS)
return;
cb = sizeof(DWORD);
if (RegQueryValueEx(hKeyCTF, TEXT("EnableAnchorContext"), NULL, NULL, (BYTE *)&dwEnable, &cb) == ERROR_SUCCESS &&
cb == sizeof(DWORD) &&
dwEnable == 1)
{
g_fNoITextStoreAnchor = FALSE;
}
RegCloseKey(hKeyCTF);
}