Skip to main content

wslcsdk_sys/
errors.rs

1//! Microsoft.WSL.Containers 3.0.1 错误码定义
2//!
3//! 官方定义基址为 WSLC_E_BASE = 0x0600,采用 Windows ITF 设施的 HRESULT 格式。
4
5use windows_sys::core::HRESULT;
6
7/// WSLC 基础错误偏移码 (0x0600)
8pub const WSLC_E_BASE: u32 = 0x0600;
9
10/// 构造 FACILITY_ITF 类型的 HRESULT
11const fn make_hresult(code: u32) -> HRESULT {
12    // SEVERITY_ERROR (1) | FACILITY_ITF (4) << 16 | code
13    (0x8004_0000 | code) as HRESULT
14}
15
16/// 镜像未找到 (0x80040601)
17pub const WSLC_E_IMAGE_NOT_FOUND: HRESULT = make_hresult(WSLC_E_BASE + 1);
18
19/// 容器 ID 前缀存在歧义,匹配到多个容器 (0x80040602)
20pub const WSLC_E_CONTAINER_PREFIX_AMBIGUOUS: HRESULT = make_hresult(WSLC_E_BASE + 2);
21
22/// 容器未找到 (0x80040603)
23pub const WSLC_E_CONTAINER_NOT_FOUND: HRESULT = make_hresult(WSLC_E_BASE + 3);
24
25/// 卷未找到 (0x80040604)
26pub const WSLC_E_VOLUME_NOT_FOUND: HRESULT = make_hresult(WSLC_E_BASE + 4);
27
28/// 容器当前未处于运行状态 (0x80040605)
29pub const WSLC_E_CONTAINER_NOT_RUNNING: HRESULT = make_hresult(WSLC_E_BASE + 5);
30
31/// 容器已处于运行状态 (0x80040606)
32pub const WSLC_E_CONTAINER_IS_RUNNING: HRESULT = make_hresult(WSLC_E_BASE + 6);
33
34/// 会话名称属于系统保留名称,不可使用 (0x80040607)
35pub const WSLC_E_SESSION_RESERVED: HRESULT = make_hresult(WSLC_E_BASE + 7);
36
37/// 会话名称格式不合法 (0x80040608)
38pub const WSLC_E_INVALID_SESSION_NAME: HRESULT = make_hresult(WSLC_E_BASE + 8);
39
40/// 网络未找到 (0x80040609)
41pub const WSLC_E_NETWORK_NOT_FOUND: HRESULT = make_hresult(WSLC_E_BASE + 9);
42
43/// Windows Update 搜索依赖组件失败 (0x8004060A)
44pub const WSLC_E_WU_SEARCH_FAILED: HRESULT = make_hresult(WSLC_E_BASE + 10);
45
46/// SDK 版本落后,需要更新 (0x8004060B)
47pub const WSLC_E_SDK_UPDATE_NEEDED: HRESULT = make_hresult(WSLC_E_BASE + 11);
48
49/// 容器功能被系统或安全策略禁用 (0x8004060C)
50pub const WSLC_E_CONTAINER_DISABLED: HRESULT = make_hresult(WSLC_E_BASE + 12);
51
52/// 镜像仓库访问被安全策略拦截 (0x8004060D)
53pub const WSLC_E_REGISTRY_BLOCKED_BY_POLICY: HRESULT = make_hresult(WSLC_E_BASE + 13);
54
55/// 存储卷当前不可用或被独占占用 (0x8004060E)
56pub const WSLC_E_VOLUME_NOT_AVAILABLE: HRESULT = make_hresult(WSLC_E_BASE + 14);
57
58/// 会话未找到 (0x8004060F)
59pub const WSLC_E_SESSION_NOT_FOUND: HRESULT = make_hresult(WSLC_E_BASE + 15);
60
61/// WSL 虚拟机未在运行 (0x80040610)
62pub const WSLC_E_VM_NOT_RUNNING: HRESULT = make_hresult(WSLC_E_BASE + 16);
63
64/// 事件队列溢出,部分事件已丢失 (0x80040611)
65pub const WSLC_E_EVENTS_LOST: HRESULT = make_hresult(WSLC_E_BASE + 17);
66
67/// 事件流已传输完毕 (0x80040612)
68pub const WSLC_E_EVENT_STREAM_FINISHED: HRESULT = make_hresult(WSLC_E_BASE + 18);
69
70/// 容器已被删除 (0x80040613)
71pub const WSLC_E_CONTAINER_DELETED: HRESULT = make_hresult(WSLC_E_BASE + 19);