XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEWarframe

【WinUI】基于Warframe游戏本体的公开服务器以及安装器

公开
关注 0 Fork 0 Star 0
UTF-8

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 路径,不记录密码或请求正文。

到达登录界面只证明本机这一版本的进程加载与启动链路可用,不代表游戏已完成登录或全部业务接口兼容。