在 Windows 10 上使用 WHEA
在 Windows 10 版本 2004 中,Windows 硬體錯誤架構 (WHEA) 包含新的介面 (v2)。 此頁面描述如何註冊為錯誤來源並報告錯誤。
新增錯誤來源
若要使用 WHEA v2 向 WHEA 註冊為錯誤來源,驅動程式應該執行下列動作:
藉由具現化WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER結構來指定裝置驅動程序的設定,並提供WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER和WHEA_ERROR_SOURCE_UNINITIALIZE_DEVICE_DRIVER事件回呼函式的指標。
呼叫 WheaAddErrorSourceDeviceDriver,提供組態結構。 一般而言,驅動程式會從 DriverEntry 呼叫此例程。
若要在稍後移除錯誤來源,請呼叫 WheaRemoveErrorSourceDeviceDriver。
當錯誤來源準備好回報錯誤時,WHEA 會呼叫驅動程式的 WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER 事件回呼函式。 驅動程式會收到 ErrorSourceId 做為回呼的參數。
回報錯誤
若要報告錯誤,請同時依序執行下列步驟:
呼叫 WheaCreateHwErrorReportDeviceDriver,並提供 ErrorSourceId,並選擇性地為驅動程式提供 DeviceObject。 例程會傳回進行中錯誤的句柄。
若要將數據新增至錯誤,請呼叫 WheaAddHwErrorReportSectionDeviceDriver,並提供錯誤句柄。 此函式會將單一區段新增至錯誤報告,並設定驅動程式提供的數據緩衝區。 驅動程式最多可以呼叫 maxSectionsPerReport 時間,如WHEA_ERROR_SOURCE_CONFIGURATION_DEVICE_DRIVER中所指定。
選擇性地,驅動程式可以呼叫 WheaHwErrorReportSetSeverityDeviceDriver 來設定封包和區段的錯誤嚴重性。 另請參閱 WheaHwErrorReportSetSectionNameDeviceDriver,這是更新WHEA_ERROR_RECORD_SECTION_DESCRIPTOR結構的 FRUText 欄位的協助程式函式。
將錯誤數據複製到緩衝區集。
再次呼叫 WheaHwErrorReportSubmitDeviceDriver,再次提供錯誤句柄。 在此呼叫之後,緩衝區集中的緩衝區無法使用,而且句柄無效。
如果發生錯誤或錯誤不再有效,驅動程式可以選擇性地呼叫 WheaHwErrorReportAbandonDeviceDriver。 在此情況下,不會將任何報告提交至 WHEA。
驅動程序必須在 WheaCreateHwErrorReportDeviceDriver 建立的每個句柄上呼叫 WheaHwErrorReportAbandonDeviceDriver。 否則, WheaRemoveErrorSourceDeviceDriver 可能會傳回STATUS_RESOURCE_IN_USE。