设备管理器(M12,devmgmt)

Novus OS 的 Windows 11 设备管理器复刻:主窗口是菜单栏 + 工具栏 + 左侧可折叠 设备树 + 状态栏;双击/右键"属性"打开一个独立的模态属性子窗口(常规 / 驱动程序 / 详细信息 / 事件 / 资源),版式完全对齐 Win11。所有信息来自内核在启动期归一化的 设备表,应用本身不扫硬件。

状态:随 M12 生效 适用范围:内核 kernel/devtab.{h,c}、kernel/sysinfo.{h,c}、kernel/usb.{h,c} 窗口管理器 wm/novus-wm/nwm.c 与 apps/src/wm.rs 应用 apps/src/devmgr/{mod,tree,props,fields}.rs、apps/src/bin/devmgmt.rs

1. 入口

设备管理器可从四个入口启动,全部走 apps_launch() 按名字解析(devmgmt):

  1. 桌面右侧磁贴(与文件管理器/任务管理器/设置/网络/终端/安装并列,常驻);
  2. 底部任务栏固定图标(含运行时强调色指示圆点);
  3. 开始菜单"设备管理器"按钮;
  4. nsh 终端直接输入 devmgmt。

kernel/session.c 的 desktop_app() 白名单与 apps.c 应用表都已登记,未登录时 apps_launch() 同样拒绝普通桌面应用。设置面板的"应用"页也把它列入"可启动" (固定顺序:文件管理器/任务管理器/设置/设备管理器)。

2. 架构

kernel/devtab.c  ── 启动期建表(PCI 缓存 + blkdev/net/display/CPU/ACPI/USB/IOAPIC/PS2)
        │  devtab_count / devtab_at / devtab_field_count / devtab_field_at
kernel/sysinfo.c ── REQ_DEVLIST(0x031B) / REQ_DEVFIELD(0x031D),128 B 分页
        │  IPC
apps/src/sinfo.rs ── devices() / dev_fields()
apps/src/devmgr/*  ── 主窗 + 设备树 + 模态属性窗
        │  wm::Win::create_ex(..., NWM_F_CREATE_MODAL) / next_event_any()
wm/novus-wm/nwm.c ── 120/160 显示列表预算、10 窗口、模态输入隔离

设计要点:

3. 协议契约

设备树节点(sysinfo_dev_t,40 B,3 条/包 = 4 + 120):

字段 类型 说明
parent u16 父类别节点下标,0xFFFF 表示根
class_id u8 DEV_CAT_*(计算机/处理器/固件/显示/磁盘/存储控制器/网络/USB/输入/系统设备/未知)
status u8 DEV_STATUS_OK / DEV_STATUS_WARN(无驱动或未知设备)
kind u8 DEV_KIND_*(CPU/PCI/显卡/监视器/磁盘/网卡/USB 控制器/USB 设备/输入/系统/固件…)
idx u8 在所属子系统表中的下标(取 BAR/事件/扇区用)
flags u8 DEV_FLAG_REMOVABLE / DEV_FLAG_NODRV 等
name char[32] UTF-8 名称

属性字段(sysinfo_devfield_t,60 B,2 条/包 = 4 + 120):

字段 类型 说明
key u8 DEV_F_*(制造商/位置/容量/MAC/链路/硬件 ID/状态/问题代码/内存范围/I/O 范围/IRQ/…)
group u8 事件行号或 BAR 序号(同一键多值时区分)
value char[56] UTF-8 值,过长截断

分页范式沿用 sysinfo_list_t:total 是整表/整 tab 数量,index 是起始项, n 是本次实际返回;客户端 index += n 直到到顶。

4. 主窗口

客户区 820×540,标题"设备管理器",10 px 圆角 + 柔影,浅色主体。

键盘:↑/↓ 移动选中、Enter 打开属性、F5 刷新(重建设备表并关闭已开属性窗)、 Esc 取消菜单/浮层。

5. 模态属性窗口

客户区 520×600,标题"设备属性",比主窗更高层级,打开时主窗不收输入。

只读边界:更新/回退/禁用/卸载等破坏性操作不做真实驱动变更,点击后仅在对话框内 显示说明行,界面完整、系统不损坏。

6. 窗口管理器支撑

7. 主题与双语

全部界面由 WM 图元(圆角填充/描边/文本)绘制,图标为程序化色块字形,不使用位图。 颜色随系统浅/深色与强调色联动(ui::init / ui::poll 监听主题版本);标签中英双语 (ui::l(zh, en) 内联,未走 lang 字典)。

8. 构建与验证


Revision #3
Created 2026-10-31 11:03:15 UTC by Admin
Updated 2026-10-31 11:05:57 UTC by Admin