主题
获取最后一次错误字符串 - GetLastErrorString
函数简介
获取插件内部记录的最后一次错误描述字符串,通常在某个接口调用失败后配合 GetLastError 一起使用。
接口名称
GetLastErrorStringDLL调用
c
long GetLastErrorString();参数说明
此函数无参数。
示例
SDK 调用
cpp
#include "OLAPlugServer.h"
OLAPlugServer ola;
std::string result = ola.GetLastErrorString();csharp
using OLAPlug;
var ola = new OLAPlugServer();
string result = ola.GetLastErrorString();python
from OLAPlugServer import OLAPlugServer
ola = OLAPlugServer()
result = ola.GetLastErrorString()java
import com.olaplug.OLAPlugServer;
OLAPlugServer ola = new OLAPlugServer();
String result = ola.GetLastErrorString();go
import "github.com/ola/olaplug/olaplug"
ola, _ := olaplug.NewOLAPlugServer("OLAPlug_x64.dll")
defer ola.ReleaseObj()
result := ola.GetLastErrorString()rust
use olaplug::OLAPlugServer;
let ola = OLAPlugServer::new("OLAPlug_x64.dll").unwrap();
let result = ola.get_last_error_string();cpp
var ola = com("OlaPlug.OlaSoft")
var result = ola.GetLastErrorString()vbscript
Set ola = CreateObject("OlaPlug.OlaSoft")
result = ola.GetLastErrorString()text
.局部变量 ola, OLAPlug
ola.创建 ()
result = ola.GetLastErrorString()aardio
import OLAPlugServer;
var ola = OLAPlugServer();
var result = ola.GetLastErrorString();text
变量 ola <类型 = OLAPlugServer>
ola = 新建 OLAPlugServer
文本型 result = ola.GetLastErrorString()cpp
#include "OLAPlugServer.h"
OLAPlugServer ola;
std::string result = ola.GetLastErrorString();原生 DLL 调用
cpp
long ptr = GetLastErrorString(instance);
if (ptr != 0) {
char buffer[512] = {0};
GetStringFromPtr(ptr, buffer, sizeof(buffer));
FreeStringPtr(ptr);
}csharp
using System.Runtime.InteropServices;
using System.Text;
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int GetStringFromPtr(long ptr, StringBuilder lpString, int size);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int FreeStringPtr(long ptr);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int GetStringSize(long ptr);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern long GetLastErrorString();
long ptr = GetLastErrorString(instance);
if (ptr != 0) {
StringBuilder sb = new StringBuilder(GetStringSize(ptr) + 1);
GetStringFromPtr(ptr, sb, sb.Capacity);
FreeStringPtr(ptr);
string result = sb.ToString();
}python
from ctypes import CDLL, c_int, c_int64, create_string_buffer
ola = CDLL("OLAPlug_x64.dll")
ola.CreateCOLAPlugInterFace.restype = c_int64
ptr = ola.GetLastErrorString(instance)
if ptr:
buf = create_string_buffer(512)
ola.GetStringFromPtr(ptr, buf, 512)
ola.FreeStringPtr(ptr)
result = buf.value.decode("utf-8")返回值
| 返回值 | 说明 |
|---|---|
| (返回值) | 长整数型:成功返回错误字符串的指针地址,失败或无错误信息返回0。 |
下表为各错误码对应的默认中文描述(与 GetLastError() 对照)。多数错误在有附加详情时会在基本文案后追加 (详情);AUTHORIZATION_FAILED(1005)和 UNKNOWN_ERROR(9999)有详情时会整段替换为后端/内部 Message。错误码完整索引见 GetLastError。
系统性错误(10xx)
| 错误码 | 常量名 | GetLastErrorString |
|---|---|---|
0 | SUCCESS | 操作成功 |
1001 | PERMISSION_DENIED | 权限不足,请检查FeatureList权限配置 |
1002 | NOT_AUTHORIZED | 未授权,请先登录 |
1003 | INVALID_ARGUMENT | 参数错误 |
1004 | VMWARE_PERMISSION_DENIED | VMware权限不足 |
1005 | AUTHORIZATION_FAILED | 授权失败(有后端详情时返回后端 Message) |
图像类错误(20xx)
| 错误码 | 常量名 | GetLastErrorString |
|---|---|---|
2001 | CAPTURE_ERROR | 截图失败 |
2002 | LOAD_IMAGE_ERROR | 加载图片失败 |
2003 | HWND_NOT_VALID | 窗口句柄无效 |
2004 | INVALID_HEX_COLOR_CODE | 无效的十六进制颜色代码 |
BindWindow / BindWindowEx 错误(40xx)
| 错误码 | 常量名 | GetLastErrorString |
|---|---|---|
4001 | BIND_INVALID_HWND | 绑定失败:窗口句柄无效或窗口已销毁 |
4002 | BIND_GET_PID_FAILED | 绑定失败:无法获取窗口所属进程 ID |
4003 | BIND_INVALID_MODE | 绑定失败:display/mouse/keypad 模式参数无效 |
4004 | BIND_NOT_ELEVATED | 绑定失败:当前进程未以管理员权限运行 |
4010 | BIND_VNC_CONNECT_FAILED | 绑定失败:VNC 中间件连接获取失败 |
4011 | BIND_RDP_CONNECT_FAILED | 绑定失败:RDP 中间件连接获取失败 |
4012 | BIND_VNC_INVALID_CONFIG | 绑定失败:VNC 配置无效(VncServer 为空或 VncPort 非法) |
4013 | BIND_VNC_PORT_UNAVAILABLE | 绑定失败:VNC 端口不可达(检查地址、端口与防火墙) |
4014 | BIND_VNC_PROTOCOL_INVALID | 绑定失败:目标端口不是 VNC/RFB 协议 |
4015 | BIND_VNC_AUTH_FAILED | 绑定失败:VNC 认证失败(检查 VncPassword) |
4016 | BIND_VNC_INIT_FAILED | 绑定失败:VNC 客户端初始化或握手失败 |
4017 | BIND_VNC_CONNECT_TIMEOUT | 绑定失败:等待 VNC 连接建立超时 |
4020 | BIND_SHM_CREATE_FAILED | 绑定失败:创建/打开 Hook 共享内存失败 |
4021 | BIND_HOOK_UNLOAD_BUSY | 绑定失败:目标进程 Hook 仍在卸载中,请稍后重试 |
4022 | BIND_MUTEX_CREATE_FAILED | 绑定失败:创建绑定互斥量失败 |
4023 | BIND_MUTEX_LOCK_TIMEOUT | 绑定失败:获取绑定互斥量超时(可能有其他实例正在绑定同一窗口) |
4024 | BIND_HEARTBEAT_CONFIG_FAILED | 绑定失败:Hook 心跳/运行参数配置失败 |
4025 | BIND_DX3_IPC_PREP_FAILED | 绑定失败:DX3 截图 IPC 预初始化失败(沙箱/多开环境常见) |
4026 | BIND_AUTH_REQUIRED | 绑定失败:未授权或缺少有效登录票据,请先 Reg/Activate/Login |
4030 | BIND_INJECT_FAILED | 绑定失败:DLL 注入失败(详见日志) |
4031 | BIND_INJECT_MEMORY_LOAD_FAILED | 绑定失败:无痕内存注入失败(MemoryLoadInject) |
4032 | BIND_INJECT_REMOTE_EXE_FAILED | 绑定失败:RemoteExe 注入失败(inject-helper 启动或 LoadLibrary 失败,中文路径/Temp 目录请重点检查) |
4033 | BIND_INJECT_REMOTE_THREAD_FAILED | 绑定失败:远程线程注入失败(LoadLibraryA/W 返回空) |
4034 | BIND_INJECT_TEMP_DLL_WRITE_FAILED | 绑定失败:临时 Hook DLL 写入失败(检查 Temp 目录权限与中文路径) |
4035 | BIND_INJECT_HELPER_EXPORT_FAILED | 绑定失败:inject-helper 释出到 Temp 失败 |
4036 | BIND_INJECT_CREATE_PROCESS_FAILED | 绑定失败:CreateProcess 启动 inject-helper 失败 |
4037 | BIND_INJECT_DLL_NOT_FOUND | 绑定失败:Hook DLL 文件不存在(注入前校验失败) |
4038 | BIND_INJECT_DUP_MUTEX_BUSY | 绑定失败:目标进程仍存在 Hook 互斥量,拒绝重复注入 |
4039 | BIND_INJECT_TIMEOUT | 绑定失败:注入握手超时(isInjected/hookCompleted 未就绪) |
4040 | BIND_INJECT_BUILTIN_DLL_DECODE_FAILED | 绑定失败:内置 hook_graphics DLL 解码失败或为空 |
4041 | BIND_INJECT_HELPER_NOT_FOUND | 绑定失败:inject-helper 可执行文件不存在 |
4042 | BIND_INJECT_OPEN_PROCESS_FAILED | 绑定失败:OpenProcess 打开目标进程失败 |
4043 | BIND_INJECT_REFLECTIVE_FAILED | 绑定失败:无痕注入失败 |
4044 | BIND_INJECT_DRIVER_FAILED | 绑定失败:驱动注入失败 |
4050 | BIND_HOOK_INIT_TIMEOUT | 绑定失败:Hook 握手超时(hookCompleted 未置位) |
4099 | BIND_INTERNAL_EXCEPTION | 绑定失败:内部异常 |
完整说明与排查见 BindWindow 错误码说明。
AsmCall 错误(50xx)
| 错误码 | 常量名 | GetLastErrorString |
|---|---|---|
5001 | ASM_INVALID_HWND | AsmCall 失败:窗口句柄无效(远程执行需要有效 HWND) |
5002 | ASM_GET_PID_FAILED | AsmCall 失败:无法从窗口句柄获取进程 ID |
5003 | ASM_INVALID_TYPE | AsmCall 失败:type 参数无效(有效范围 0-6) |
5004 | ASM_EMPTY_INPUT | AsmCall 失败:汇编输入为空 |
5005 | ASM_ASSEMBLE_FAILED | AsmCall 失败:汇编编译失败 |
5006 | ASM_INVALID_MACHINE_CODE | AsmCall 失败:机器码格式无效 |
5007 | ASM_PARSE_MACHINE_CODE_FAILED | AsmCall 失败:机器码解析失败 |
5008 | ASM_EMPTY_USER_CODE | AsmCall 失败:生成的用户代码为空 |
5009 | ASM_ALLOC_MEMORY_FAILED | AsmCall 失败:分配可执行内存失败 |
5010 | ASM_ADDRESS_SPACE_INSUFFICIENT | AsmCall 失败:指定地址空间不足 |
5011 | ASM_REASSEMBLE_FAILED | AsmCall 失败:按实际地址重新汇编失败 |
5012 | ASM_CODE_SIZE_EXCEEDED | AsmCall 失败:重编译后代码超出可用空间 |
5013 | ASM_CODE_REGION_OVERLAP | AsmCall 失败:代码区与标志区重叠 |
5014 | ASM_RIP_OFFSET_OUT_OF_RANGE | AsmCall 失败:RIP 相对偏移超出有效范围 |
5015 | ASM_WRITE_MEMORY_FAILED | AsmCall 失败:写入目标进程内存失败 |
5016 | ASM_DEBUG_PRIVILEGE_FAILED | AsmCall 失败:无法启用调试权限 |
5017 | ASM_NULL_MEMORY_CLIENT | AsmCall 失败:内存客户端未初始化 |
5018 | ASM_INVALID_ENTRY_POINT | AsmCall 失败:执行入口地址无效 |
5019 | ASM_REMOTE_THREAD_FAILED | AsmCall 失败:创建远程线程失败 |
5020 | ASM_EVENT_CHANNEL_FAILED | AsmCall 失败:注入进程事件通道调用失败 |
5021 | ASM_MAIN_THREAD_CALL_FAILED | AsmCall 失败:主线程排队执行失败 |
5022 | ASM_DRIVER_CALL_FAILED | AsmCall 失败:驱动执行汇编失败 |
5023 | ASM_EXECUTION_TIMEOUT | AsmCall 失败:执行超时 |
5024 | ASM_READ_RETURN_VALUE_FAILED | AsmCall 失败:读取返回值失败 |
5098 | ASM_FAILED | AsmCall 失败(详见日志) |
5099 | ASM_INTERNAL_EXCEPTION | AsmCall 失败:内部异常 |
完整说明与排查见 AsmCall 错误码说明。
驱动内核错误(30xx / NTSTATUS / ProtectFile / VT)
驱动 Status 以有符号 int32 返回时,本接口返回对应中文说明。完整十进制/十六进制对照见 驱动错误码说明。
版本(30xx)
| 十进制(int32) | 常量名 | GetLastErrorString |
|---|---|---|
3001 | DRIVER_VERSION_NOT_SUPPORTED | 驱动版本不支持(插件与已加载驱动类型不匹配,请重启后加载匹配版本) |
驱动通讯与内存(0xE000300x)
| 十进制(int32) | 十六进制 | 常量名 | GetLastErrorString |
|---|---|---|---|
-536858623 | 0xE0003001 | DRIVER_NO_PDB | PDB解析失败 |
-536858622 | 0xE0003002 | DRIVER_NO_OPEN | 打开进程失败 |
-536858621 | 0xE0003003 | DRIVER_NO_HANDLE | 无效句柄 |
-536858620 | 0xE0003004 | DRIVER_NO_MEMORY_TYPE | 读写类型错误 |
-536858619 | 0xE0003005 | DRIVER_NO_ADDRESS | 地址错误 |
-536858618 | 0xE0003006 | DRIVER_NO_ADDRESS_SIZE | 超出范围 |
-536858617 | 0xE0003007 | DRIVER_NO_QUERMEMORY | 查询内存失败 |
-536858616 | 0xE0003008 | DRIVER_NO_ALLOCATE_MEMORY | 申请内存失败 |
-536858615 | 0xE0003009 | DRIVER_NO_OUTBUFF | 返回参数错误 |
-536858614 | 0xE000300A | DRIVER_NO_MAIN_THREAD | 获取主线程失败 |
-536858612 | 0xE000300C | DRIVER_NO_MODELE_ADDRESS | 获取模块地址失败 |
-536858611 | 0xE000300D | DRIVER_NO_READ_WRITE | 读写失败 |
-536858610 | 0xE000300E | DRIVER_NO_GETFUNC | 获取函数失败 |
-536858609 | 0xE000300F | DRIVER_NO_VERSION | 内置时间过期,提示用户更新版本 |
-536831591 | 0xE0009999 | OL_ERROR_ERROR | 未知错误 |
VT / EPT / 保护 / 注入 / 通讯 / 键鼠(0xE000301x–0xE000302x)
| 十进制(int32) | 十六进制 | 常量名 | GetLastErrorString |
|---|---|---|---|
-536858608 | 0xE0003010 | DRIVER_VT_NOT_SUPPORTED | CPU 不支持 VT-x 虚拟化 |
-536858607 | 0xE0003011 | DRIVER_VT_DISABLED | VT-x 已被 BIOS 禁用 |
-536858606 | 0xE0003012 | DRIVER_VT_ALREADY_ENABLED | VT 已经启用(重复开启) |
-536858605 | 0xE0003013 | DRIVER_VT_ENABLE_FAILED | VT 开启失败 |
-536858604 | 0xE0003014 | DRIVER_VT_NOT_ENABLED | VT 未启用 |
-536858603 | 0xE0003015 | DRIVER_EPT_NOT_SUPPORTED | CPU 不支持 EPT |
-536858602 | 0xE0003016 | DRIVER_EPT_INIT_FAILED | EPT 初始化失败 |
-536858601 | 0xE0003017 | DRIVER_EPT_HOOK_FAILED | EPT Hook 安装失败 |
-536858600 | 0xE0003018 | DRIVER_EPT_UNHOOK_FAILED | EPT Hook 卸载失败 |
-536858599 | 0xE0003019 | DRIVER_EPT_HOOK_EXISTS | EPT Hook 已存在(重复安装) |
-536858598 | 0xE000301A | DRIVER_EPT_HOOK_NOT_FOUND | EPT Hook 未找到(卸载时不存在) |
-536858597 | 0xE000301B | DRIVER_EPT_PAGE_ALLOC_FAILED | EPT 伪页分配失败 |
-536858596 | 0xE000301C | DRIVER_EPT_CROSS_PAGE | EPT Hook 跨页错误 |
-536858595 | 0xE000301D | DRIVER_PROTECT_ADD_FAILED | 添加进程保护失败 |
-536858594 | 0xE000301E | DRIVER_PROTECT_REMOVE_FAILED | 移除进程保护失败 |
-536858593 | 0xE000301F | DRIVER_PROTECT_EXISTS | 进程已在保护列表中 |
-536858592 | 0xE0003020 | DRIVER_PROTECT_NOT_FOUND | 进程不在保护列表中 |
-536858591 | 0xE0003021 | DRIVER_PROTECT_NO_POWER | 未指定保护权限 |
-536858590 | 0xE0003022 | DRIVER_INJECT_FAILED | DLL 注入失败 |
-536858589 | 0xE0003023 | DRIVER_INJECT_NO_PROCESS | 目标进程不存在 |
-536858588 | 0xE0003024 | DRIVER_INJECT_NO_DLL | DLL 路径无效 |
-536858587 | 0xE0003025 | DRIVER_COMM_DECRYPT_FAILED | 通讯数据解密失败 |
-536858586 | 0xE0003026 | DRIVER_COMM_INVALID_SIZE | 通讯数据大小不匹配 |
-536858585 | 0xE0003027 | DRIVER_COMM_INVALID_CMD | 无效的命令码 |
-536858584 | 0xE0003028 | DRIVER_COMM_WRITEBACK_FAILED | 结果回写失败 |
-536858583 | 0xE0003029 | DRIVER_KEYMOUSE_NOT_INIT | 键鼠设备未初始化 |
-536858582 | 0xE000302A | DRIVER_KEYMOUSE_SEND_FAILED | 键鼠输入发送失败 |
驱动加载 NTSTATUS(0xC000xxxx / 0xC0E9xxxx)
| 十进制(int32) | 十六进制 | 常量名 | GetLastErrorString |
|---|---|---|---|
-1073741823 | 0xC0000001 | DRIVER_UNSUCCESSFUL | 驱动操作失败(STATUS_UNSUCCESSFUL),无法具体定位原因 |
-1073741790 | 0xC0000022 | DRIVER_ACCESS_DENIED | 权限不足,通常需要管理员或 SYSTEM 权限 |
-1073741772 | 0xC0000034 | DRIVER_OBJECT_NAME_NOT_FOUND | 注册表路径不存在 |
-1073741771 | 0xC0000035 | DRIVER_OBJECT_NAME_COLLISION | 注册表项或对象名冲突 |
-1073741766 | 0xC000003A | DRIVER_OBJECT_PATH_NOT_FOUND | 注册表路径无效 |
-1073741727 | 0xC0000061 | DRIVER_PRIVILEGE_NOT_HELD | 缺少 SeLoadDriverPrivilege 权限 |
-1073741701 | 0xC000007B | DRIVER_INVALID_IMAGE_FORMAT | 驱动文件格式不正确(如 32/64 位不匹配) |
-1073741670 | 0xC000009A | DRIVER_INSUFFICIENT_RESOURCES | 系统资源不足 |
-1073741210 | 0xC0000266 | DRIVER_INTERNAL_ERROR | 驱动初始化失败,DriverEntry 出错 |
-1058471934 | 0xC0E90002 | DRIVER_SYSTEM_INTEGRITY_POLICY_VIOLATION | 系统完整性策略拦截驱动加载(HVCI/内存完整性/Smart App Control/代码完整性等) |
文件保护驱动 ProtectFile(0xDFDFD00x)
| 十进制(int32) | 十六进制 | 常量名 | GetLastErrorString |
|---|---|---|---|
-538980351 | 0xDFDFD001 | DRIVER_PF_ERROR_ERROR | 未知错误 |
-538980350 | 0xDFDFD002 | DRIVER_PF_ERROR_NO_OPEN | 打开进程失败 |
-538980349 | 0xDFDFD003 | DRIVER_PF_ERROR_NO_HANDLE | 无效句柄 |
-538980348 | 0xDFDFD004 | DRIVER_PF_ERROR_INVALID_PARAM | 参数错误 |
-538980347 | 0xDFDFD005 | DRIVER_PF_ERROR_PATH_TOO_LONG | 路径过长 |
键鼠接口错误(60xx)
| 错误码 | 常量名 | GetLastErrorString |
|---|---|---|
6001 | KEYMOUSE_BACKEND_UNAVAILABLE | 键鼠通道未就绪(VNC/RDP/虚拟机等未连接) |
数据库错误(70xx)
| 错误码 | 常量名 | GetLastErrorString |
|---|---|---|
7001 | SQLITE_INVALID_ARGUMENT | 数据库参数无效 |
7002 | SQLITE_FILE_EXISTS | 数据库文件已存在(CreateDatabase 不会覆盖) |
7003 | SQLITE_FILE_NOT_FOUND | 数据库文件不存在 |
7004 | SQLITE_OPEN_FAILED | 打开数据库失败 |
7005 | SQLITE_PASSWORD_ERROR | 数据库密码错误或密钥校验失败 |
7006 | SQLITE_INIT_FAILED | 数据库内建表初始化失败 |
7007 | SQLITE_INVALID_HANDLE | 无效的数据库或结果集句柄 |
7008 | SQLITE_EXEC_FAILED | 执行 SQL 失败 |
7009 | SQLITE_PREPARE_FAILED | SQL 预处理失败 |
7010 | SQLITE_MEMORY_ERROR | 内存数据库分配或反序列化失败 |
7011 | SQLITE_CHANGE_PASSWORD_FAILED | 修改数据库密码失败 |
7012 | SQLITE_CLOSE_FAILED | 关闭数据库失败 |
7013 | SQLITE_CONNECTION_BUSY | 数据库正忙(仍有未关闭的查询结果集) |
7099 | SQLITE_INTERNAL_EXCEPTION | 数据库操作内部异常 |
完整说明与排查见 数据库错误码说明。
YOLO 错误(80xx)
| 错误码 | 常量名 | GetLastErrorString |
|---|---|---|
8001 | YOLO_INVALID_ARGUMENT | YOLO 参数无效 |
8002 | YOLO_FILE_NOT_FOUND | YOLO 模型/标签/图片文件不存在或读取失败 |
8003 | YOLO_INVALID_PACKAGE | 非欧拉 YOLO 加密包或包格式无效 |
8004 | YOLO_PASSWORD_ERROR | YOLO 加密包密码错误或为空 |
8005 | YOLO_DECRYPT_FAILED | YOLO 加密包解密失败 |
8006 | YOLO_LOAD_FAILED | YOLO 模型加载失败 |
8007 | YOLO_INVALID_HANDLE | 无效的 YOLO 模型句柄 |
8008 | YOLO_ENCRYPT_FAILED | YOLO 模型加密打包失败 |
8009 | YOLO_CONFIG_FAILED | YOLO 模型配置失败 |
8010 | YOLO_DEVICE_UNAVAILABLE | YOLO 推理设备不可用或 GPU 索引越界 |
8011 | YOLO_IMAGE_INVALID | YOLO 图像无效或读取失败 |
8012 | YOLO_CAPTURE_FAILED | YOLO 屏幕区域截图失败 |
8013 | YOLO_DISABLED | 当前构建未启用 YOLO |
8099 | YOLO_INTERNAL_EXCEPTION | YOLO 操作内部异常 |
完整说明与排查见 YOLO 错误码说明。
字库找字错误(90xx)
| 错误码 | 常量名 | GetLastErrorString |
|---|---|---|
9001 | OCR_DICT_NOT_FOUND | 字库不存在(详情为全部加载不到的字库名) |
9002 | OCR_DICT_WORD_NOT_FOUND | 字库中找不到指定文字(详情为全部拼不出的文字,便于核对中文编码) |
完整说明与排查见 字库找字错误码说明。
其他
| 错误码 | 常量名 | GetLastErrorString |
|---|---|---|
9999 | UNKNOWN_ERROR | 未知错误(有详情时整段替换为内部 Message) |
注意事项
| 项目 | 说明 |
|---|---|
| 释放内存 | 返回的字符串指针需调用 FreeStringPtr 释放内存。 |
| 错误字符串仅表示"最后一次错误"的信息 | 错误字符串仅表示"最后一次错误"的信息,如中途调用了其他接口,错误信息可能被覆盖。 |
| 在接口调用失败后 | 建议在接口调用失败后,优先调用 GetLastError 获取错误码,再调用本接口获取错误描述。 |
| 附加详情 | 多数错误会在基本文案后追加 (详情);1005 / 9999 有详情时会替换整段文案。 |
| 错误码索引 | BindWindow 见 40xx 说明;AsmCall 见 50xx 说明;驱动见 驱动错误码说明;数据库见 70xx 说明;YOLO 见 80xx 说明;字库找字见 90xx 说明;全部索引见 GetLastError。 |
