1 ответ
Я не уверен, что понимаю ваш вопрос. GPF - это ситуация, когда процессор выдает прерывание.
Если это происходит в пользовательском режиме - это переводится в исключение SEH, которое, в свою очередь, может быть обработано процессом. Если это не обработано - процесс "вылетает". Означает - отображается некрасивое окно сообщения, и процесс завершается (в зависимости от настроек процесс также может быть отлажен, сгенерирован дамп отладки и т. Д.)
Если это происходит в режиме ядра - есть две возможности. Если это произошло в контексте, где допускаются исключения - исключение SEH возникает и обрабатывается (аналогично режиму пользователя). Однако, если исключение не обрабатывается или контекст, в котором произошел GPF, не допускает исключений - ОС выключается, отображая так называемый BSOD (синий экран смерти).
Теперь о вашем вопросе я вижу несколько возможностей:
- ОС умирает, и вы хотите знать, какой процесс сделал системный вызов, который вызвал GPF в режиме ядра. Это можно обнаружить с подключенным отладчиком ядра. Вы также увидите драйвер, вызвавший ошибку.
- GPF происходит в пользовательском режиме внутри процесса, и он не обрабатывается. Этот процесс завершится сбоем, и вы точно будете знать, что это был за процесс.
- GPS происходит внутри процесса, обрабатывается, и процесс продолжает выполняться. И вы хотите получать уведомления об этом. Для этого вы можете присоединиться к процессу с помощью отладчика. Всякий раз, когда возникает исключение SEH внутри процесса - отладчик уведомляется ОС.