Можно ли надежно обнаружить BSOD после перезагрузки в другую ОС? - PullRequest
0 голосов
/ 14 февраля 2012

Мне нужно обнаружить перезагрузку, вызванную BSOD в другой ОС.Можно ли проследить такую ​​ситуацию?Достаточно ли для этого дампа памяти?Windows 7 отображает приятный диалог, который система восстановила после серьезной ошибки - откуда она знает?

Ответы [ 5 ]

2 голосов
/ 14 февраля 2012

Windows предоставляет интерфейс для регистрации обратного вызова при проверке ошибок Таким образом, вы можете зарегистрировать функцию, которая делает что-то специфическое для проверки ошибок - создание простого файла или чего-то в этом роде, а затем в этой другой операционной системе вы может проверить, существует ли этот файл - если это так, то ваш обратный вызов bugcheck был выполнен ergo. проверка ошибок произошла? Конечно, вам нужно принять во внимание, что вызов вашей функции выполняется на IRQL HIGH_LEVEL, поэтому вы должны увидеть, какие ограничения применяются, а также это относится к области разработки драйвера Windows.

1 голос
/ 14 февраля 2012

При поиске в Интернете Windows пытается создать файлы дампа в C:/Windows/Minidump. Вы можете искать файлы там. Обратите внимание, что я говорю пытается , потому что BSOD может быть настолько фатальным, что файл дампа не может быть создан (например, во время сбоя жесткого диска по понятным причинам).

Вы можете искать даты создания файлов, чтобы определить самую последнюю.

Это, очевидно, требует, чтобы вы могли смонтировать файловую систему Windows в другой ОС, но это, кажется, достойное решение.

0 голосов
/ 26 июня 2012

Не так, как обычно, поскольку аварийный дамп записывается в файл подкачки кодом, который выполняет BSoD, а затем после перезагрузки , Windows записывает это в файл окончательного дампа.

0 голосов
/ 22 февраля 2012

По умолчанию Windows регистрирует событие в журнале событий при сбое системы. (См. Мой комментарий ниже).

0 голосов
/ 15 февраля 2012

Вы могли бы написать простую службу Windows, которая записывает информацию о состоянии где-нибудь, чтобы другая ОС могла ее найти. Это может быть, например, один из неиспользуемых секторов после MBR, выделенный раздел или карта памяти USB.

Когда служба запускается, вы пишете сообщение о том, что Windows запущена и работает, возможно, с отметкой времени. Вы можете обновлять это время от времени, вы даже можете включить информацию о состоянии, такую ​​как загрузка процессора или события загрузки / выгрузки драйвера, если это будет полезно. Когда служба обнаруживает, что система выключается, она пишет сообщение об этом. Когда ваша другая ОС просматривает эту информацию, если в последнем сообщении не говорилось о намеренном завершении работы системы, вы можете заключить, что Windows потерпела крах. Windows делает что-то подобное, так что загрузчик может предложить загрузить систему в безопасном режиме.

Очевидно, что это не позволяет вам различать BSOD и другие типы сбоев, и вы получите ложное срабатывание, если система потеряет питание. Вы также не сможете обнаружить BSOD, если он произошел во время завершения работы системы. Важность этих предостережений зависит от деталей, о которых вы нам не говорите.

...