共用方式為


在 Windows 10 上使用 WHEA

在 Windows 10 版本 2004 中,Windows 硬體錯誤架構 (WHEA) 包含新的介面 (v2)。 此頁面描述如何註冊為錯誤來源並報告錯誤。

新增錯誤來源

若要使用 WHEA v2 向 WHEA 註冊為錯誤來源,驅動程式應該執行下列動作:

  1. 藉由具現化WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER結構來指定裝置驅動程序的設定,並提供WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVERWHEA_ERROR_SOURCE_UNINITIALIZE_DEVICE_DRIVER事件回呼函式的指標。

  2. 呼叫 WheaAddErrorSourceDeviceDriver,提供組態結構。 一般而言,驅動程式會從 DriverEntry 呼叫此例程。

    若要在稍後移除錯誤來源,請呼叫 WheaRemoveErrorSourceDeviceDriver

  3. 當錯誤來源準備好回報錯誤時,WHEA 會呼叫驅動程式的 WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER 事件回呼函式。 驅動程式會收到 ErrorSourceId 做為回呼的參數。

回報錯誤

若要報告錯誤,請同時依序執行下列步驟:

  1. 呼叫 WheaCreateHwErrorReportDeviceDriver,並提供 ErrorSourceId,並選擇性地為驅動程式提供 DeviceObject 例程會傳回進行中錯誤的句柄。

  2. 若要將數據新增至錯誤,請呼叫 WheaAddHwErrorReportSectionDeviceDriver,並提供錯誤句柄。 此函式會將單一區段新增至錯誤報告,並設定驅動程式提供的數據緩衝區。 驅動程式最多可以呼叫 maxSectionsPerReport 時間,如WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER中所指定。

    選擇性地,驅動程式可以呼叫 WheaHwErrorReportSetSeverityDeviceDriver 來設定封包和區段的錯誤嚴重性。 另請參閱 WheaHwErrorReportSetSectionNameDeviceDriver,這是更新WHEA_ERROR_RECORD_SECTION_DESCRIPTOR結構的 FRUText 欄位的協助程式函式。

  3. 將錯誤數據複製到緩衝區集。

  4. 再次呼叫 WheaHwErrorReportSubmitDeviceDriver,再次提供錯誤句柄。 在此呼叫之後,緩衝區集中的緩衝區無法使用,而且句柄無效。

  5. 如果發生錯誤或錯誤不再有效,驅動程式可以選擇性地呼叫 WheaHwErrorReportAbandonDeviceDriver 在此情況下,不會將任何報告提交至 WHEA。

驅動程序必須在 WheaCreateHwErrorReportDeviceDriver 建立的每個句柄上呼叫 WheaHwErrorReportAbandonDeviceDriver。 否則, WheaRemoveErrorSourceDeviceDriver 可能會傳回STATUS_RESOURCE_IN_USE。