查询系统事件日志中的硬件错误事件

记录硬件错误事件的提供程序的名称是 Microsoft-Windows-WHEA-Logger

此提供程序专为桌面方案中的用户而设计。 它提供具有事件main详细信息的人类可读消息,以便用户可以大致了解所发生的情况。

下面的代码示例演示如何查询系统事件日志以检索以前由 WHEA 记录的任何硬件错误事件。

// Function to query the event log for hardware error events
VOID QueryHwErrorEvents(VOID) {

  EVT_HANDLE QueryHandle;
  EVT_HANDLE EventHandle;
  ULONG Returned;

  // Obtain a query handle to the system event log
  QueryHandle =
    EvtQuery(
      NULL, 
      L"System", 
      L"*[System/Provider[@Name=\"Microsoft-Windows-WHEA-Logger\"]]",
      EvtQueryChannelPath | EvtQueryForwardDirection
      );

  // Check result
  if (QueryHandle != NULL) {

    // Get the next hardware error event
    while (EvtNext(
             QueryHandle,
             1,
             &EventHandle,
             -1,
             0,
             &Returned
             )) {

      // Process the hardware error event
      ProcessHwErrorEvent(EventHandle);

      // Close the event handle
      EvtClose(EventHandle);
    }

    // Close the query handle
    EvtClose(QueryHandle);
  }
}

注意

上述示例中使用的所有Evt_Xxx_函数和 EVT_XXX 数据类型都记录在 Microsoft Windows SDK 文档中的 Windows 事件日志部分。