mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[CTFMON][MSCTFIME][SDK] Renaming for Cicero (#6216)
Keep consistency with Cicero naming rule. - s/CModulePath/CicSystemModulePath/. - s/GetOSInfo/cicGetOSInfo/. - s/IsWow64/cicIsWow64/. - s/GetSystemModuleHandle/cicGetSystemModuleHandle/. - s/LoadSystemLibrary/cicLoadSystemLibrary/. - Move cicGetOSInfo and cicIsWow64 to <cicero/cicbase.h>. - Delete some Cicero headers. - Adapt ctfmon and msctfime to these changes. CORE-19360
This commit is contained in:
parent
814cb188c6
commit
7d6fc57ec9
9 changed files with 166 additions and 181 deletions
|
@ -138,7 +138,7 @@ CRegWatcher::UpdateSpTip()
|
|||
}
|
||||
|
||||
// Get %WINDIR%/IME/sptip.dll!TF_CreateLangProfileUtil function
|
||||
HINSTANCE hSPTIP = LoadSystemLibrary(L"IME\\sptip.dll", TRUE);
|
||||
HINSTANCE hSPTIP = cicLoadSystemLibrary(L"IME\\sptip.dll", TRUE);
|
||||
FN_TF_CreateLangProfileUtil fnTF_CreateLangProfileUtil =
|
||||
(FN_TF_CreateLangProfileUtil)::GetProcAddress(hSPTIP, "TF_CreateLangProfileUtil");
|
||||
if (fnTF_CreateLangProfileUtil)
|
||||
|
|
|
@ -9,10 +9,6 @@
|
|||
#include "CRegWatcher.h"
|
||||
#include "CLoaderWnd.h"
|
||||
|
||||
// ntdll!NtQueryInformationProcess
|
||||
typedef NTSTATUS (WINAPI *FN_NtQueryInformationProcess)(HANDLE, PROCESSINFOCLASS, PVOID, ULONG, PULONG);
|
||||
FN_NtQueryInformationProcess g_fnNtQueryInformationProcess = NULL;
|
||||
|
||||
// kernel32!SetProcessShutdownParameters
|
||||
typedef BOOL (WINAPI *FN_SetProcessShutdownParameters)(DWORD, DWORD);
|
||||
FN_SetProcessShutdownParameters g_fnSetProcessShutdownParameters = NULL;
|
||||
|
@ -29,31 +25,9 @@ HANDLE g_hCicMutex = NULL; // The Cicero mutex
|
|||
BOOL g_bOnWow64 = FALSE; // Is the app running on WoW64?
|
||||
BOOL g_fNoRunKey = FALSE; // Don't write registry key "Run"?
|
||||
BOOL g_fJustRunKey = FALSE; // Just write registry key "Run"?
|
||||
DWORD g_dwOsInfo = 0; // The OS version info. See GetOSInfo
|
||||
DWORD g_dwOsInfo = 0; // The OS version info. See cicGetOSInfo
|
||||
CLoaderWnd* g_pLoaderWnd = NULL; // TIP Bar loader window
|
||||
|
||||
// Is the current process on WoW64?
|
||||
static BOOL
|
||||
IsWow64(VOID)
|
||||
{
|
||||
HMODULE hNTDLL = GetSystemModuleHandle(L"ntdll.dll", FALSE);
|
||||
if (!hNTDLL)
|
||||
return FALSE;
|
||||
|
||||
g_fnNtQueryInformationProcess =
|
||||
(FN_NtQueryInformationProcess)::GetProcAddress(hNTDLL, "NtQueryInformationProcess");
|
||||
if (!g_fnNtQueryInformationProcess)
|
||||
return FALSE;
|
||||
|
||||
ULONG_PTR Value = 0;
|
||||
NTSTATUS Status = g_fnNtQueryInformationProcess(::GetCurrentProcess(), ProcessWow64Information,
|
||||
&Value, sizeof(Value), NULL);
|
||||
if (!NT_SUCCESS(Status))
|
||||
return FALSE;
|
||||
|
||||
return !!Value;
|
||||
}
|
||||
|
||||
static VOID
|
||||
ParseCommandLine(
|
||||
_In_ LPCWSTR pszCmdLine)
|
||||
|
@ -107,7 +81,7 @@ WriteRegRun(VOID)
|
|||
return;
|
||||
|
||||
// Write the module path
|
||||
CModulePath ModPath;
|
||||
CicSystemModulePath ModPath;
|
||||
if (ModPath.Init(L"ctfmon.exe", FALSE))
|
||||
{
|
||||
DWORD cbData = (ModPath.m_cchPath + 1) * sizeof(WCHAR);
|
||||
|
@ -172,7 +146,7 @@ CheckX64System(
|
|||
}
|
||||
|
||||
// Get GetSystemWow64DirectoryW function
|
||||
g_hKernel32 = GetSystemModuleHandle(L"kernel32.dll", FALSE);
|
||||
g_hKernel32 = cicGetSystemModuleHandle(L"kernel32.dll", FALSE);
|
||||
g_fnGetSystemWow64DirectoryW =
|
||||
(FN_GetSystemWow64DirectoryW)::GetProcAddress(g_hKernel32, "GetSystemWow64DirectoryW");
|
||||
if (!g_fnGetSystemWow64DirectoryW)
|
||||
|
@ -204,8 +178,8 @@ InitApp(
|
|||
g_hInst = hInstance; // Save the instance handle
|
||||
|
||||
g_uACP = ::GetACP(); // Save the active codepage
|
||||
g_bOnWow64 = IsWow64(); // Is the current process on WoW64?
|
||||
g_dwOsInfo = GetOSInfo(); // Get OS info
|
||||
g_bOnWow64 = cicIsWow64(); // Is the current process on WoW64?
|
||||
g_dwOsInfo = cicGetOSInfo(); // Get OS info
|
||||
|
||||
// Create a mutex for Cicero
|
||||
g_hCicMutex = TF_CreateCicLoadMutex(&g_fWinLogon);
|
||||
|
@ -218,7 +192,7 @@ InitApp(
|
|||
// Call SetProcessShutdownParameters if possible
|
||||
if (g_dwOsInfo & OSINFO_NT)
|
||||
{
|
||||
g_hKernel32 = GetSystemModuleHandle(L"kernel32.dll", FALSE);
|
||||
g_hKernel32 = cicGetSystemModuleHandle(L"kernel32.dll", FALSE);
|
||||
g_fnSetProcessShutdownParameters =
|
||||
(FN_SetProcessShutdownParameters)
|
||||
::GetProcAddress(g_hKernel32, "SetProcessShutdownParameters");
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
|
||||
#define WIN32_NO_STATUS
|
||||
#include <windows.h>
|
||||
#include <ndk/pstypes.h>
|
||||
#include <shellapi.h>
|
||||
#include <shlwapi.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -17,10 +16,7 @@
|
|||
#include <msctf.h>
|
||||
#include <ctfutb.h>
|
||||
#include <ctffunc.h>
|
||||
|
||||
#include <cicero/cicbase.h>
|
||||
#include <cicero/osinfo.h>
|
||||
#include <cicero/CModulePath.h>
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ DllShutDownInProgress(VOID)
|
|||
if (s_fnDllShutDownInProgress)
|
||||
return s_fnDllShutDownInProgress();
|
||||
|
||||
hNTDLL = GetSystemModuleHandle(L"ntdll.dll", FALSE);
|
||||
hNTDLL = cicGetSystemModuleHandle(L"ntdll.dll", FALSE);
|
||||
s_fnDllShutDownInProgress =
|
||||
(FN_DllShutDownInProgress)GetProcAddress(hNTDLL, "RtlDllShutdownInProgress");
|
||||
if (!s_fnDllShutDownInProgress)
|
||||
|
@ -2841,7 +2841,7 @@ BOOL ProcessAttach(HINSTANCE hinstDLL)
|
|||
if (!TLS::Initialize())
|
||||
return FALSE;
|
||||
|
||||
g_dwOSInfo = GetOSInfo();
|
||||
g_dwOSInfo = cicGetOSInfo();
|
||||
|
||||
// FIXME
|
||||
|
||||
|
|
|
@ -24,9 +24,7 @@
|
|||
|
||||
#include <cicero/cicbase.h>
|
||||
#include <cicero/cicarray.h>
|
||||
#include <cicero/osinfo.h>
|
||||
#include <cicero/CModulePath.h>
|
||||
#include <cicero/imclock.h>
|
||||
#include <cicero/cicimc.h>
|
||||
|
||||
class CicInputContext;
|
||||
|
||||
|
|
|
@ -1,90 +0,0 @@
|
|||
/*
|
||||
* PROJECT: ReactOS Cicero
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Manipulate module path
|
||||
* COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
struct CModulePath
|
||||
{
|
||||
WCHAR m_szPath[MAX_PATH];
|
||||
SIZE_T m_cchPath;
|
||||
|
||||
CModulePath()
|
||||
{
|
||||
m_szPath[0] = UNICODE_NULL;
|
||||
m_cchPath = 0;
|
||||
}
|
||||
|
||||
BOOL Init(_In_ LPCWSTR pszFileName, _In_ BOOL bSysWinDir);
|
||||
};
|
||||
|
||||
// Get an instance handle that is already loaded
|
||||
static inline HINSTANCE
|
||||
GetSystemModuleHandle(
|
||||
_In_ LPCWSTR pszFileName,
|
||||
_In_ BOOL bSysWinDir)
|
||||
{
|
||||
CModulePath ModPath;
|
||||
if (!ModPath.Init(pszFileName, bSysWinDir))
|
||||
return NULL;
|
||||
return GetModuleHandleW(ModPath.m_szPath);
|
||||
}
|
||||
|
||||
// Load a system library
|
||||
static inline HINSTANCE
|
||||
LoadSystemLibrary(
|
||||
_In_ LPCWSTR pszFileName,
|
||||
_In_ BOOL bSysWinDir)
|
||||
{
|
||||
CModulePath ModPath;
|
||||
if (!ModPath.Init(pszFileName, bSysWinDir))
|
||||
return NULL;
|
||||
return ::LoadLibraryW(ModPath.m_szPath);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
inline BOOL
|
||||
CModulePath::Init(
|
||||
_In_ LPCWSTR pszFileName,
|
||||
_In_ BOOL bSysWinDir)
|
||||
{
|
||||
SIZE_T cchPath;
|
||||
if (bSysWinDir)
|
||||
{
|
||||
// Usually C:\Windows or C:\ReactOS
|
||||
cchPath = ::GetSystemWindowsDirectory(m_szPath, _countof(m_szPath));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Usually C:\Windows\system32 or C:\ReactOS\system32
|
||||
cchPath = ::GetSystemDirectoryW(m_szPath, _countof(m_szPath));
|
||||
}
|
||||
|
||||
m_szPath[_countof(m_szPath) - 1] = UNICODE_NULL; // Avoid buffer overrun
|
||||
|
||||
if ((cchPath == 0) || (cchPath > _countof(m_szPath) - 2))
|
||||
goto Failure;
|
||||
|
||||
// Add backslash if necessary
|
||||
if ((cchPath > 0) && (m_szPath[cchPath - 1] != L'\\'))
|
||||
{
|
||||
m_szPath[cchPath + 0] = L'\\';
|
||||
m_szPath[cchPath + 1] = UNICODE_NULL;
|
||||
}
|
||||
|
||||
// Append pszFileName
|
||||
if (FAILED(StringCchCatW(m_szPath, _countof(m_szPath), pszFileName)))
|
||||
goto Failure;
|
||||
|
||||
m_cchPath = wcslen(m_szPath);
|
||||
return TRUE;
|
||||
|
||||
Failure:
|
||||
m_szPath[0] = UNICODE_NULL;
|
||||
m_cchPath = 0;
|
||||
return FALSE;
|
||||
}
|
|
@ -7,6 +7,10 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#ifndef __cplusplus
|
||||
#error Cicero needs C++.
|
||||
#endif
|
||||
|
||||
static inline LPVOID cicMemAlloc(SIZE_T size)
|
||||
{
|
||||
return LocalAlloc(0, size);
|
||||
|
@ -30,7 +34,6 @@ static inline void cicMemFree(LPVOID ptr)
|
|||
LocalFree(ptr);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
inline void* __cdecl operator new(size_t size) noexcept
|
||||
{
|
||||
return cicMemAllocClear(size);
|
||||
|
@ -45,7 +48,6 @@ inline void __cdecl operator delete(void* ptr, size_t size) noexcept
|
|||
{
|
||||
cicMemFree(ptr);
|
||||
}
|
||||
#endif // __cplusplus
|
||||
|
||||
// FIXME: Use msutb.dll and header
|
||||
static inline void ClosePopupTipbar(void)
|
||||
|
@ -56,3 +58,155 @@ static inline void ClosePopupTipbar(void)
|
|||
static inline void GetPopupTipbar(HWND hwnd, BOOL fWinLogon)
|
||||
{
|
||||
}
|
||||
|
||||
/* The flags of cicGetOSInfo() */
|
||||
#define OSINFO_NT 0x01
|
||||
#define OSINFO_CJK 0x10
|
||||
#define OSINFO_IMM 0x20
|
||||
#define OSINFO_DBCS 0x40
|
||||
|
||||
static inline DWORD
|
||||
cicGetOSInfo(VOID)
|
||||
{
|
||||
DWORD dwOsInfo = 0;
|
||||
|
||||
/* Check OS version info */
|
||||
OSVERSIONINFOW VerInfo = { sizeof(VerInfo) };
|
||||
GetVersionExW(&VerInfo);
|
||||
if (VerInfo.dwPlatformId == DLLVER_PLATFORM_NT)
|
||||
dwOsInfo |= OSINFO_NT;
|
||||
|
||||
/* Check codepage */
|
||||
switch (GetACP())
|
||||
{
|
||||
case 932: /* Japanese (Japan) */
|
||||
case 936: /* Chinese (PRC, Singapore) */
|
||||
case 949: /* Korean (Korea) */
|
||||
case 950: /* Chinese (Taiwan, Hong Kong) */
|
||||
dwOsInfo |= OSINFO_CJK;
|
||||
break;
|
||||
}
|
||||
|
||||
if (GetSystemMetrics(SM_IMMENABLED))
|
||||
dwOsInfo |= OSINFO_IMM;
|
||||
|
||||
if (GetSystemMetrics(SM_DBCSENABLED))
|
||||
dwOsInfo |= OSINFO_DBCS;
|
||||
|
||||
/* I'm not interested in other flags */
|
||||
|
||||
return dwOsInfo;
|
||||
}
|
||||
|
||||
struct CicSystemModulePath
|
||||
{
|
||||
WCHAR m_szPath[MAX_PATH];
|
||||
SIZE_T m_cchPath;
|
||||
|
||||
CicSystemModulePath()
|
||||
{
|
||||
m_szPath[0] = UNICODE_NULL;
|
||||
m_cchPath = 0;
|
||||
}
|
||||
|
||||
BOOL Init(_In_ LPCWSTR pszFileName, _In_ BOOL bSysWinDir);
|
||||
};
|
||||
|
||||
// Get an instance handle that is already loaded
|
||||
static inline HINSTANCE
|
||||
cicGetSystemModuleHandle(
|
||||
_In_ LPCWSTR pszFileName,
|
||||
_In_ BOOL bSysWinDir)
|
||||
{
|
||||
CicSystemModulePath ModPath;
|
||||
if (!ModPath.Init(pszFileName, bSysWinDir))
|
||||
return NULL;
|
||||
return GetModuleHandleW(ModPath.m_szPath);
|
||||
}
|
||||
|
||||
// Load a system library
|
||||
static inline HINSTANCE
|
||||
cicLoadSystemLibrary(
|
||||
_In_ LPCWSTR pszFileName,
|
||||
_In_ BOOL bSysWinDir)
|
||||
{
|
||||
CicSystemModulePath ModPath;
|
||||
if (!ModPath.Init(pszFileName, bSysWinDir))
|
||||
return NULL;
|
||||
return ::LoadLibraryW(ModPath.m_szPath);
|
||||
}
|
||||
|
||||
#include <ndk/pstypes.h> /* for PROCESSINFOCLASS */
|
||||
|
||||
/* ntdll!NtQueryInformationProcess */
|
||||
typedef NTSTATUS (WINAPI *FN_NtQueryInformationProcess)(HANDLE, PROCESSINFOCLASS, PVOID, ULONG, PULONG);
|
||||
|
||||
/* Is the current process on WoW64? */
|
||||
static inline BOOL cicIsWow64(VOID)
|
||||
{
|
||||
static FN_NtQueryInformationProcess s_fnNtQueryInformationProcess = NULL;
|
||||
ULONG_PTR Value;
|
||||
NTSTATUS Status;
|
||||
|
||||
if (!s_fnNtQueryInformationProcess)
|
||||
{
|
||||
HMODULE hNTDLL = cicGetSystemModuleHandle(L"ntdll.dll", FALSE);
|
||||
if (!hNTDLL)
|
||||
return FALSE;
|
||||
|
||||
s_fnNtQueryInformationProcess =
|
||||
(FN_NtQueryInformationProcess)GetProcAddress(hNTDLL, "NtQueryInformationProcess");
|
||||
if (!s_fnNtQueryInformationProcess)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Value = 0;
|
||||
Status = s_fnNtQueryInformationProcess(GetCurrentProcess(), ProcessWow64Information,
|
||||
&Value, sizeof(Value), NULL);
|
||||
if (!NT_SUCCESS(Status))
|
||||
return FALSE;
|
||||
|
||||
return !!Value;
|
||||
}
|
||||
|
||||
inline BOOL
|
||||
CicSystemModulePath::Init(
|
||||
_In_ LPCWSTR pszFileName,
|
||||
_In_ BOOL bSysWinDir)
|
||||
{
|
||||
SIZE_T cchPath;
|
||||
if (bSysWinDir)
|
||||
{
|
||||
// Usually C:\Windows or C:\ReactOS
|
||||
cchPath = ::GetSystemWindowsDirectory(m_szPath, _countof(m_szPath));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Usually C:\Windows\system32 or C:\ReactOS\system32
|
||||
cchPath = ::GetSystemDirectoryW(m_szPath, _countof(m_szPath));
|
||||
}
|
||||
|
||||
m_szPath[_countof(m_szPath) - 1] = UNICODE_NULL; // Avoid buffer overrun
|
||||
|
||||
if ((cchPath == 0) || (cchPath > _countof(m_szPath) - 2))
|
||||
goto Failure;
|
||||
|
||||
// Add backslash if necessary
|
||||
if ((cchPath > 0) && (m_szPath[cchPath - 1] != L'\\'))
|
||||
{
|
||||
m_szPath[cchPath + 0] = L'\\';
|
||||
m_szPath[cchPath + 1] = UNICODE_NULL;
|
||||
}
|
||||
|
||||
// Append pszFileName
|
||||
if (FAILED(StringCchCatW(m_szPath, _countof(m_szPath), pszFileName)))
|
||||
goto Failure;
|
||||
|
||||
m_cchPath = wcslen(m_szPath);
|
||||
return TRUE;
|
||||
|
||||
Failure:
|
||||
m_szPath[0] = UNICODE_NULL;
|
||||
m_cchPath = 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
/*
|
||||
* PROJECT: ReactOS Cicero
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Getting OS information
|
||||
* COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* The flags of GetOSInfo() */
|
||||
#define OSINFO_NT 0x01
|
||||
#define OSINFO_CJK 0x10
|
||||
#define OSINFO_IMM 0x20
|
||||
#define OSINFO_DBCS 0x40
|
||||
|
||||
static inline DWORD
|
||||
GetOSInfo(VOID)
|
||||
{
|
||||
DWORD dwOsInfo = 0;
|
||||
|
||||
/* Check OS version info */
|
||||
OSVERSIONINFOW VerInfo = { sizeof(VerInfo) };
|
||||
GetVersionExW(&VerInfo);
|
||||
if (VerInfo.dwPlatformId == DLLVER_PLATFORM_NT)
|
||||
dwOsInfo |= OSINFO_NT;
|
||||
|
||||
/* Check codepage */
|
||||
switch (GetACP())
|
||||
{
|
||||
case 932: /* Japanese (Japan) */
|
||||
case 936: /* Chinese (PRC, Singapore) */
|
||||
case 949: /* Korean (Korea) */
|
||||
case 950: /* Chinese (Taiwan, Hong Kong) */
|
||||
dwOsInfo |= OSINFO_CJK;
|
||||
break;
|
||||
}
|
||||
|
||||
if (GetSystemMetrics(SM_IMMENABLED))
|
||||
dwOsInfo |= OSINFO_IMM;
|
||||
|
||||
if (GetSystemMetrics(SM_DBCSENABLED))
|
||||
dwOsInfo |= OSINFO_DBCS;
|
||||
|
||||
/* I'm not interested in other flags */
|
||||
|
||||
return dwOsInfo;
|
||||
}
|
Loading…
Reference in a new issue