28#define APPHELP_VALID_RESULT 0x10000
29#define APPHELP_RESULT_NOTFOUND 0x20000
30#define APPHELP_RESULT_FOUND 0x40000
264 PVOID ApphelpAddress;
265 PVOID pApphelpCheckRunAppEx =
NULL, pSdbPackAppCompatData =
NULL;
277 pApphelpCheckRunAppEx =
NULL;
281 pSdbPackAppCompatData =
NULL;
313 ULONG QueryResultSize = 0;
324 if (!pApphelpCheckRunAppEx || !pSdbPackAppCompatData)
342 DPRINT1(
"SdbPackAppCompatData returned a failure!\n");
448 if (AppCompatData)
RtlFreeHeap(RtlGetProcessHeap(), 0, AppCompatData);
449 if (AppCompatSxsData)
RtlFreeHeap(RtlGetProcessHeap(), 0, AppCompatSxsData);
528 DPRINT(
"(0x%X)\n", ComPlusPackage);
530 if (ComPlusPackage & ~1)
532 DPRINT1(
"0x%lX\n", ComPlusPackage);
NTSYSAPI NTSTATUS NTAPI NtSetSystemInformation(IN INT SystemInformationClass, IN PVOID SystemInformation, IN ULONG SystemInformationLength)
BOOL WINAPI BaseInitAppcompatCache(VOID)
BOOL WINAPI BaseCheckAppcompatCache(_In_ PCWSTR ApplicationName, _In_ HANDLE FileHandle, _In_opt_ PCWSTR Environment, _Out_opt_ PULONG pdwReason)
static PVOID g_pSdbPackAppCompatData
VOID WINAPI SetTermsrvAppInstallMode(IN BOOL bInstallMode)
VOID BasepShimCacheRemoveEntry(_In_ PCWSTR ApplicationName)
BOOL WINAPI BaseInitAppcompatCacheSupport(VOID)
BOOL(WINAPI * tApphelpCheckRunAppEx)(HANDLE FileHandle, PVOID Unk1, PVOID Unk2, PWCHAR ApplicationName, PVOID Environment, USHORT ExeType, PULONG Reason, PVOID *SdbQueryAppCompatData, PULONG SdbQueryAppCompatDataSize, PVOID *SxsData, PULONG SxsDataSize, PULONG FusionFlags, PULONG64 SomeFlag1, PULONG SomeFlag2)
#define APPHELP_VALID_RESULT
BOOL WINAPI BaseCheckRunApp(IN HANDLE FileHandle, IN PWCHAR ApplicationName, IN PWCHAR Environment, IN USHORT ExeType, IN PULONG pReason, IN PVOID *SdbQueryAppCompatData, IN PULONG SdbQueryAppCompatDataSize, IN PVOID *SxsData, IN PULONG SxsDataSize, OUT PULONG FusionFlags)
BOOL BasepShimCacheSearch(_In_ PCWSTR ApplicationName, _In_ HANDLE FileHandle)
BOOL BasepShimCacheCheckBypass(_In_ PCWSTR ApplicationName, _In_ HANDLE FileHandle, _In_opt_ PCWSTR Environment, _In_ BOOL bUnknown, _Out_opt_ PULONG pdwReason)
static VOID BaseInitApphelp(VOID)
NTSTATUS WINAPI BasepCheckBadapp(IN HANDLE FileHandle, IN PWCHAR ApplicationName, IN PWCHAR Environment, IN USHORT ExeType, IN PVOID *SdbQueryAppCompatData, IN PULONG SdbQueryAppCompatDataSize, IN PVOID *SxsData, IN PULONG SxsDataSize, OUT PULONG FusionFlags)
BOOL WINAPI BaseDumpAppcompatCache(VOID)
BOOL BasepCheckCacheExcludeCustom(_In_ PCWSTR ApplicationName)
BOOL WINAPI SetComPlusPackageInstallStatus(IN ULONG ComPlusPackage)
BOOLEAN WINAPI IsShimInfrastructureDisabled(VOID)
VOID WINAPI BasepFreeAppCompatData(IN PVOID AppCompatData, IN PVOID AppCompatSxsData)
NTSTATUS WINAPI BaseCleanupAppcompatCache(VOID)
static PVOID g_pApphelpCheckRunAppEx
static BOOL g_ApphelpInitialized
NTSTATUS WINAPI BaseCleanupAppcompatCacheSupport(PVOID pUnknown)
PVOID WINAPI GetComPlusPackageInstallStatus(VOID)
VOID WINAPI BaseUpdateAppcompatCache(ULONG Unknown1, ULONG Unknown2, ULONG Unknown3)
BOOL(WINAPI * tSdbPackAppCompatData)(PVOID hsdb, PVOID pQueryResult, PVOID *ppData, DWORD *dwSize)
BOOL WINAPI TermsrvAppInstallMode(VOID)
#define APPHELP_RESULT_FOUND
BOOL WINAPI BaseFlushAppcompatCache(VOID)
BOOL BasepCheckCacheExcludeList(_In_ PCWSTR ApplicationName)
BOOL BasepShimCacheLookup(_In_ PCWSTR ApplicationName, _In_ HANDLE FileHandle)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD Unknown3
#define STATUS_NOT_IMPLEMENTED
#define NT_SUCCESS(StatCode)
#define INVALID_HANDLE_VALUE
UNICODE_STRING BaseWindowsDirectory
static void Lookup(RTF_Info *, char *)
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE FileHandle
@ ApphelpCacheServiceLookup
@ ApphelpCacheServiceRemove
@ ApphelpCacheServiceDump
@ ApphelpCacheServiceFlush
#define OBJ_CASE_INSENSITIVE
#define InterlockedCompareExchangePointer
NTSTATUS NTAPI DECLSPEC_HOTPATCH LdrLoadDll(_In_opt_ PWSTR SearchPath, _In_opt_ PULONG DllCharacteristics, _In_ PUNICODE_STRING DllName, _Out_ PVOID *BaseAddress)
NTSTATUS NTAPI LdrGetProcedureAddress(_In_ PVOID BaseAddress, _In_opt_ _When_(Ordinal==0, _Notnull_) PANSI_STRING Name, _In_opt_ _When_(Name==NULL, _In_range_(>, 0)) ULONG Ordinal, _Out_ PVOID *ProcedureAddress)
static IN LPSTR IN PVOID Unk2
unsigned __int64 * PULONG64
PVOID PVOID PWCHAR PVOID USHORT PULONG PVOID PULONG PVOID PULONG PULONG PULONG64 PULONG SomeFlag2
LPCWSTR LPCWSTR LPCWSTR DWORD PSDBQUERYRESULT_VISTA pQueryResult
PVOID PVOID PWCHAR PVOID USHORT ExeType
PVOID PVOID PWCHAR PVOID USHORT PULONG Reason
PVOID PVOID PWCHAR PVOID USHORT PULONG PVOID * SdbQueryAppCompatData
PVOID PVOID PWCHAR PVOID USHORT PULONG PVOID PULONG PVOID PULONG SxsDataSize
PVOID PVOID PWCHAR PVOID USHORT PULONG PVOID PULONG PVOID PULONG PULONG PULONG64 SomeFlag1
PVOID PVOID PWCHAR PVOID USHORT PULONG PVOID PULONG PVOID * SxsData
PSDBQUERYRESULT_VISTA PVOID * ppData
PVOID PVOID PWCHAR PVOID USHORT PULONG PVOID PULONG PVOID PULONG PULONG FusionFlags
PVOID PVOID PWCHAR PVOID Environment
PVOID PVOID PWCHAR PVOID USHORT PULONG PVOID PULONG SdbQueryAppCompatDataSize
PVOID PVOID PWCHAR ApplicationName
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static const char const char * DllPath
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
NTSYSAPI NTSTATUS NTAPI NtOpenKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
@ KeyValuePartialInformation
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI NTSTATUS NTAPI NtQueryValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, IN PVOID KeyValueInformation, IN ULONG Length, IN PULONG ResultLength)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
#define RTL_CONSTANT_OBJECT_ATTRIBUTES(n, a)
NTSTATUS NTAPI NtApphelpCacheControl(_In_ APPHELPCACHESERVICECLASS Service, _In_opt_ PAPPHELP_CACHE_SERVICE_LOOKUP ServiceData)
DWORD BaseSetLastNTError(IN NTSTATUS Status)
PVOID NTAPI RtlEncodeSystemPointer(IN PVOID Pointer)
PVOID NTAPI RtlDecodeSystemPointer(IN PVOID Pointer)
OBJECT_ATTRIBUTES AppCompatKeyAttributes
#define RTL_CONSTANT_STRING(s)
#define STATUS_ACCESS_DENIED
#define STATUS_INVALID_PARAMETER
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength