From 4be0fdcb74d5255a8fbaea10dac40e389f90ee95 Mon Sep 17 00:00:00 2001 From: Julian Freeman Date: Thu, 27 Nov 2025 09:18:42 -0400 Subject: [PATCH] more preset bsod --- src-tauri/Cargo.toml | 11 +--- src-tauri/src/main.rs | 113 +++++++++++++++++++++++++++----------- src-tauri/tauri.conf.json | 2 +- src/App.vue | 4 +- 4 files changed, 86 insertions(+), 44 deletions(-) diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index a2199b7..5d8ddb3 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,19 +1,12 @@ [package] name = "system-doctor" version = "0.1.0" -description = "A Tauri App" -authors = ["you"] +description = "System diagnosis" +authors = ["Julian"] edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html -[lib] -# The `_lib` suffix may seem redundant but it is necessary -# to make the lib name unique and wouldn't conflict with the bin name. -# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519 -name = "system_doctor_lib" -crate-type = ["staticlib", "cdylib", "rlib"] - [build-dependencies] tauri-build = { version = "2", features = [] } diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 82de42b..76d40c0 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -1,5 +1,3 @@ -// src-tauri/src/main.rs - // 全局允许非标准命名风格 #![allow(non_camel_case_types, non_snake_case)] #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] @@ -132,61 +130,112 @@ fn format_wmi_time(wmi_str: &str) -> String { } } +// [扩展] 翻译 BugCheck Code (u32) - 增加了更多常见代码 fn translate_bugcheck_u32(code: u32) -> (String, String) { match code { + // 驱动与内存相关 + 0x0000000A => ( + "IRQL_NOT_LESS_OR_EQUAL (0x0A)".to_string(), + "驱动程序使用了不正确的内存地址。通常由有缺陷的驱动程序(如杀毒软件、虚拟光驱驱动)或硬件兼容性问题引起。建议更新所有驱动程序。" + .to_string(), + ), 0x000000D1 => ( "DRIVER_IRQL_NOT_LESS_OR_EQUAL (0xD1)".to_string(), - "驱动程序使用了不正确的内存地址。通常是驱动程序冲突或损坏。请检查最近安装的硬件驱动(显卡、网卡等),尝试回滚或更新驱动。" + "驱动程序尝试访问未分页内存。这是最常见的蓝屏之一,通常是驱动程序冲突或损坏。请检查最近安装的硬件驱动(显卡、网卡等)。" .to_string(), ), 0x0000007E | 0x1000007E => ( "SYSTEM_THREAD_EXCEPTION_NOT_HANDLED (0x7E)".to_string(), - "系统线程抛出了未捕获的异常。可能是显卡驱动不兼容,或者BIOS设置问题。建议重装显卡驱动,或恢复BIOS默认设置。" + "系统线程抛出了未捕获的异常。可能是显卡驱动不兼容,或者BIOS设置问题。建议重装显卡驱动,或更新 BIOS。" .to_string(), ), - 0x0000001A => ( - "MEMORY_MANAGEMENT (0x1A)".to_string(), - "严重的内存管理错误。高度怀疑内存条物理故障。建议立即运行 Windows 内存诊断工具,或者尝试拔插内存条。" - .to_string(), - ), - 0x000000EF => ( - "CRITICAL_PROCESS_DIED (0xEF)".to_string(), - "Windows 核心进程意外终止。通常是系统文件损坏或硬盘故障。建议运行 'sfc /scannow' 修复系统,并检查硬盘健康度。" - .to_string(), - ), - 0x00000124 => ( - "WHEA_UNCORRECTABLE_ERROR (0x124)".to_string(), - "硬件发生无法纠正的物理错误。这是纯硬件故障。通常是 CPU 电压不足、超频失败、过热,或者主板/PCIe设备故障。" - .to_string(), - ), - 0x00000116 => ( - "VIDEO_TDR_FAILURE (0x116)".to_string(), - "显卡响应超时。显卡驱动崩溃或显卡过热。如果你在玩游戏,可能是显卡超频不稳定或散热硅脂干了。" + 0x0000001E => ( + "KMODE_EXCEPTION_NOT_HANDLED (0x1E)".to_string(), + "内核模式程序生成了处理器无法捕获的异常。通常是硬件兼容性问题或驱动程序错误。建议检查是否有新安装的硬件。" .to_string(), ), 0x00000050 => ( "PAGE_FAULT_IN_NONPAGED_AREA (0x50)".to_string(), - "试图访问无效的内存地址。可能是内存条故障,或者是防病毒软件/驱动程序冲突。建议检查内存。" + "试图访问无效的内存地址。极大概率是内存条故障(接触不良或损坏),或者是防病毒软件/驱动程序冲突。建议运行内存诊断。" .to_string(), ), - 0x0000000A => ( - "IRQL_NOT_LESS_OR_EQUAL (0x0A)".to_string(), - "驱动程序使用了不正确的内存地址。通常由有缺陷的驱动程序或硬件兼容性问题引起。" + 0x0000001A => ( + "MEMORY_MANAGEMENT (0x1A)".to_string(), + "严重的内存管理错误。高度怀疑内存条物理故障。建议立即运行 Windows 内存诊断工具,或者尝试拔插/更换内存条。" .to_string(), ), - 0x0000003B => ( - "SYSTEM_SERVICE_EXCEPTION (0x3B)".to_string(), - "系统服务执行异常。通常与图形驱动程序或过时的系统文件有关。" + + // 硬件与系统核心相关 + 0x00000124 => ( + "WHEA_UNCORRECTABLE_ERROR (0x124)".to_string(), + "硬件发生无法纠正的物理错误。这是纯硬件故障。通常是 CPU 电压不足(缩缸)、超频失败、过热,或者主板/PCIe设备故障。" + .to_string(), + ), + 0x00000101 => ( + "CLOCK_WATCHDOG_TIMEOUT (0x101)".to_string(), + "CPU 核心死锁。系统检测到某个 CPU 核心在规定时间内没有响应。通常是因为 CPU 超频不稳定、电压不足或过热。" + .to_string(), + ), + 0x000000EF => ( + "CRITICAL_PROCESS_DIED (0xEF)".to_string(), + "Windows 核心进程意外终止。通常是系统文件严重损坏或硬盘出现坏道导致无法读取系统文件。建议运行 'sfc /scannow'。" .to_string(), ), 0x00000133 => ( "DPC_WATCHDOG_VIOLATION (0x133)".to_string(), - "DPC 看门狗超时。通常是 SSD 固件过旧或无线网卡驱动冲突导致系统卡死时间过长。" + "DPC 看门狗超时。系统被某个驱动程序(通常是 SSD 固件、SATA 驱动或无线网卡驱动)卡死太久。建议更新 SSD 固件和主板芯片组驱动。" + .to_string(), + ), + 0x00000139 => ( + "KERNEL_SECURITY_CHECK_FAILURE (0x139)".to_string(), + "内核检测到关键数据结构损坏。通常由内存错误、驱动程序 Bug 或病毒导致。建议检查内存和更新驱动。" + .to_string(), + ), + + // 显卡与电源相关 + 0x00000116 => ( + "VIDEO_TDR_FAILURE (0x116)".to_string(), + "显卡响应超时。显卡驱动崩溃且无法恢复。如果你在玩游戏,可能是显卡超频不稳定、电源功率不足或散热硅脂干了。" + .to_string(), + ), + 0x00000119 => ( + "VIDEO_SCHEDULER_INTERNAL_ERROR (0x119)".to_string(), + "显卡调度器内部错误。这表明显卡驱动发送了无效数据,或者是显卡显存(VRAM)出现故障。" + .to_string(), + ), + 0x0000009F => ( + "DRIVER_POWER_STATE_FAILURE (0x9F)".to_string(), + "驱动程序电源状态故障。通常发生在电脑休眠、睡眠或唤醒时。某个设备的驱动程序没有正确响应电源指令。建议检查电源管理设置。" + .to_string(), + ), + + // 存储与启动相关 + 0x0000007B => ( + "INACCESSIBLE_BOOT_DEVICE (0x7B)".to_string(), + "无法访问启动设备。通常是 BIOS 中的硬盘模式设置错误(如 AHCI/RAID 切换)或引导扇区损坏。也可能是硬盘物理连接松动。" + .to_string(), + ), + 0x00000024 => ( + "NTFS_FILE_SYSTEM (0x24)".to_string(), + "NTFS 文件系统损坏。这通常意味着硬盘出现坏道或文件系统逻辑错误。建议立即运行 'chkdsk /f /r' 修复磁盘。" + .to_string(), + ), + 0x00000154 => ( + "UNEXPECTED_STORE_EXCEPTION (0x154)".to_string(), + "系统存储组件检测到意外异常。通常指向系统盘(SSD/HDD)出现故障或连接线松动,导致系统无法读取关键数据。" + .to_string(), + ), + + // 系统服务异常 + 0x0000003B => ( + "SYSTEM_SERVICE_EXCEPTION (0x3B)".to_string(), + "系统服务执行异常。通常与图形驱动程序、系统文件损坏或过时的驱动有关。" .to_string(), ), _ => ( format!("未知错误代码: 0x{:X}", code), - "建议手动搜索此错误代码。通用建议:更新驱动、检查内存、扫描病毒。".to_string(), + "此代码较为罕见,建议手动在搜索引擎中搜索此错误代码。通用排查步骤:1. 更新所有驱动;2. 运行内存诊断;3. 检查系统文件完整性。" + .to_string(), ), } } @@ -435,7 +484,7 @@ async fn analyze_minidump_bytes(file_content: Vec) -> Result Result<(), String> { std::thread::spawn(move || { - // ... (保持原有逻辑不变) ... + // ... (保持原有逻辑不变,占位符) ... { let mut sys = System::new(); sys.refresh_memory(); diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index a49c7da..bea88bc 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -12,7 +12,7 @@ "app": { "windows": [ { - "title": "system-doctor", + "title": "系统检查 v0.1", "width": 1200, "height": 800 } diff --git a/src/App.vue b/src/App.vue index 8db0078..273f75f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -12,7 +12,7 @@ :class="{ active: currentTab === 'overview' }" @click="currentTab = 'overview'" > - 📊 静态概览 + 📊 健康概览