Как проигнорировать любое исключение в 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);
    }

0 ответов

Другие вопросы по тегам