更新时间:2026-03-08
适用范围:BackEnd 当前 main 分支
- 完整版(含完整 JSON 示例):INTERFACE_SPEC.md
- 本文定位:快速对接时查参数、成功字段、错误字符串
请求包:
{"id": 1, "method": "Toolkit.Ping", "params": [{}]}成功包:
{"id": 1, "result": {...}, "error": null}失败包(真实):
{"id": 1, "result": null, "error": "错误字符串"}说明:error 是字符串,不是 {code,message};流式客户端应同时用 id 对齐请求与响应。
params:{}- 成功
result:{"status":"ok"} - 错误
error示例:jsonrpc: request body missing params
params:{}- 成功
result:{"processes":[{process_id,parent_process_id,thread_count,working_set_size,image_name}]} - 错误
error示例:驱动未加载/枚举进程失败: .../返回数据过小
params:{"process_id":uint32}- 成功
result:{"success":true,"used_method":"psp|zw","nt_status":0} - 内核拒绝时
result:{"success":false,"used_method":"none|psp|zw","nt_status":<ntstatus>} - 错误
error示例:驱动未加载/结束进程失败: 驱动返回的 Kill 结果过小: ...
params:{"process_id":uint32,"level":uint8(可选)}level编码:(Signer << 4) | Type,默认0x31(Antimalware-Light)- 常用等级:
0x00/0x11/0x31/0x41/0x51/0x61 - 成功
result:{"success":true} - 错误
error示例:驱动未加载/process_id 不合法,不能为 0 或 4/保护进程失败: ...
params:{"process_id":uint32}- 成功
result:{"success":true} - 错误
error示例:驱动未加载/取消保护进程失败: ...
- 已废弃,仅兼容保留
params:{"version":uint32,"deny_access_mask":uint32}- 典型返回:
{"success":false}+error="SetProtectPolicy 已废弃,请使用 ProtectProcess(level)"
params:{"path":"绝对路径"}(空值默认C:\\)- 成功
result:{"current_path":"...","parent_path":"...","entries":[{name,path,is_dir,size,mod_time}]} - 错误
error示例:路径解析失败: .../读取目录失败: ...
params:{"path":"文件路径"}- 成功
result:{"success":true} - 错误
error示例:path 不能为空/驱动未加载/路径编码失败: .../路径过长,最大支持 N UTF-16 字符/内核删除文件失败: ...
params:{"path":"文件路径"}- 成功
result:{"found_pids":[...],"results":[{process_id,success,used_method?,nt_status,error?}]} - 错误
error示例:path 不能为空/驱动未加载/查询占用进程失败: ... - 注意: 该接口即使部分 PID 失败,也可能
error=null,需检查results[].success。
params:{"process_id":uint32}- 成功
result:{"process_id":5388,"modules":[{process_id,module_name,base_address,size,path}]} - 错误
error示例:process_id must be > 0/枚举进程模块失败: ... - 说明: 驱动已连接时优先走
IOCTL_ENUM_MODULES;未连接时回退现有用户态枚举。
params:{"protocol":"all|tcp|udp"}(空值默认all)- 成功
result:{"protocol":"all","connections":[{protocol,local_ip,local_port,remote_ip,remote_port,state,process_id,process_name}]} - 错误
error示例:protocol 仅支持 all/tcp/udp/枚举网络连接失败: ... - 说明: 驱动已连接时优先走
IOCTL_ENUM_CONNECTIONS;未连接时回退iphlpapi。
params:{}- 成功
result:{"overall_status":"ok|degraded|down","generated_at":"RFC3339","components":[{name,status,message}]} - 错误
error示例:jsonrpc: request body missing params
params:{}- 成功
result:{"total":N,"roots":[{process_id,parent_process_id,image_name,thread_count,working_set_size,children:[]}]} - 错误
error示例:驱动未加载/枚举进程失败: ...
params:{"process_id":uint32,"include_root":bool,"leaves_first":bool,"strict_errors":bool}- 成功
result:{"target_process_id":...,"ordered_pids":[...],"results":[{process_id,success,used_method?,nt_status,error?}]} - 错误
error示例:process_id must be > 0/驱动未加载/结束子树进程失败(pid=...): ... - 注意:
strict_errors=false时,部分失败也可整体成功。
params:{"process_id":uint32}- 成功
result:{"process_id":...,"threads":[{thread_id,owner_process_id,base_priority,delta_priority,start_address,is_terminating}]} - 错误
error示例:process_id must be > 0/枚举线程失败: ... - 说明: 驱动已连接时优先走
IOCTL_ENUM_THREADS;未连接时回退用户态线程枚举。
params:{"process_id":uint32}- 成功
result:{"process_id":...,"total_handles":N,"types":[{type_index,type_name,count}]} - 错误
error示例:process_id must be > 0/枚举句柄失败: ... - 说明: 驱动已连接时优先走
IOCTL_ENUM_HANDLES,后端再聚合出类型统计;未连接时回退旧实现。
params:{"process_id":uint32,"sample_count":int,"interval_ms":int,"top_n":int}- 成功
result:{"process_id":...,"samples":[{timestamp,total_handles,top_types:[...]}]} - 错误
error示例:process_id must be > 0/句柄采样失败(第 1 次): ... - 约束:
sample_count 1~60、interval_ms 500~10000、top_n 1~20。 - 说明: 驱动已连接时使用
IOCTL_ENUM_HANDLES做采样;未连接时回退旧实现。
params:{"port":uint16,"protocol":"all|tcp|udp","action":"kill|disconnect"}- 成功
result:{"port":...,"protocol":"...","action":"...","summary":"...","matches":[...],"results":[{process_id,method,success,used_method?,nt_status,error?}]} results[].method当前枚举:kill_process/disconnect_tcp- 错误
error示例:port must be > 0/protocol 仅支持 all/tcp/udp/action 仅支持 kill/disconnect/驱动未加载,无法执行 kill/disconnect 暂仅支持 TCP/断开 TCP 连接失败: ... - 注意:
action=kill时,高风险系统进程会在results中返回success=false,error="高风险系统进程,拒绝结束",但整体仍可能成功。
params:{"thread_id":uint32}- 成功
result:{"success":true,"suspend_count":int} - 错误
error示例:thread_id must be > 0/挂起线程失败: ...
params:{"thread_id":uint32}- 成功
result:{"success":true,"suspend_count":int} - 错误
error示例:thread_id must be > 0/恢复线程失败: ...
params:{"name_like":"可选过滤"}- 成功
result:{"services":[{name,display_name,state,start_type}]} - 错误
error示例:枚举服务失败: ...
params:{"category":"all|services|tasks","name_like":"可选过滤"}(空值默认all)- 成功
result:{"category":"all","entries":[{source,name,display_name?,state?,run_as?,command?,trigger?,detail?}]} - 错误
error示例:category 仅支持 all/services/tasks/枚举自启动项失败: ...
params:{"name":"服务名"}- 成功
result:{"success":true} - 错误
error示例:name 不能为空/启动服务失败: ...
params:{"name":"服务名"}- 成功
result:{"success":true} - 错误
error示例:name 不能为空/停止服务失败: ...
params:{"name":"服务名","start_type":"auto|manual|disabled"}- 成功
result:{"success":true} - 错误
error示例:name 不能为空/start_type 仅支持 auto/manual/disabled/修改服务启动类型失败: ...
params:{"template":"low|medium|high"}(空值默认medium)- 成功
result:{"success":true,"template":"medium","version":1,"deny_access_mask":2049} - 错误
error示例:WinDrive 未加载/template 仅支持 low/medium/high/设置保护策略失败: ...
params:{"limit":int}(<=0默认100)- 成功
result:{"total":N,"entries":[{id,timestamp,action,params?,success,error?}]} - 错误
error示例:jsonrpc: request body missing params
params:{"path":"可空","include_audit":bool,"audit_limit":int}- 成功
result:{"success":true,"path":"...\\reports\\*.json","size":5821} - 错误
error示例:收集进程列表失败: 驱动未加载/写入报告失败: ...
params:{"process_id":uint32,"level":0|1|2|3}level枚举:0=admin/1=system/2=trusted_installer/3=standard_user- 成功
result:{"success":true,"level":3,"level_name":"standard_user"} - 错误
error示例:level 仅支持 0(admin)/1(system)/2(trusted_installer)/3(standard_user)/process_id 不合法,不能为 0 或 4/驱动未加载/提权进程失败: ...
params:{"process_id":uint32}- 成功
result:{"success":true} - 错误
error示例:驱动未加载/构造请求失败: .../冻结进程失败: ...
params:{"process_id":uint32}- 成功
result:{"success":true} - 错误
error示例:驱动未加载/构造请求失败: .../解冻进程失败: ...
params:{"process_id":uint32}- 成功
result:{"success":true} - 错误
error示例:驱动未加载/构造请求失败: .../隐藏进程失败: ...
params:{"process_id":uint32}- 成功
result:{"success":true} - 错误
error示例:驱动未加载/构造请求失败: .../恢复隐藏进程失败: ...
params:{"process_id":uint32}(0表示全系统)- 成功
result:{"process_id":0,"handles":[{process_id,handle,object_type_index,granted_access,object_address,type_name,object_name}]} - 错误
error示例:驱动未加载/枚举句柄明细失败: ...
params:{}- 成功
result:{"modules":[{base_address,size,module_name,path}]} - 错误
error示例:驱动未加载/枚举内核模块失败: ...
params:{"process_id":uint32,"handle":uint64}- 成功
result:{"success":true} - 错误
error示例:驱动未加载/构造请求失败: .../关闭句柄失败: ...
params:{"service_name":"驱动服务名或 *.sys"}- 成功
result:{"success":true} - 错误
error示例:驱动未加载/service_name 不能为空/卸载驱动失败: ...
params:{"process_id":uint32,"dll_path":"C:\\path\\to\\x.dll"}- 成功
result:{"success":true} - 错误
error示例:驱动未加载/dll_path 不能为空/注入 DLL 失败: ... - 注意: 当前驱动分发层已显式禁用该 IOCTL,通常会返回
STATUS_NOT_SUPPORTED。
- 每次请求使用唯一
id,并校验响应id与请求一致。 - 对所有写操作接口,不只看顶层
error,还要看result内的success或results[]。 - 统一把
error当纯文本提示。