10 #define WIN32_NO_STATUS 27 #define DPFLTR_APPCOMPAT_ID 123 29 #define MAX_GUID_STRING_LEN sizeof("{12345678-1234-1234-0123-456789abcdef}") 32 #define NT_SUCCESS(StatCode) ((NTSTATUS)(StatCode) >= 0) 46 RtlInitEmptyUnicodeString(&DebugValue,
Buffer,
sizeof(
Buffer));
87 SHIM_WARN(
"stub: ObjectCLSID='%S', bShimIfNecessary=%d, pullFlags=%p)\n",
GuidString, bShimIfNecessary, pullFlags);
111 const char* LevelStr;
145 #if defined(APPCOMPAT_USE_DBGPRINTEX) && APPCOMPAT_USE_DBGPRINTEX 154 #define APPHELP_DONTWRITE_REASON 2 155 #define APPHELP_CLEARBITS 0x100 156 #define APPHELP_IGNORE_ENVIRONMENT 0x400 158 #define APPHELP_VALID_RESULT 0x10000 159 #define APPHELP_RESULT_NOTFOUND 0x20000 160 #define APPHELP_RESULT_FOUND 0x40000 228 DWORD MatchingExeFlags = 0;
285 SHIM_ERR(
"Unable to retrieve DB info\n");
292 SHIM_ERR(
"Unable to Convert GUID to string\n");
319 SHIM_ERR(
"Unable to write %wZ\n", &DatabasePathKey);
336 &ulTimeStamp.
QuadPart,
sizeof(ulTimeStamp));
338 SHIM_ERR(
"Unable to write %wZ\n", &DatabaseInstallTimeStampKey);
346 SHIM_ERR(
"Unable to write %wZ\n", &DatabaseTypeKey);
354 SHIM_ERR(
"Unable to write %wZ\n", &DatabaseDescriptionKey);
417 SHIM_ERR(
"Unable to Convert GUID to string\n");
421 RtlInitEmptyUnicodeString(&
KeyName, KeyBuffer,
sizeof(KeyBuffer));
ACCESS_MASK Wow64QueryFlag(void)
PVOID PVOID PWCHAR PVOID Environment
#define APPHELP_DONTWRITE_REASON
VOID WINAPI GetSystemTimeAsFileTime(OUT PFILETIME lpFileTime)
PVOID PVOID PWCHAR PVOID USHORT PULONG PVOID PULONG PVOID PULONG PULONG FusionFlags
#define SDBGMEF_IGNORE_ENVIRONMENT
#define RTL_INIT_OBJECT_ATTRIBUTES(n, a)
_In_ ULONG _In_ ULONG _In_ ULONG Length
NTSTATUS NTAPI NtCreateKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG TitleIndex, IN PUNICODE_STRING Class OPTIONAL, IN ULONG CreateOptions, OUT PULONG Disposition OPTIONAL)
BOOL WINAPI BaseFlushAppcompatCache(VOID)
void SdbpHeapDeinit(void)
enum _SHIM_LOG_LEVEL SHIM_LOG_LEVEL
#define OBJ_CASE_INSENSITIVE
static IN LPSTR IN PVOID Unk2
STRSAFEAPI StringCchVPrintfExA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCSTR pszFormat, va_list argList)
IN BOOLEAN OUT PSTR Buffer
#define INVALID_HANDLE_VALUE
#define DPFLTR_INFO_LEVEL
HSDB WINAPI SdbInitDatabase(DWORD, LPCWSTR)
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
NTSYSAPI ULONG __cdecl DbgPrintEx(_In_ ULONG ComponentId, _In_ ULONG Level, _In_z_ _Printf_format_string_ PCSTR Format,...)
#define DLL_PROCESS_ATTACH
BOOL WINAPI SdbGetMatchingExe(HSDB hsdb, LPCWSTR path, LPCWSTR module_name, LPCWSTR env, DWORD flags, PSDBQUERYRESULT result)
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
#define APPHELP_CLEARBITS
STRSAFEAPI StringCchPrintfExA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCSTR pszFormat,...)
VOID WINAPI SdbFreeDatabaseInformation(PDB_INFORMATION information)
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
#define DPFLTR_WARNING_LEVEL
#define SDB_DATABASE_MAIN_SHIM
DWORD const PULONGLONG pTimeStamp
PVOID PVOID PWCHAR PVOID USHORT PULONG PVOID PULONG PVOID PULONG PULONG PULONG64 SomeFlag1
BOOL WINAPI ApphelpCheckShellObject(REFCLSID ObjectCLSID, BOOL bShimIfNecessary, ULONGLONG *pullFlags)
BOOL WINAPI ShimFlushCache(HWND hwnd, HINSTANCE hInstance, LPCSTR lpszCmdLine, int nCmdShow)
BOOL WINAPI BaseDumpAppcompatCache(VOID)
BOOL WINAPI SdbGUIDToString(CONST GUID *Guid, PWSTR GuidString, SIZE_T Length)
NTSYSAPI NTSTATUS NTAPI RtlQueryEnvironmentVariable_U(_In_opt_ PWSTR Environment, _In_ PCUNICODE_STRING Name, _Out_ PUNICODE_STRING Value)
BOOL WINAPIV ShimDbgPrint(SHIM_LOG_LEVEL Level, PCSTR FunctionName, PCSTR Format,...)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
#define DLL_PROCESS_DETACH
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
#define DB_INFO_FLAGS_VALID_GUID
NTSTATUS RtlAppendUnicodeToString(IN PUNICODE_STRING Str1, IN PWSTR Str2)
#define NT_SUCCESS(StatCode)
#define MAX_GUID_STRING_LEN
BOOL WINAPI ShimDumpCache(HWND hwnd, HINSTANCE hInstance, LPCSTR lpszCmdLine, int nCmdShow)
#define APPHELP_RESULT_NOTFOUND
BOOL WINAPI SdbRegisterDatabaseEx(_In_ LPCWSTR pszDatabasePath, _In_ DWORD dwDatabaseType, _In_opt_ const PULONGLONG pTimeStamp)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
void WINAPI SdbCloseDatabase(PDB)
static WCHAR reason[MAX_STRING_RESOURCE_LEN]
BOOL WINAPI ApphelpCheckInstallShieldPackage(void *ptr, LPCWSTR path)
#define APPHELP_IGNORE_ENVIRONMENT
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
void WINAPI SdbReleaseDatabase(HSDB)
BOOL WINAPI ApphelpCheckRunAppEx(_In_ HANDLE FileHandle, _In_opt_ PVOID Unk1, _In_opt_ PVOID Unk2, _In_opt_z_ PWCHAR ApplicationName, _In_opt_ PVOID Environment, _In_opt_ USHORT ExeType, _Inout_opt_ PULONG Reason, _Out_opt_ PVOID *SdbQueryAppCompatData, _Out_opt_ PULONG SdbQueryAppCompatDataSize, _Out_opt_ PVOID *SxsData, _Out_opt_ PULONG SxsDataSize, _Out_opt_ PULONG FusionFlags, _Out_opt_ PULONG64 SomeFlag1, _Out_opt_ PULONG SomeFlag2)
BOOL WINAPI SdbGetDatabaseInformation(PDB pdb, PDB_INFORMATION information)
BOOL WINAPI SdbRegisterDatabase(_In_ LPCWSTR pszDatabasePath, _In_ DWORD dwDatabaseType)
NTSTATUS NTAPI NtDeleteKey(IN HANDLE KeyHandle)
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE FileHandle
void ApphelppInitDebugLevel(void)
PVOID PVOID PWCHAR ApplicationName
PVOID PVOID PWCHAR PVOID USHORT ExeType
const UNICODE_STRING InstalledSDBKeyName
#define DPFLTR_ERROR_LEVEL
PVOID PVOID PWCHAR PVOID USHORT PULONG PVOID PULONG PVOID PULONG SxsDataSize
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PUNICODE_STRING Source)
#define DPFLTR_APPCOMPAT_ID
PVOID PVOID PWCHAR PVOID USHORT PULONG PVOID PULONG PVOID PULONG PULONG PULONG64 PULONG SomeFlag2
NTSYSAPI NTSTATUS NTAPI NtSetValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN ULONG TitleIndex OPTIONAL, IN ULONG Type, IN PVOID Data, IN ULONG DataSize)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char UINT32 ACPI_STATUS const char UINT32 const char * FunctionName
BOOL WINAPI SdbUnregisterDatabase(_In_ const GUID *pguidDB)
#define STRSAFE_NULL_ON_FAILURE
__GNU_EXTENSION typedef unsigned __int64 * PULONGLONG
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToInteger(PUNICODE_STRING String, ULONG Base, PULONG Value)
#define APPHELP_RESULT_FOUND
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
unsigned __int64 * PULONG64
PVOID PVOID PWCHAR PVOID USHORT PULONG PVOID PULONG PVOID * SxsData
PVOID PVOID PWCHAR PVOID USHORT PULONG Reason
#define APPHELP_VALID_RESULT
PVOID PVOID PWCHAR PVOID USHORT PULONG PVOID * SdbQueryAppCompatData
BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved)
PVOID PVOID PWCHAR PVOID USHORT PULONG PVOID PULONG SdbQueryAppCompatDataSize
#define KEY_ENUMERATE_SUB_KEYS
#define RTL_CONSTANT_STRING(s)
PDB WINAPI SdbOpenDatabase(LPCWSTR path, PATH_TYPE type)