# 2026-09-25 实际启动验证 本页为启动链路的历史记录。2026-09-26 的真实游戏登录与存档验证见 [游戏登录验证](GAME-LOGIN-VALIDATION-20260926.md)。 测试对象是 `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 文档](https://learn.microsoft.com/en-us/windows/win32/api/psapi/nf-psapi-enumprocessmodules)和 [GetMappedFileNameW 文档](https://learn.microsoft.com/en-us/windows/win32/api/psapi/nf-psapi-getmappedfilenamew)。 新增回归测试创建一个始终挂起的 x64 子进程,检查加载器初始化前能找到 `ntdll.dll` 与主程序、读取有效 PE 文件头,并检查不存在的模块和取消路径。子进程不执行程序逻辑,测试结束释放句柄并终止该子进程。安装器与启动器测试合计 22 项通过。 ## 本地证据 开发工作区的 `artifacts/game-startup-20260925-165258/` 保存首次异常、修复后的启动输出、原始目录基线、EXE 哈希、测试结果及实测报告。兼容组件的运行日志位于 `D:\Warframe\XFEWarframe\logs`,仅记录 API 路径,不记录密码或请求正文。 到达登录界面只证明本机这一版本的进程加载与启动链路可用,不代表游戏已完成登录或全部业务接口兼容。