Как проигнорировать любое исключение в DEBUG_EVENT и продолжить?
У меня есть код в моем сервисном приложении, который выполняет определенный процесс для учетной записи SYSTEM и в режиме отладки через CreateProcessAsUser
,
Проблема в том, что отлаживаемый процесс останавливается, например, когда открывается Google Chrome или отлаженный процесс выполняет одновременно большое количество задач.
Я думаю, что главной проблемой является отсутствие "игнорировать любые исключения в отладке и продолжить"..
Любая помощь или предложение приветствуются.
int Stop = 0;
DEBUG_EVENT DebugEv = { 0 };
DWORD dwContinueStatus = DBG_CONTINUE;
while (!Stop)
{
WaitForDebugEvent(&DebugEv, INFINITE);
switch (DebugEv.dwDebugEventCode)
{
case EXCEPTION_DEBUG_EVENT:
switch (DebugEv.u.Exception.ExceptionRecord.ExceptionCode)
{
case EXCEPTION_ACCESS_VIOLATION:
break;
case EXCEPTION_BREAKPOINT:
break;
case EXCEPTION_DATATYPE_MISALIGNMENT:
break;
case EXCEPTION_SINGLE_STEP:
break;
case DBG_CONTROL_C:
break;
default:
break;
}
case CREATE_THREAD_DEBUG_EVENT:
break;
case CREATE_PROCESS_DEBUG_EVENT:
if (DebugEv.u.CreateProcessInfo.hFile)
CloseHandle(DebugEv.u.CreateProcessInfo.hFile);
break;
case EXIT_THREAD_DEBUG_EVENT:
break;
case EXIT_PROCESS_DEBUG_EVENT:
Stop = 1;
break;
case LOAD_DLL_DEBUG_EVENT:
if (DebugEv.u.LoadDll.hFile)
CloseHandle(DebugEv.u.LoadDll.hFile);
break;
case UNLOAD_DLL_DEBUG_EVENT:
break;
case OUTPUT_DEBUG_STRING_EVENT:
break;
}
ContinueDebugEvent(DebugEv.dwProcessId, DebugEv.dwThreadId, dwContinueStatus);
}