From b7aae9e4038815a590f37ba9b722a5f437deea50 Mon Sep 17 00:00:00 2001 From: narzoul Date: Fri, 1 May 2020 19:57:23 +0200 Subject: [PATCH] Disable apphelp DirectDraw COM hooks --- DDrawCompat/Win32/DisplayMode.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/DDrawCompat/Win32/DisplayMode.cpp b/DDrawCompat/Win32/DisplayMode.cpp index 523852a..5513139 100644 --- a/DDrawCompat/Win32/DisplayMode.cpp +++ b/DDrawCompat/Win32/DisplayMode.cpp @@ -9,7 +9,8 @@ #include #include -BOOL WINAPI DWM8And16Bit_IsShimApplied_CallOut() { return FALSE; }; +BOOL WINAPI DWM8And16Bit_IsShimApplied_CallOut() { return FALSE; } +BOOL WINAPI SE_COM_HookInterface(CLSID*, GUID*, DWORD, DWORD) { return 0; } namespace { @@ -35,8 +36,7 @@ namespace DWORD g_lastBpp = 0; BOOL WINAPI dwm8And16BitIsShimAppliedCallOut(); - BOOL WINAPI enumDisplaySettingsExA(LPCSTR lpszDeviceName, DWORD iModeNum, DEVMODEA* lpDevMode, DWORD dwFlags); - BOOL WINAPI enumDisplaySettingsExW(LPCWSTR lpszDeviceName, DWORD iModeNum, DEVMODEW* lpDevMode, DWORD dwFlags); + BOOL WINAPI seComHookInterface(CLSID* clsid, GUID* iid, DWORD unk1, DWORD unk2); template LONG changeDisplaySettingsEx( @@ -132,11 +132,13 @@ namespace Compat::removeShim(user32, "EnumDisplaySettingsExW"); HOOK_FUNCTION(apphelp, DWM8And16Bit_IsShimApplied_CallOut, dwm8And16BitIsShimAppliedCallOut); + HOOK_FUNCTION(apphelp, SE_COM_HookInterface, seComHookInterface); } BOOL WINAPI dwm8And16BitIsShimAppliedCallOut() { - return FALSE; + LOG_FUNC("DWM8And16Bit_IsShimApplied_CallOut"); + return LOG_RESULT(FALSE); } template @@ -256,6 +258,16 @@ namespace } return LOG_RESULT(CALL_ORIG_FUNC(GetDeviceCaps)(hdc, nIndex)); } + + BOOL WINAPI seComHookInterface(CLSID* clsid, GUID* iid, DWORD unk1, DWORD unk2) + { + LOG_FUNC("SE_COM_HookInterface", clsid, iid, unk1, unk2); + if (clsid && (CLSID_DirectDraw == *clsid || CLSID_DirectDraw7 == *clsid)) + { + return LOG_RESULT(0); + } + return LOG_RESULT(CALL_ORIG_FUNC(SE_COM_HookInterface)(clsid, iid, unk1, unk2)); + } } namespace Win32