다음을 통해 공유


Windows 10에서 WHEA 사용

Windows 10 버전 2004에서 WHEA(Windows 하드웨어 오류 아키텍처)에는 새 인터페이스(v2)가 포함되어 있습니다. 이 페이지에서는 오류 원본으로 등록하고 오류를 보고하는 방법을 설명합니다.

오류 원본 추가

WHEA v2를 사용하여 오류 원본으로 WHEA에 등록하려면 드라이버는 다음을 수행해야 합니다.

  1. WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER 구조를 인스턴스화하고 WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER 및 WHEA_ERROR_SOURCE_UNINITIALIZE_DEVICE_DRIVER 이벤트 콜백 함수에 대한 포인터를제공하여 디바이스 드라이버에 대한 구성을 지정합니다.

  2. WheaAddErrorSourceDeviceDriver를 호출하여 구성 구조를 제공합니다. 일반적으로 드라이버는 DriverEntry에서 이 루틴을 호출합니다.

    나중에 오류 원본을 제거하려면 WheaRemoveErrorSourceDeviceDriver를 호출합니다.

  3. 오류 원본이 오류를 보고할 준비가 되면 WHEA는 드라이버의 WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER 이벤트 콜백 함수를 호출합니다. 드라이버는 콜백에 대한 매개 변수로 ErrorSourceId 를 받습니다.

오류 보고

오류를 보고하려면 동시에 다음 단계를 순서대로 수행합니다.

  1. WheaCreateHwErrorReportDeviceDriver를 호출하여 ErrorSourceId 및 필요에 따라 드라이버에 대한 DeviceObject를 제공합니다. 루틴은 진행 중인 오류에 대한 핸들을 반환합니다.

  2. 오류에 데이터를 추가하려면 WheaAddHwErrorReportSectionDeviceDriver를 호출하여 오류 핸들을 제공합니다. 이 함수는 오류 보고서에 단일 섹션을 추가하고 드라이버 제공 데이터 버퍼를 구성합니다. 드라이버는 WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER 지정된 MaxSectionsPerReport 시간까지 이 루틴을 호출할 수 있습니다.

    필요에 따라 드라이버는 WheaHwErrorReportSetSeverityDeviceDriver를 호출하여 패킷 및 섹션의 오류 심각도를 설정할 수 있습니다. 또한 WHEA_ERROR_RECORD_SECTION_DESCRIPTOR 구조체의 FRUText 필드를 업데이트하기 위한 도우미 함수인 WheaHwErrorReportSetSectionNameDeviceDriver를 참조하세요.

  3. 오류 데이터를 버퍼 집합에 복사합니다.

  4. WheaHwErrorReportSubmitDeviceDriver를 호출하여 오류 핸들을 다시 제공합니다. 이 호출 후에는 버퍼 집합의 버퍼를 사용할 수 없으며 핸들이 잘못되었습니다.

  5. 오류가 발생하거나 오류가 더 이상 유효하지 않은 경우 드라이버는 필요에 따라 WheaHwErrorReportAbandonDeviceDriver를 호출할 수 있습니다. 이 경우 WHEA에 보고서가 제출되지 않습니다.

드라이버는 WheaCreateHwErrorReportDeviceDriver에서 만든 모든 핸들에서 WheaHwErrorReportSubmitDeviceDriver 또는 WheaHwErrorReportAbandonDeviceDriver를 호출해야 합니다. 그렇지 않으면 WheaRemoveErrorSourceDeviceDriver가 STATUS_RESOURCE_IN_USE 반환할 수 있습니다.