mirror of
https://github.com/reactos/reactos.git
synced 2025-05-25 20:18:22 +00:00
[IMM32][KERNEL32][SDK] Half-implement BaseCheckAppcompatCache (#6069)
- And add it to <compat_undoc.h>. - Use <compat_undoc.h> in IMM32. - Modify kernel32.spec. CORE-19268
This commit is contained in:
parent
d8ba5920a2
commit
6e449d47e8
4 changed files with 122 additions and 18 deletions
|
@ -8,6 +8,7 @@
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
#include <msctf.h> /* for ITfLangBarMgr */
|
#include <msctf.h> /* for ITfLangBarMgr */
|
||||||
#include <objidl.h> /* for IInitializeSpy */
|
#include <objidl.h> /* for IInitializeSpy */
|
||||||
|
#include <compat_undoc.h> /* for BaseCheckAppcompatCache */
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(imm);
|
WINE_DEFAULT_DEBUG_CHANNEL(imm);
|
||||||
|
|
||||||
|
@ -228,13 +229,6 @@ HINSTANCE g_hCtfIme = NULL;
|
||||||
/* The type of ApphelpCheckIME function in apphelp.dll */
|
/* The type of ApphelpCheckIME function in apphelp.dll */
|
||||||
typedef BOOL (WINAPI *FN_ApphelpCheckIME)(_In_z_ LPCWSTR AppName);
|
typedef BOOL (WINAPI *FN_ApphelpCheckIME)(_In_z_ LPCWSTR AppName);
|
||||||
|
|
||||||
/* FIXME: This is kernel32 function. We have to declare this in some header. */
|
|
||||||
BOOL WINAPI
|
|
||||||
BaseCheckAppcompatCache(_In_z_ LPCWSTR ApplicationName,
|
|
||||||
_In_ HANDLE FileHandle,
|
|
||||||
_In_opt_z_ LPCWSTR Environment,
|
|
||||||
_Out_ PULONG pdwReason);
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* This function checks whether the app's IME is disabled by application
|
* This function checks whether the app's IME is disabled by application
|
||||||
* compatibility patcher.
|
* compatibility patcher.
|
||||||
|
|
|
@ -139,20 +139,122 @@ IsShimInfrastructureDisabled(VOID)
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
BasepShimCacheCheckBypass(
|
||||||
BaseCheckAppcompatCache(IN PWCHAR ApplicationName,
|
_In_ PCWSTR ApplicationName,
|
||||||
IN HANDLE FileHandle,
|
_In_ HANDLE FileHandle,
|
||||||
IN PWCHAR Environment,
|
_In_opt_ PCWSTR Environment,
|
||||||
OUT PULONG Reason)
|
_In_ BOOL bUnknown,
|
||||||
|
_Out_opt_ PULONG pdwReason)
|
||||||
{
|
{
|
||||||
DPRINT("BaseCheckAppcompatCache is UNIMPLEMENTED\n");
|
DPRINT("fixme:(%S, %p, %S, %d, %p)\n", ApplicationName, FileHandle, Environment, bUnknown,
|
||||||
|
pdwReason);
|
||||||
if (Reason) *Reason = 0;
|
|
||||||
|
|
||||||
// We don't know this app.
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
BasepShimCacheSearch(
|
||||||
|
_In_ PCWSTR ApplicationName,
|
||||||
|
_In_ HANDLE FileHandle)
|
||||||
|
{
|
||||||
|
APPHELP_CACHE_SERVICE_LOOKUP Lookup;
|
||||||
|
RtlInitUnicodeString(&Lookup.ImageName, ApplicationName);
|
||||||
|
Lookup.ImageHandle = FileHandle;
|
||||||
|
return NT_SUCCESS(NtApphelpCacheControl(ApphelpCacheServiceLookup, &Lookup));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
BasepCheckCacheExcludeList(
|
||||||
|
_In_ PCWSTR ApplicationName)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
BasepCheckCacheExcludeCustom(
|
||||||
|
_In_ PCWSTR ApplicationName)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
BasepShimCacheRemoveEntry(
|
||||||
|
_In_ PCWSTR ApplicationName)
|
||||||
|
{
|
||||||
|
APPHELP_CACHE_SERVICE_LOOKUP Lookup;
|
||||||
|
RtlInitUnicodeString(&Lookup.ImageName, ApplicationName);
|
||||||
|
Lookup.ImageHandle = INVALID_HANDLE_VALUE;
|
||||||
|
NtApphelpCacheControl(ApphelpCacheServiceRemove, &Lookup);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
BasepShimCacheLookup(
|
||||||
|
_In_ PCWSTR ApplicationName,
|
||||||
|
_In_ HANDLE FileHandle)
|
||||||
|
{
|
||||||
|
DPRINT("fixme:(%S, %p)\n", ApplicationName, FileHandle);
|
||||||
|
|
||||||
|
if (!BasepShimCacheSearch(ApplicationName, FileHandle))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!BasepCheckCacheExcludeList(ApplicationName) ||
|
||||||
|
!BasepCheckCacheExcludeCustom(ApplicationName))
|
||||||
|
{
|
||||||
|
BasepShimCacheRemoveEntry(ApplicationName);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
BaseCheckAppcompatCache(
|
||||||
|
_In_ PCWSTR ApplicationName,
|
||||||
|
_In_ HANDLE FileHandle,
|
||||||
|
_In_opt_ PCWSTR Environment,
|
||||||
|
_Out_opt_ PULONG pdwReason)
|
||||||
|
{
|
||||||
|
BOOL ret = FALSE;
|
||||||
|
ULONG dwReason;
|
||||||
|
|
||||||
|
DPRINT("(%S, %p, %S, %p)\n", ApplicationName, FileHandle, Environment, pdwReason);
|
||||||
|
|
||||||
|
dwReason = 0;
|
||||||
|
if (BasepShimCacheCheckBypass(ApplicationName, FileHandle, Environment, TRUE, &dwReason))
|
||||||
|
{
|
||||||
|
dwReason |= 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ret = BasepShimCacheLookup(ApplicationName, FileHandle);
|
||||||
|
if (!ret)
|
||||||
|
dwReason |= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pdwReason)
|
||||||
|
*pdwReason = dwReason;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
VOID
|
VOID
|
||||||
BaseInitApphelp(VOID)
|
BaseInitApphelp(VOID)
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
@ stdcall BackupRead(ptr ptr long ptr long long ptr)
|
@ stdcall BackupRead(ptr ptr long ptr long long ptr)
|
||||||
@ stdcall BackupSeek(ptr long long ptr ptr ptr)
|
@ stdcall BackupSeek(ptr long long ptr ptr ptr)
|
||||||
@ stdcall BackupWrite(ptr ptr long ptr long long ptr)
|
@ stdcall BackupWrite(ptr ptr long ptr long long ptr)
|
||||||
@ stdcall BaseCheckAppcompatCache(long long long ptr)
|
@ stdcall BaseCheckAppcompatCache(wstr ptr wstr ptr)
|
||||||
@ stdcall BaseCheckRunApp(long ptr long long long long long long long long)
|
@ stdcall BaseCheckRunApp(long ptr long long long long long long long long)
|
||||||
@ stdcall BaseCleanupAppcompatCacheSupport(ptr)
|
@ stdcall BaseCleanupAppcompatCacheSupport(ptr)
|
||||||
@ stdcall BaseDumpAppcompatCache()
|
@ stdcall BaseDumpAppcompatCache()
|
||||||
|
|
|
@ -46,4 +46,12 @@ UINT RosGetProcessEffectiveVersion(VOID)
|
||||||
return (peb->OSMajorVersion << 8) | (peb->OSMinorVersion);
|
return (peb->OSMajorVersion << 8) | (peb->OSMinorVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL
|
||||||
|
WINAPI
|
||||||
|
BaseCheckAppcompatCache(
|
||||||
|
_In_ PCWSTR ApplicationName,
|
||||||
|
_In_ HANDLE FileHandle,
|
||||||
|
_In_opt_ PCWSTR Environment,
|
||||||
|
_Out_opt_ PULONG pdwReason);
|
||||||
|
|
||||||
#endif // COMPAT_UNDOC_H
|
#endif // COMPAT_UNDOC_H
|
||||||
|
|
Loading…
Reference in a new issue