add more event log

This commit is contained in:
Julian Freeman
2025-11-25 23:22:32 -04:00
parent bbf1351030
commit 221394670d

View File

@@ -244,11 +244,11 @@ async fn run_diagnosis() -> Result<SystemHealthReport, String> {
} }
} }
// 3. 关键日志 (严格模式) // 3. 关键日志 (严格模式 + 扩展)
let mut events = Vec::new(); let mut events = Vec::new();
if let Some(con) = &wmi_con { if let Some(con) = &wmi_con {
// 先按 ID 粗查 // [新增] 增加了 ID 7 (Disk), 1001 (BugCheck), 4101 (Display)
let query = "SELECT TimeGenerated, EventCode, SourceName, Message FROM Win32_NTLogEvent WHERE Logfile = 'System' AND (EventCode = 41 OR EventCode = 18 OR EventCode = 19)"; let query = "SELECT TimeGenerated, EventCode, SourceName, Message FROM Win32_NTLogEvent WHERE Logfile = 'System' AND (EventCode = 41 OR EventCode = 18 OR EventCode = 19 OR EventCode = 7 OR EventCode = 1001 OR EventCode = 4101)";
if let Ok(results) = con.raw_query::<Win32_NTLogEvent>(query) { if let Ok(results) = con.raw_query::<Win32_NTLogEvent>(query) {
// 不在这里 truncate而是过滤后再截取保证显示的是真问题 // 不在这里 truncate而是过滤后再截取保证显示的是真问题
for event in results { for event in results {
@@ -262,6 +262,18 @@ async fn run_diagnosis() -> Result<SystemHealthReport, String> {
} else if (event.EventCode == 18 || event.EventCode == 19) && event.SourceName == "Microsoft-Windows-WHEA-Logger" { } else if (event.EventCode == 18 || event.EventCode == 19) && event.SourceName == "Microsoft-Windows-WHEA-Logger" {
is_target_event = true; is_target_event = true;
hint = "WHEA 硬件致命错误 (CPU/超频/PCIe)".to_string(); hint = "WHEA 硬件致命错误 (CPU/超频/PCIe)".to_string();
} else if event.EventCode == 7 && (event.SourceName == "Disk" || event.SourceName == "disk") {
// [新增] 磁盘坏块检测
is_target_event = true;
hint = "硬盘出现坏道 (Disk Bad Block)".to_string();
} else if event.EventCode == 1001 && event.SourceName == "BugCheck" {
// [新增] 蓝屏记录
is_target_event = true;
hint = "系统发生蓝屏死机 (BSOD)".to_string();
} else if event.EventCode == 4101 && event.SourceName == "Display" {
// [新增] 显卡驱动重置
is_target_event = true;
hint = "显卡驱动停止响应并已恢复 (TDR)".to_string();
} }
if is_target_event { if is_target_event {