2026-09-25 实际启动验证
本页为启动链路的历史记录。2026-09-26 的真实游戏登录与存档验证见 游戏登录验证。
测试对象是 D:\Warframe 的游戏副本,客户端版本为 2026.08.19.11.06。本地 ServerInteractive 服务使用 Server/runtime,监听 http://127.0.0.1:8444。
| 检查 | 结果 |
|---|---|
| 服务器 HTTP 健康检查 | 200,返回 XFEWarframe 与 apiOnly=true |
| 副本安装完整性 | 通过,配置指向本地 8444 端口 |
| 启动器创建真实 Warframe 进程 | 修复模块定位后通过 |
| NativeAOT 组件实际加载 | 通过,日志记录 Ready、当前版本和 hooks=10 |
| 游戏图形与资源加载 | 通过,实际显示 Warframe 登录界面及当前版本 |
| 游戏登录与服务端请求往返 | 待手动输入私服测试账号验证 |
| 飞船、任务、结算、重连 | 未验证 |
副本和原始 Steam 游戏的 EXE SHA-256 均为:
D01B5CB5CFF51AFC5FFB7D3AF051674AAFA84000BEE764780FF71D9D073CAD93
测试未修改原 Steam 游戏目录,也没有改写副本的游戏 EXE。游戏正常运行会产生日志和用户设置;这些不作为发行包内容。
本次发现与修复
首次实际启动失败,异常栈定位在 GameLauncher.ModuleBase 对 Process.Modules 的调用,错误为 Win32 299(ERROR_PARTIAL_COPY)。游戏主线程尚处于 CREATE_SUSPENDED 状态,此时 Windows 加载器模块表未初始化。
启动器现在通过 VirtualQueryEx 与 GetMappedFileNameW 查找实际映射的 PE 映像,定位目标进程自己的 ntdll.dll 与兼容 DLL 基址,不依赖尚未初始化的模块表或假定进程间加载地址相同。组件加载、初始化均成功后才恢复游戏主线程;失败时只清理本次创建的游戏进程。
对应 Windows 行为参见 Microsoft 的 EnumProcessModules 文档和 GetMappedFileNameW 文档。
新增回归测试创建一个始终挂起的 x64 子进程,检查加载器初始化前能找到 ntdll.dll 与主程序、读取有效 PE 文件头,并检查不存在的模块和取消路径。子进程不执行程序逻辑,测试结束释放句柄并终止该子进程。安装器与启动器测试合计 22 项通过。
本地证据
开发工作区的 artifacts/game-startup-20260925-165258/ 保存首次异常、修复后的启动输出、原始目录基线、EXE 哈希、测试结果及实测报告。兼容组件的运行日志位于 D:\Warframe\XFEWarframe\logs,仅记录 API 路径,不记录密码或请求正文。
到达登录界面只证明本机这一版本的进程加载与启动链路可用,不代表游戏已完成登录或全部业务接口兼容。