Компоненты архитектуры ошибок оборудования Windows

На следующей схеме показаны основные компоненты архитектуры аппаратных ошибок Windows (WHEA).

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

Для каждого источника ошибок оборудования, обнаруженного операционной системой, имеется соответствующий обработчик ошибок низкого уровня (LLHEH). LLHEH — это первый код операционной системы, который выполняется в ответ на ошибку оборудования. LLHEH может быть обработчиком прерываний, обработчиком исключений, подпрограммой опроса или подпрограммой обратного вызова, вызываемой системным ПО. Каждый LLHEH реализуется в наиболее подходящем программном модуле: для автобусов ввода-вывода они существуют в соответствующих водителях автобусов; Для обработчиков перехватов платформы они существуют в ядре операционной системы или на уровне аппаратной абстракции (HAL).

Каждый LLHEH выполняет следующие задачи:

  • Подтверждает аппаратную ошибку.

  • Записывает доступные сведения об ошибке, связанные с ошибкой оборудования.

  • Сообщает операционной системе о состоянии ошибки оборудования.

Как правило, LLHEH напрямую взаимодействуют с оборудованием и встроенным ПО для получения сведений об ошибках оборудования. LLHEH компилируют всю информацию, связанную с аппаратной ошибкой, в пакет ошибок оборудования. В ситуациях, когда встроенное ПО изначально обрабатывает аппаратную ошибку, соответствующий LLHEH взаимодействует с встроенным ПО для получения пакета ошибок. Все llHEHs сообщают об ошибках оборудования в ядро операционной системы Windows, передавая данные пакетов ошибок оборудования в общую функцию отчетов об ошибках.

И LLHEH, и ядро Windows используют службы драйвера аппаратных ошибок (PSHED) для конкретной платформы для сбора сведений об ошибках для конкретной платформы. PSHED обеспечивает абстрагирование аппаратных средств отчетности об ошибках базовой платформы, скрывая сведения о механизмах обработки ошибок платформы из операционной системы и предоставляя согласованный интерфейс операционной системе Windows. На платформах, использующих интерфейс встроенного ПО системы к аппаратным ресурсам обработки ошибок, PSHED обрабатывает взаимодействие с встроенным ПО. Это позволяет основным компонентам Windows получать доступ только к регистрам состояния ошибок, которые считаются архитектурными, а также предоставляет механизм, с помощью которого можно получить более подробные сведения об ошибках конкретной платформы.

Для каждой архитектуры процессора (x86, x64 и Itanium) корпорация Майкрософт предоставляет PSHED, который реализует основное поведение обработки ошибок, общее для этой архитектуры. Поставщики платформ могут дополнить функциональность PSHED по умолчанию, предоставляя подключаемые модули PSHED, которые используют преимущества возможностей конкретной платформы. Подключаемый модуль PSHED — это специальный драйвер устройства Windows, реализующий интерфейс обратного вызова, вызываемый PSHED. Подключаемый модуль PSHED предназначен для расширения или переопределения поведения PSHED по умолчанию, предоставляемого Корпорацией Майкрософт.

Подключаемый модуль PSHED предназначен для реализации поставщиками платформ в качестве программного интерфейса для создания отчетов об ошибках оборудования и восстановления. Подключаемый модуль PSHED может подключаться к встроенному ПО платформы, используя любые частные интерфейсы или механизмы, определенные поставщиком платформы. Это позволяет поставщику платформы продолжать использовать существующее встроенное ПО для обработки ошибок оборудования. Со временем корпорация Майкрософт ожидает, что больше возможностей создания отчетов об ошибках оборудования и восстановления будут стандартизированы. Поэтому потребность в подключаемых модулях PSHED для общей обработки ошибок и создания отчетов уменьшится, так что подключаемые модули PSHED будут необходимы только для поддержки функций конкретных поставщиков, которые предоставляют дополнительные преимущества, выходящие за рамки стандартных аппаратных функций обработки ошибок.

Дополнительные сведения о реализации подключаемого модуля PSHED см. в разделе Подключаемые модули драйвера ошибок оборудования для конкретной платформы.

После уведомления LLHEH об ошибке оборудования Windows создает запись ошибки в стандартизированном формате, описывающую состояние ошибки оборудования. Затем Windows вызывает PSHED, чтобы добавить дополнительные сведения об ошибках оборудования в запись ошибки, чтобы лучше описать состояние ошибки оборудования. Если подключаемый модуль PSHED установлен и зарегистрирован для участия в извлечении сведений об ошибках, PSHED, в свою очередь, вызовет подключаемый модуль PSHED, чтобы он мог дополнительно дополнить сведения в записи об ошибке. После того как Windows скомпилирует все сведения об ошибках оборудования в запись об ошибке, она записывает сведения об ошибках в журнал системных событий и уведомляет приложения в пользовательском режиме, вызывая событие трассировки событий Windows (ETW).

При определенных условиях ошибки оборудования операционная система принудительно перезагрузит систему, чтобы восстановиться после ошибки. В таких ситуациях Windows не регистрирует сведения об ошибках в журнале системных событий и не уведомляет приложения в пользовательском режиме до тех пор, пока система не будет перезапущена. Поэтому перед перезапуском системы операционная система должна сохранить запись об ошибке в том или ином виде энергонезависимого хранилища. PSHED предоставляет интерфейс, с помощью которого операционная система может хранить и извлекать запись об ошибке, чтобы информация об ошибке сохранялась во время перезапуска системы. Если подключаемый модуль PSHED установлен и зарегистрирован для участия в сохраняемости записей ошибок, подключаемый модуль PSHED может обеспечить реализацию для конкретной платформы для хранения и получения записей об ошибках. При перезапуске системы операционная система получает сохраненную запись об ошибке, чтобы ее можно было правильно зарегистрироваться в системном журнале событий, и приложения в пользовательском режиме могут получать уведомления.

Дополнительные сведения о том, как WHEA обрабатывает ошибки оборудования, см. в разделе Обработка ошибок.

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

Дополнительные сведения о реализации приложения управления WHEA см. в разделе Приложения управления WHEA.