В Mpeg2DecFilter.cpp
присутствует следующий код:
#include "detours.h"
DETOUR_TRAMPOLINE(BOOL WINAPI Real_IsDebuggerPresent(), IsDebuggerPresent);
BOOL WINAPI Mine_IsDebuggerPresent()
{
TRACE(_T("Oops, somebody was trying to be naughty! (called IsDebuggerPresent)\n"));
return FALSE;
}
...snip...
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
if(!fDetourInited)
{
DetourFunctionWithTrampoline((PBYTE)Real_IsDebuggerPresent, (PBYTE)Mine_IsDebuggerPresent);
...snip...
fDetourInited = true;
}
return DllEntryPoint((HINSTANCE)hModule, ul_reason_for_call, 0); // "DllMain" of the dshow baseclasses;
}
Я не могу понять, почему Gplmpgdec переопределяет IsDebuggerPresent
, чтобы всегда возвращать FALSE
.Какое возможное использование это может послужить?
Дело в том, что для меня это вызывает проблемы из-за того, что сообщения отладчика не отображаются и (иногда) происходит сбой приложения, если сообщение трассировки записывается при выгрузке DLL-библиотеки Gplmpgdec.
Чтобы решить, как решить эту проблему, я думаю, что мне действительно нужно знать, почему Gplmpgdec делает это.Любые предложения относительно решения также приветствуются.Я бы предпочел не поддерживать свою собственную библиотеку Gplmpgdec;такого рода головную боль от обслуживания я бы предпочел избежать любой ценой.Возможно, есть способ отключить объезд?