/****************************** Module Header ******************************\ * Module Name: femgrate.h * * Copyright (c) 1985 - 1999, Microsoft Corporation * * FEMGRATE, main header file * \***************************************************************************/ #ifndef FEMGRATE_H #define FEMGRATE_H #include #include #include #include #include #include #include #include #include #include #include #define NO_FUNCTION 0xFF #define DM_VERBOSE 2 #ifdef UNICODE #define A2I _wtoi #else #define A2I atoi #endif #define ARRAYSIZE(s) (sizeof(s) / (sizeof(s[0]))) #define LOCALE_JPN 0x411 #define LOCALE_KOR 0x412 #define LOCALE_CHT 0x404 #define LOCALE_CHS 0x804 enum FunctionType { FUNC_PatchInLogon, FUNC_PatchInSetup, FUNC_PatchFEUIFont, FUNC_PatchPreload, FUNC_PatchCHSAnsiEMB, FUNC_PatchTest, FUNC_NumofFunctions }; typedef struct _FUNC_DIR { char cFunc; int nID; } FUNC_DIR; typedef struct _STRING_TO_DATA { TCHAR String[50]; UINT Data; } STRING_TO_DATA, *PSTRING_TO_DATA; typedef struct tagTABLIST { UINT nResID; TCHAR szIMEName[MAX_PATH]; } TABLELIST,*LPTABLELIST; #ifdef __cplusplus extern "C" { #endif extern HINSTANCE ghInst; #define USER_SHELL_FOLDER TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders") #define c_szDot TEXT(".") #define c_szDotDot TEXT("..") #define c_szStarDotStar TEXT("*.*") // // utils.c // extern STRING_TO_DATA InfRegSpecTohKey[] ; //#define MYDBG //#define DEBUGLOG #ifdef MYDBG #define DebugMsg(_parameter) Print _parameter #define DBGTITLE TEXT("FEMGRATE :") void Print(UINT mask,LPCTSTR pszFormat,...); #else #define DebugMsg(_parameter) #endif ConcatenatePaths( LPTSTR Target, LPCTSTR Path, UINT TargetBufferSize ); LPTSTR CheckSlash (LPTSTR lpDir); void IntToString( DWORD i, LPTSTR sz); BOOL DoInstallationFromSection(HINF hInf,LPCTSTR lpszSectionName); BOOL IsInSetupUpgradeMode(); UINT StrToUInt(LPTSTR lpszNum); UINT GetInstallLocale(); BOOL RegReplaceIfExisting( HKEY hKey, LPCTSTR pszOldValName, LPCTSTR pszNewValName); BOOL ReplaceString( LPCTSTR lpszOldStr, LPCTSTR lpszReplaceStr, LPCTSTR lpszReplacedWithStr, LPTSTR lpszOutputStr); BOOL Delnode (LPTSTR lpDir); BOOL GetProgramsDirectory (BOOL bCommonGroup, LPTSTR lpDirectory); BOOL GetGenericUserFolderDirectory (LPCTSTR lpszFolder, LPTSTR lpDirectory); BOOL LookUpStringInTable( IN PSTRING_TO_DATA Table, IN LPCTSTR String, OUT PUINT Data ); BOOL INIFile_ChangeSectionName( LPCTSTR szIniFileName, LPCTSTR szIniOldSectionName, LPCTSTR szIniNewSectionName); BOOL INIFile_ChangeKeyName( LPCTSTR szIniFileName, LPCTSTR szIniOldSectionName, LPCTSTR szIniOldKeyName, LPCTSTR szIniNewKeyName); UINT CreateNestedDirectory( LPCTSTR lpDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes); BOOL GetApplicationFolderPath( LPTSTR lpszFolder, UINT nLen); BOOL GetNewPath( LPTSTR lpszNewPath, LPCTSTR lpszFileName, LPCTSTR lpszClass); BOOL MovePerUserIMEData( HKEY hCurrentKey, LPCTSTR szRegPath, LPCTSTR szRegVal, LPCTSTR szUserClass, LPCTSTR szIMEName, BOOL bCHT); BOOL CreateSecurityDirectory( LPCTSTR pszOldDir, LPCTSTR pszNewDir); BOOL IsDirExisting( LPTSTR Dir); BOOL IsFileExisting( LPTSTR File); BOOL RenameDirectory( LPTSTR OldDir, LPTSTR NewDir); BOOL RenameFile( LPTSTR OldFile, LPTSTR NewFile); BOOL RenameSectionFiles( HINF hInf, LPCTSTR SectionName, LPCTSTR SourceDirectory, LPCTSTR TargetDirectory); BOOL RenameSectionRegSZ( HINF hInf, LPCTSTR SectionName, HKEY hRootKey, LPCTSTR RegPath); /////////////////////////////////////////////// // // femgrate.c // /////////////////////////////////////////////// BOOL FixTimeZone(UINT nLocale); BOOL FixSchemeProblem(BOOL bJapan,HINF hInf); BOOL PatchPreloadKeyboard(BOOL bReplaceDefaultLCID); //if TRUE will replace 409 with default LCID void FixCurrentSchemeName(HINF hInf); BOOL RenameRegValueName(HINF hInf, BOOL PerUser); /////////////////////////////////////////////// // // jpn.c // /////////////////////////////////////////////// int WINAPI WinMainJPN(int nCmd,HINF hInf); /////////////////////////////////////////////// // // kor.c // /////////////////////////////////////////////// int WINAPI WinMainKOR(int nCmd,HINF hInf); /////////////////////////////////////////////// // // cht.c // /////////////////////////////////////////////// int WINAPI WinMainCHT(int nCmd,HINF hInf); /////////////////////////////////////////////// // // chs.c // /////////////////////////////////////////////// int WINAPI WinMainCHS(int nCmd,HINF hInf); /////////////////////////////////////////////// // // utils2.cpp // /////////////////////////////////////////////// HRESULT FixPathInLink(LPCTSTR pszShortcutFile, LPCTSTR lpszOldStr,LPCTSTR lpszNewStr); #ifdef __cplusplus } // extern "C" #endif #endif