主题
驱动错误码说明 - DriverErrorCodes
概述
DriverTest、EnableVtDriver、ProtectFileTestDriver 以及多数驱动内核操作接口(如 LoadDriver / UnloadDriver、HideProcess / ProtectProcess*、ProtectFile*、VipProtect*、VtFakeWrite* / VtUnFakeMemory*、KeOpenProcess / KeOpenThread 等)失败时,接口返回值即为错误码(与 GetLastError() 一致,可再配合 GetLastErrorString())。
底层驱动通讯(读/写/分配/注入/模块/线程/AsmCall 驱动执行路径等)均已统一经 MapOlDriverStatusToApiResult / MapVtCommandResultToApiResult 映射;失败时日志会输出 status=0x... code=...。
Inject / InjectFromUrl / InjectFromBuffer 在 type=2/3/4(驱动注入) 失败时同样返回本页驱动 Status;用户态注入失败则返回负数应用错误码(如 -4033)。GetLastError
内存写入类接口(WriteData / WriteInt / WriteFloat / WriteDouble / WriteString 及其 Addr 变体、VirtualFreeEx 等)在 MemoryMode≥2(驱动读写) 失败时,也会返回本页驱动 Status(如 0xE000300D 读写失败)。读取类接口失败时返回空/0,但可通过 OLAGetLastError() 取到同一套驱动错误码。
AsmCall 在 type=1/3/5 等走驱动执行路径失败时,返回负数应用错误码 -5022(ASM_DRIVER_CALL_FAILED),同时 OLAGetLastError() 可保留底层驱动 Status。
当 SimModeType=4(欧拉键鼠驱动)时,键鼠接口(如 LeftDown / KeyDown / MoveTo 等)失败同样返回驱动错误码:除 OL_ERROR_KEYMOUSE_NOT_INIT / OL_ERROR_KEYMOUSE_SEND_FAILED 外,也可能返回通讯失败或驱动加载失败 NTSTATUS(如 0xC0E90002)等(见本页完整码表)。非驱动场景另有应用层错误码 KEYMOUSE_BACKEND_UNAVAILABLE(-6001)等。
查询类接口(如 ProtectFileQueryWhitelist):通讯成功时仍返回 1/0 表示“在/不在名单”;仅通讯失败时返回错误码。
十进制怎么读(重要)
驱动 Status 在插件内以 有符号 int32 返回(位型不变,高位为 1 时显示为负数)。
系统计算器 / 在线工具把十六进制转「十进制」时,常按 无符号 uint32 显示(正数)。两者是同一组 32 位,不是两套错误码:
| 含义 | 0xC0E90002 示例 |
|---|---|
接口返回 / 日志里的 int(int32) | -1058471934 |
| 计算器无符号十进制(uint32) | 3236495362 |
| 十六进制 Status | 0xC0E90002 |
csharp
int ret = ola.KeyPress(65); // 例如 -1058471934
uint status = unchecked((uint)ret); // 3236495362
string hex = status.ToString("X8"); // "C0E90002"cpp
int32_t ret = KeyPress(instance, 65); // 例如 -1058471934
uint32_t status = static_cast<uint32_t>(ret); // 0xC0E90002快速查表
拿到接口返回的 ret,在本页 Ctrl+F 搜索该有符号十进制(如 -1058471934);或先转成十六进制再搜 0xC0E90002。
cppGetLastError
int ret = ola.EnableVtDriver(1);
if (ret != 1) {
// ret 即错误码,例如 -536858608 对应 0xE0003010(CPU 不支持 VT-x)
int err = OLAGetLastError();
char* msg = (char*)GetLastErrorString();
FreeStringPtr((int64_t)msg);
}通用返回值
| 十进制(int32) | 十六进制 | 说明 |
|---|---|---|
1 | — | 成功。 |
0 | — | 权限不足、通讯失败或未拿到驱动 Status。 |
-3 | — | 仅 DriverTest(普通欧拉驱动):驱动版本不支持;亦可对照 3001。 |
| 其他负数 | 见下表 | 驱动 Status / 错误码(与 uint32 / 十六进制同一位型)。 |
版本(30xx)
| 十进制(int32) | 十六进制 | 常量名 | 说明 |
|---|---|---|---|
3001 | — | DRIVER_VERSION_NOT_SUPPORTED | 驱动版本不支持 |
驱动通讯与内存(0xE000300x)
| 十进制(int32) | 十进制(uint32) | 十六进制 | 常量名 | 说明 |
|---|---|---|---|---|
-536858623 | 3758108673 | 0xE0003001 | DRIVER_NO_PDB | PDB 解析失败 |
-536858622 | 3758108674 | 0xE0003002 | DRIVER_NO_OPEN | 打开进程失败 |
-536858621 | 3758108675 | 0xE0003003 | DRIVER_NO_HANDLE | 无效句柄 |
-536858620 | 3758108676 | 0xE0003004 | DRIVER_NO_MEMORY_TYPE | 读写类型错误 |
-536858619 | 3758108677 | 0xE0003005 | DRIVER_NO_ADDRESS | 地址错误 |
-536858618 | 3758108678 | 0xE0003006 | DRIVER_NO_ADDRESS_SIZE | 超出范围 |
-536858617 | 3758108679 | 0xE0003007 | DRIVER_NO_QUERMEMORY | 查询内存失败 |
-536858616 | 3758108680 | 0xE0003008 | DRIVER_NO_ALLOCATE_MEMORY | 申请内存失败 |
-536858615 | 3758108681 | 0xE0003009 | DRIVER_NO_OUTBUFF | 返回参数错误 |
-536858614 | 3758108682 | 0xE000300A | DRIVER_NO_MAIN_THREAD | 获取主线程失败 |
-536858612 | 3758108684 | 0xE000300C | DRIVER_NO_MODELE_ADDRESS | 获取模块地址失败 |
-536858611 | 3758108685 | 0xE000300D | DRIVER_NO_READ_WRITE | 读写失败 |
-536858610 | 3758108686 | 0xE000300E | DRIVER_NO_GETFUNC | 获取函数失败 |
-536858609 | 3758108687 | 0xE000300F | DRIVER_NO_VERSION | 请更新驱动版本 |
VT / EPT / 保护 / 注入 / 通讯(0xE000301x–0xE000302x)
EnableVtDriver、VT 伪写相关接口常见下列错误:
| 十进制(int32) | 十进制(uint32) | 十六进制 | 常量名 | 说明 |
|---|---|---|---|---|
-536858608 | 3758108688 | 0xE0003010 | OL_ERROR_VT_NOT_SUPPORTED | CPU 不支持 VT-x 虚拟化 |
-536858607 | 3758108689 | 0xE0003011 | OL_ERROR_VT_DISABLED | VT-x 已被 BIOS 禁用 |
-536858606 | 3758108690 | 0xE0003012 | OL_ERROR_VT_ALREADY_ENABLED | VT 已经启用(重复开启) |
-536858605 | 3758108691 | 0xE0003013 | OL_ERROR_VT_ENABLE_FAILED | VT 开启失败 |
-536858604 | 3758108692 | 0xE0003014 | OL_ERROR_VT_NOT_ENABLED | VT 未启用 |
-536858603 | 3758108693 | 0xE0003015 | OL_ERROR_EPT_NOT_SUPPORTED | CPU 不支持 EPT |
-536858602 | 3758108694 | 0xE0003016 | OL_ERROR_EPT_INIT_FAILED | EPT 初始化失败 |
-536858601 | 3758108695 | 0xE0003017 | OL_ERROR_EPT_HOOK_FAILED | EPT Hook 安装失败 |
-536858600 | 3758108696 | 0xE0003018 | OL_ERROR_EPT_UNHOOK_FAILED | EPT Hook 卸载失败 |
-536858599 | 3758108697 | 0xE0003019 | OL_ERROR_EPT_HOOK_EXISTS | EPT Hook 已存在(重复安装) |
-536858598 | 3758108698 | 0xE000301A | OL_ERROR_EPT_HOOK_NOT_FOUND | EPT Hook 未找到(卸载时不存在) |
-536858597 | 3758108699 | 0xE000301B | OL_ERROR_EPT_PAGE_ALLOC_FAILED | EPT 伪页分配失败 |
-536858596 | 3758108700 | 0xE000301C | OL_ERROR_EPT_CROSS_PAGE | EPT Hook 跨页错误 |
-536858595 | 3758108701 | 0xE000301D | OL_ERROR_PROTECT_ADD_FAILED | 添加进程保护失败 |
-536858594 | 3758108702 | 0xE000301E | OL_ERROR_PROTECT_REMOVE_FAILED | 移除进程保护失败 |
-536858593 | 3758108703 | 0xE000301F | OL_ERROR_PROTECT_EXISTS | 进程已在保护列表中 |
-536858592 | 3758108704 | 0xE0003020 | OL_ERROR_PROTECT_NOT_FOUND | 进程不在保护列表中 |
-536858591 | 3758108705 | 0xE0003021 | OL_ERROR_PROTECT_NO_POWER | 未指定保护权限 |
-536858590 | 3758108706 | 0xE0003022 | OL_ERROR_INJECT_FAILED | DLL 注入失败 |
-536858589 | 3758108707 | 0xE0003023 | OL_ERROR_INJECT_NO_PROCESS | 目标进程不存在 |
-536858588 | 3758108708 | 0xE0003024 | OL_ERROR_INJECT_NO_DLL | DLL 路径无效 |
-536858587 | 3758108709 | 0xE0003025 | OL_ERROR_COMM_DECRYPT_FAILED | 通讯数据解密失败 |
-536858586 | 3758108710 | 0xE0003026 | OL_ERROR_COMM_INVALID_SIZE | 通讯数据大小不匹配 |
-536858585 | 3758108711 | 0xE0003027 | OL_ERROR_COMM_INVALID_CMD | 无效的命令码 |
-536858584 | 3758108712 | 0xE0003028 | OL_ERROR_COMM_WRITEBACK_FAILED | 结果回写失败 |
-536858583 | 3758108713 | 0xE0003029 | OL_ERROR_KEYMOUSE_NOT_INIT | 键鼠设备未初始化 |
-536858582 | 3758108714 | 0xE000302A | OL_ERROR_KEYMOUSE_SEND_FAILED | 键鼠输入发送失败 |
驱动加载 NTSTATUS(0xC000xxxx / 0xC0E9xxxx)
LoadDriver / LoadDriverFromMemory(NtLoadDriver)失败,以及键鼠等接口在驱动未加载成功时透传的上次加载失败码,常见下列 Status:
| 十进制(int32) | 十进制(uint32) | 十六进制 | 常量名 | 说明 |
|---|---|---|---|---|
-1073741823 | 3221225473 | 0xC0000001 | DRIVER_UNSUCCESSFUL | 驱动加载失败,无法具体定位原因 |
-1073741790 | 3221225506 | 0xC0000022 | DRIVER_ACCESS_DENIED | 权限不足,通常需要管理员或 SYSTEM 权限 |
-1073741772 | 3221225524 | 0xC0000034 | DRIVER_OBJECT_NAME_NOT_FOUND | 注册表路径不存在 |
-1073741771 | 3221225525 | 0xC0000035 | DRIVER_OBJECT_NAME_COLLISION | 注册表项或对象名冲突 |
-1073741766 | 3221225530 | 0xC000003A | DRIVER_OBJECT_PATH_NOT_FOUND | 注册表路径无效 |
-1073741727 | 3221225569 | 0xC0000061 | DRIVER_PRIVILEGE_NOT_HELD | 缺少 SeLoadDriverPrivilege 权限 |
-1073741701 | 3221225595 | 0xC000007B | DRIVER_INVALID_IMAGE_FORMAT | 驱动文件格式不正确(如 32/64 位不匹配) |
-1073741670 | 3221225626 | 0xC000009A | DRIVER_INSUFFICIENT_RESOURCES | 系统资源不足 |
-1073741210 | 3221226086 | 0xC0000266 | DRIVER_INTERNAL_ERROR | 驱动初始化失败,DriverEntry 出错 |
-1058471934 | 3236495362 | 0xC0E90002 | DRIVER_SYSTEM_INTEGRITY_POLICY_VIOLATION | 系统完整性策略拦截(STATUS_SYSTEM_INTEGRITY_POLICY_VIOLATION):HVCI/内存完整性、Smart App Control、驱动签名/代码完整性策略等阻止加载 |
文件保护驱动 ProtectFile(0xDFDFD00x)
ProtectFileTestDriver 失败时常见下列错误:
| 十进制(int32) | 十进制(uint32) | 十六进制 | 常量名 | 说明 |
|---|---|---|---|---|
-538980351 | 3755986945 | 0xDFDFD001 | DRIVER_PF_ERROR_ERROR | 未知错误 |
-538980350 | 3755986946 | 0xDFDFD002 | DRIVER_PF_ERROR_NO_OPEN | 打开进程失败 |
-538980349 | 3755986947 | 0xDFDFD003 | DRIVER_PF_ERROR_NO_HANDLE | 无效句柄 |
-538980348 | 3755986948 | 0xDFDFD004 | DRIVER_PF_ERROR_INVALID_PARAM | 参数错误 |
-538980347 | 3755986949 | 0xDFDFD005 | DRIVER_PF_ERROR_PATH_TOO_LONG | 路径过长 |
相关接口
| 接口 | 说明 |
|---|---|
| EnableVtDriver | 启用/禁用 VT;失败返回上表错误码。 |
| DriverTest | 普通驱动或已启用 VT 时的通讯自检。 |
| ProtectFileTestDriver | 文件保护驱动通讯自检;常见 -53898035x。 |
键鼠接口(LeftDown / KeyDown / MoveTo 等,SimModeType=4) | 失败透传驱动 Status;亦可能返回 -6001 等应用层错误。 |
| GetLastError | 读取最后一次错误码(十进制 int32)。 |
| GetLastErrorString | 读取中文说明(用完后 FreeStringPtr)。 |
