Skip to content

驱动错误码说明 - DriverErrorCodes

概述

DriverTestEnableVtDriverProtectFileTestDriver 以及多数驱动内核操作接口(如 LoadDriver / UnloadDriverHideProcess / ProtectProcess*ProtectFile*VipProtect*VtFakeWrite* / VtUnFakeMemory*KeOpenProcess / KeOpenThread 等)失败时,接口返回值即为错误码(与 GetLastError() 一致,可再配合 GetLastErrorString())。

底层驱动通讯(读/写/分配/注入/模块/线程/AsmCall 驱动执行路径等)均已统一经 MapOlDriverStatusToApiResult / MapVtCommandResultToApiResult 映射;失败时日志会输出 status=0x... code=...

Inject / InjectFromUrl / InjectFromBuffertype=2/3/4(驱动注入) 失败时同样返回本页驱动 Status;用户态注入失败则返回负数应用错误码(如 -4033)。GetLastError

内存写入类接口(WriteData / WriteInt / WriteFloat / WriteDouble / WriteString 及其 Addr 变体、VirtualFreeEx 等)在 MemoryMode≥2(驱动读写) 失败时,也会返回本页驱动 Status(如 0xE000300D 读写失败)。读取类接口失败时返回空/0,但可通过 OLAGetLastError() 取到同一套驱动错误码。

AsmCall 在 type=1/3/5 等走驱动执行路径失败时,返回负数应用错误码 -5022ASM_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
十六进制 Status0xC0E90002
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)十六进制常量名说明
3001DRIVER_VERSION_NOT_SUPPORTED驱动版本不支持

驱动通讯与内存(0xE000300x)

十进制(int32)十进制(uint32)十六进制常量名说明
-53685862337581086730xE0003001DRIVER_NO_PDBPDB 解析失败
-53685862237581086740xE0003002DRIVER_NO_OPEN打开进程失败
-53685862137581086750xE0003003DRIVER_NO_HANDLE无效句柄
-53685862037581086760xE0003004DRIVER_NO_MEMORY_TYPE读写类型错误
-53685861937581086770xE0003005DRIVER_NO_ADDRESS地址错误
-53685861837581086780xE0003006DRIVER_NO_ADDRESS_SIZE超出范围
-53685861737581086790xE0003007DRIVER_NO_QUERMEMORY查询内存失败
-53685861637581086800xE0003008DRIVER_NO_ALLOCATE_MEMORY申请内存失败
-53685861537581086810xE0003009DRIVER_NO_OUTBUFF返回参数错误
-53685861437581086820xE000300ADRIVER_NO_MAIN_THREAD获取主线程失败
-53685861237581086840xE000300CDRIVER_NO_MODELE_ADDRESS获取模块地址失败
-53685861137581086850xE000300DDRIVER_NO_READ_WRITE读写失败
-53685861037581086860xE000300EDRIVER_NO_GETFUNC获取函数失败
-53685860937581086870xE000300FDRIVER_NO_VERSION请更新驱动版本

VT / EPT / 保护 / 注入 / 通讯(0xE000301x–0xE000302x)

EnableVtDriver、VT 伪写相关接口常见下列错误:

十进制(int32)十进制(uint32)十六进制常量名说明
-53685860837581086880xE0003010OL_ERROR_VT_NOT_SUPPORTEDCPU 不支持 VT-x 虚拟化
-53685860737581086890xE0003011OL_ERROR_VT_DISABLEDVT-x 已被 BIOS 禁用
-53685860637581086900xE0003012OL_ERROR_VT_ALREADY_ENABLEDVT 已经启用(重复开启)
-53685860537581086910xE0003013OL_ERROR_VT_ENABLE_FAILEDVT 开启失败
-53685860437581086920xE0003014OL_ERROR_VT_NOT_ENABLEDVT 未启用
-53685860337581086930xE0003015OL_ERROR_EPT_NOT_SUPPORTEDCPU 不支持 EPT
-53685860237581086940xE0003016OL_ERROR_EPT_INIT_FAILEDEPT 初始化失败
-53685860137581086950xE0003017OL_ERROR_EPT_HOOK_FAILEDEPT Hook 安装失败
-53685860037581086960xE0003018OL_ERROR_EPT_UNHOOK_FAILEDEPT Hook 卸载失败
-53685859937581086970xE0003019OL_ERROR_EPT_HOOK_EXISTSEPT Hook 已存在(重复安装)
-53685859837581086980xE000301AOL_ERROR_EPT_HOOK_NOT_FOUNDEPT Hook 未找到(卸载时不存在)
-53685859737581086990xE000301BOL_ERROR_EPT_PAGE_ALLOC_FAILEDEPT 伪页分配失败
-53685859637581087000xE000301COL_ERROR_EPT_CROSS_PAGEEPT Hook 跨页错误
-53685859537581087010xE000301DOL_ERROR_PROTECT_ADD_FAILED添加进程保护失败
-53685859437581087020xE000301EOL_ERROR_PROTECT_REMOVE_FAILED移除进程保护失败
-53685859337581087030xE000301FOL_ERROR_PROTECT_EXISTS进程已在保护列表中
-53685859237581087040xE0003020OL_ERROR_PROTECT_NOT_FOUND进程不在保护列表中
-53685859137581087050xE0003021OL_ERROR_PROTECT_NO_POWER未指定保护权限
-53685859037581087060xE0003022OL_ERROR_INJECT_FAILEDDLL 注入失败
-53685858937581087070xE0003023OL_ERROR_INJECT_NO_PROCESS目标进程不存在
-53685858837581087080xE0003024OL_ERROR_INJECT_NO_DLLDLL 路径无效
-53685858737581087090xE0003025OL_ERROR_COMM_DECRYPT_FAILED通讯数据解密失败
-53685858637581087100xE0003026OL_ERROR_COMM_INVALID_SIZE通讯数据大小不匹配
-53685858537581087110xE0003027OL_ERROR_COMM_INVALID_CMD无效的命令码
-53685858437581087120xE0003028OL_ERROR_COMM_WRITEBACK_FAILED结果回写失败
-53685858337581087130xE0003029OL_ERROR_KEYMOUSE_NOT_INIT键鼠设备未初始化
-53685858237581087140xE000302AOL_ERROR_KEYMOUSE_SEND_FAILED键鼠输入发送失败

驱动加载 NTSTATUS(0xC000xxxx / 0xC0E9xxxx)

LoadDriver / LoadDriverFromMemoryNtLoadDriver)失败,以及键鼠等接口在驱动未加载成功时透传的上次加载失败码,常见下列 Status:

十进制(int32)十进制(uint32)十六进制常量名说明
-107374182332212254730xC0000001DRIVER_UNSUCCESSFUL驱动加载失败,无法具体定位原因
-107374179032212255060xC0000022DRIVER_ACCESS_DENIED权限不足,通常需要管理员或 SYSTEM 权限
-107374177232212255240xC0000034DRIVER_OBJECT_NAME_NOT_FOUND注册表路径不存在
-107374177132212255250xC0000035DRIVER_OBJECT_NAME_COLLISION注册表项或对象名冲突
-107374176632212255300xC000003ADRIVER_OBJECT_PATH_NOT_FOUND注册表路径无效
-107374172732212255690xC0000061DRIVER_PRIVILEGE_NOT_HELD缺少 SeLoadDriverPrivilege 权限
-107374170132212255950xC000007BDRIVER_INVALID_IMAGE_FORMAT驱动文件格式不正确(如 32/64 位不匹配)
-107374167032212256260xC000009ADRIVER_INSUFFICIENT_RESOURCES系统资源不足
-107374121032212260860xC0000266DRIVER_INTERNAL_ERROR驱动初始化失败,DriverEntry 出错
-105847193432364953620xC0E90002DRIVER_SYSTEM_INTEGRITY_POLICY_VIOLATION系统完整性策略拦截(STATUS_SYSTEM_INTEGRITY_POLICY_VIOLATION):HVCI/内存完整性、Smart App Control、驱动签名/代码完整性策略等阻止加载

文件保护驱动 ProtectFile(0xDFDFD00x)

ProtectFileTestDriver 失败时常见下列错误:

十进制(int32)十进制(uint32)十六进制常量名说明
-53898035137559869450xDFDFD001DRIVER_PF_ERROR_ERROR未知错误
-53898035037559869460xDFDFD002DRIVER_PF_ERROR_NO_OPEN打开进程失败
-53898034937559869470xDFDFD003DRIVER_PF_ERROR_NO_HANDLE无效句柄
-53898034837559869480xDFDFD004DRIVER_PF_ERROR_INVALID_PARAM参数错误
-53898034737559869490xDFDFD005DRIVER_PF_ERROR_PATH_TOO_LONG路径过长

相关接口

接口说明
EnableVtDriver启用/禁用 VT;失败返回上表错误码。
DriverTest普通驱动或已启用 VT 时的通讯自检。
ProtectFileTestDriver文件保护驱动通讯自检;常见 -53898035x
键鼠接口(LeftDown / KeyDown / MoveTo 等,SimModeType=4失败透传驱动 Status;亦可能返回 -6001 等应用层错误。
GetLastError读取最后一次错误码(十进制 int32)。
GetLastErrorString读取中文说明(用完后 FreeStringPtr)。