Windows 하드웨어 오류 아키텍처의 구성 요소
다음 다이어그램에서는 Windows WHEA(하드웨어 오류 아키텍처)의 주요 구성 요소를 보여 줍니다.
운영 체제에서 검색되는 각 하드웨어 오류 원본 에 대해 해당 LLHEH(하위 수준 하드웨어 오류 처리기 )가 있습니다. LLHEH는 하드웨어 오류 조건에 대한 응답으로 실행되는 첫 번째 운영 체제 코드입니다. LLHEH는 인터럽트 처리기, 예외 처리기, 폴링 루틴 또는 시스템 펌웨어에서 호출되는 콜백 루틴일 수 있습니다. 각 LLHEH는 가장 적합한 소프트웨어 모듈에서 구현됩니다. I/O 버스의 경우 해당 버스 드라이버에 존재합니다. 플랫폼 트랩 처리기의 경우 운영 체제 커널 또는 HAL(하드웨어 추상화 계층)에 존재합니다.
각 LLHEH는 다음 작업을 수행합니다.
하드웨어 오류를 인정합니다.
하드웨어 오류와 관련된 사용 가능한 오류 정보를 캡처합니다.
하드웨어 오류 조건을 운영 체제에 보고합니다.
일반적으로 LLHEH는 하드웨어 및 펌웨어와 직접 상호 작용하여 하드웨어 오류 정보를 검색합니다. LLHEH는 하드웨어 오류와 관련된 모든 정보를 하드웨어 오류 패킷으로 컴파일합니다. 펌웨어가 처음에 하드웨어 오류를 처리하는 경우 해당 LLHEH는 펌웨어와 상호 작용하여 오류 패킷을 검색합니다. 모든 LLHEH는 하드웨어 오류 패킷 데이터를 일반적인 오류 보고 함수에 전달하여 Windows 운영 체제 커널에 하드웨어 오류를 보고합니다.
LLHEH와 Windows 커널은 모두 플랫폼별 오류 정보를 수집하기 위해 PSHED( 플랫폼별 하드웨어 오류 드라이버 )의 서비스를 활용합니다. PSHED는 운영 체제에서 플랫폼 오류 처리 메커니즘의 세부 정보를 숨기고 Windows 운영 체제에 일관된 인터페이스를 노출하여 기본 플랫폼의 하드웨어 오류 보고 기능을 추상화합니다. 하드웨어 오류 처리 리소스에 대한 시스템 펌웨어 인터페이스가 포함된 플랫폼에서 PSHED는 펌웨어와의 상호 작용을 처리합니다. 이렇게 하면 핵심 Windows 구성 요소가 아키텍처로 간주되는 오류 상태 레지스터에만 액세스할 수 있는 동시에 보다 풍부하고 자세한 플랫폼별 하드웨어 오류 정보를 얻을 수 있는 메커니즘을 제공할 수 있습니다.
각 프로세서 아키텍처(x86, x64 및 Itanium)에 대해 Microsoft는 해당 아키텍처에 공통적인 핵심 오류 처리 동작을 구현하는 PSHED를 제공합니다. 플랫폼 공급업체는 플랫폼별 기능을 활용하는 PSHED 플러그 인을 제공하여 기본 PSHED 기능을 보완할 수 있습니다. PSHED 플러그 인은 PSHED에서 호출되는 콜백 인터페이스를 구현하는 특수 용도의 Windows 디바이스 드라이버입니다. PSHED 플러그 인의 목적은 Microsoft에서 제공하는 PSHED의 기본 동작을 보강하거나 재정의하는 것입니다.
PSHED 플러그 인은 플랫폼 공급업체가 하드웨어 플랫폼의 하드웨어 오류 보고 및 복구 기능에 대한 소프트웨어 인터페이스로 구현하기 위한 것입니다. PSHED 플러그 인은 플랫폼 공급업체에서 정의한 프라이빗 인터페이스 또는 메커니즘을 사용하여 플랫폼 펌웨어와 인터페이스할 수 있습니다. 이를 통해 플랫폼 공급업체는 하드웨어 오류 처리를 위해 기존 펌웨어를 계속 사용할 수 있습니다. 시간이 지나면 Microsoft는 더 많은 하드웨어 오류 보고 및 복구 기능이 표준화될 것으로 예상합니다. 따라서 일반적인 오류 처리 및 보고를 위한 PSHED 플러그 인의 필요성은 줄어들므로 PSHED 플러그 인은 표준 하드웨어 오류 처리 기능 이외의 추가 가치를 제공하는 공급업체별 기능을 지원하는 데만 필요합니다.
PSHED 플러그 인을 구현하는 방법에 대한 자세한 내용은 플랫폼별 하드웨어 오류 드라이버 플러그 인을 참조하세요.
하드웨어 오류 조건에 대한 LLHEH의 알림이 표시되면 Windows는 하드웨어 오류 조건을 설명하는 표준화된 형식으로 오류 레코드 를 만듭니다. 그런 다음 Windows는 PSHED를 호출하여 하드웨어 오류 상태를 더 잘 설명하기 위해 오류 레코드에 하드웨어 오류 정보를 추가할 수 있습니다. PSHED 플러그 인이 설치되어 오류 정보 검색에 참여하도록 등록된 경우 PSHED는 오류 레코드의 정보를 추가로 보강할 수 있도록 PSHED 플러그 인을 호출합니다. Windows에서 모든 하드웨어 오류 정보를 오류 레코드로 컴파일한 후에는 시스템 이벤트 로그에 오류 정보를 기록하고 ETW(Windows용 이벤트 추적) 이벤트를 발생시켜 사용자 모드 애플리케이션에 알려줍니다.
특정 하드웨어 오류 조건에서 운영 체제는 오류를 복구하기 위해 시스템을 다시 시작해야 합니다. 이러한 상황에서 Windows는 시스템 이벤트 로그에 오류 정보를 기록하거나 시스템이 다시 시작될 때까지 사용자 모드 애플리케이션에 알리지 않습니다. 따라서 운영 체제는 시스템을 다시 시작하기 전에 오류 레코드를 일종의 비휘발성 스토리지에 저장해야 합니다. PSHED는 시스템을 다시 시작하는 동안 오류 정보가 유지되도록 운영 체제에서 오류 레코드를 저장하고 검색할 수 있는 인터페이스를 제공합니다. PSHED 플러그 인이 설치되어 오류 레코드 지속성에 참여하도록 등록된 경우 PSHED 플러그 인은 오류 레코드를 저장하고 검색하기 위한 플랫폼별 구현을 제공할 수 있습니다. 시스템을 다시 시작하면 운영 체제는 저장된 오류 레코드를 검색하여 시스템 이벤트 로그에 올바르게 기록되고 사용자 모드 애플리케이션에 알림을 받을 수 있습니다.
WHEA가 하드웨어 오류를 처리하는 방법에 대한 자세한 내용은 오류 처리를 참조하세요.
또한 Windows는 사용자 모드 오류 관리 애플리케이션이 하드웨어 오류 원본 정보를 설정 및 검색하고, 특정 오류 원본에 대한 오류 처리를 구성하고, 테스트를 위해 하드웨어 플랫폼에 하드웨어 오류를 삽입할 수 있도록 하드웨어 오류 관리 API를 제공합니다.
WHEA 관리 애플리케이션을 구현하는 방법에 대한 자세한 내용은 WHEA 관리 애플리케이션을 참조하세요.