独立 NativeAOT 桌面应用入口
NativeApplication.csproj 是普通 .NET 10 可执行项目;官方 NativeAOT 生成的 __managed__Main 由 RuntimeStart.cpp 的完整运行时 bootstrapper 调用。它不引用 Cosmos,继续使用项目的 Platform、Desktop、Browser、Documents、ConsoleDemo 与受限 ManagedRuntime。
NativePlatform 只以 C ABI 的原生值/指针访问 xfe_pal:
| 入口 | 合约 |
|---|---|
xfe_runtime_framebuffer_info |
填入 56 字节 NativeFramebufferInfo;1 成功、0 不可用 |
xfe_runtime_write |
UTF-8 bytes 指针及 uint64 长度;有界 UART |
xfe_runtime_mono_ns |
uint64 单调纳秒 |
xfe_runtime_clock_ready |
1 表示内核单调时钟可用 |
xfe_runtime_halt |
最多 256 字节 NUL 结束失败原因,永久停止;不是空闲等待 |
xfe_runtime_input_ready |
成功初始化的 8042 设备位图:键盘 1、标准鼠标 2 |
xfe_runtime_input_read |
一份真实有序的 32 字节 PS/2 报告;1 有报告、0 暂无报告 |
Framebuffer 结构与内核 NativeFrameSurface 对齐:Address 在 0、MappedBytes 在 8;Width/Height/PitchBytes/BitsPerPixel 在 16/20/24/28;RedMaskSize/Shift、GreenMaskSize/Shift、BlueMaskSize/Shift 在 32/36/40/44/48/52。应用校验并生成连续 masks,交给 MemoryFramebufferPresenter 写实际映射的 framebuffer。
初始化真实 CpuFramebufferCanvas、MemoryWorkspace、DesktopSession、BrowserService 和终端,首帧完成且实际 Present 计数非零之后,才写 XFE_INDEPENDENT_DESKTOP_FIRST_FRAME。Terminal 初始内容读取 PS/2 的真实初始化位图,同时明确标记网络、持久存储、GPU/CUDA 尚未接入。ConsoleDemoScenario 与 ManagedApplicationRunner 作为现有桌面操作回调接入;后者读取 RAM 工作区中的实际 PE 程序。原 Samples/XFESystem.ManagedHello 的生成 DLL 通过 ProjectReference 的 EmbeddedResource 输出类型随应用嵌入,不生成替代 IL。
Main 使用 Ps2InputSource 从内核真实 8042 队列读取报告,再接入现有 Desktop/Browser。Connected 只有 input_ready 返回非零初始化位图时才为 1;仍需来宾输入证据验证报告到界面的完整路径。没有伪造设备事件或读取宿主窗口。主循环仅在同一托管线程按单调时钟推进现有桌面反馈/浏览器任务和绘制。未接入后台编辑或硬件中断等待,当前主动轮询时钟。现有 .NET 运行时的托管线程身份用于诊断,没有硬编码伪造线程 ID。
32 字节报告依次为 uint32 Kind/KeyCode/Unicode/Modifiers、int32 DeltaX/DeltaY、uint32 Buttons、int32 Wheel。Kind 为 make 1、break 2、pointer 3、lost 4;E0 key code 带 0x100,完整 E1 Pause 为 0x245。Modifiers 为 Shift 1、Ctrl 2、Alt 4、Super 8、Caps 16、Num 32。鼠标 Y 已由内核转换为屏幕向下;应用先累计、裁剪 native 像素,再转换 layout 坐标。标准 3 字节 PS/2 鼠标没有滚轮数据;旧桌面主入口当前消费左键,右键/中键尚未提供新的桌面动作。
Ps2Decoder.cs 是本项目新写的纯字节解码器,由 NativeKernel 驱动和本应用 Compile Link 使用同一生产源码,不依赖 Cosmos 驱动/Key 枚举。E1 不污染 Ctrl/Num 状态,PrintScreen 的伪 Shift 字节不改真实 Shift,Caps/Num 只在首次 make 时翻转。应用将 Win/Alt/Ctrl 快捷键与普通网页键盘事件分开,保留 browser code、repeat、make/break 和当前修饰键;输入丢失会结束 Alt 窗口切换、释放已记录的网页键并取消鼠标捕获,禁止把丢失包合成为点击。当前键盘字符采用 US set-1 布局,未接 USB HID 或输入法。
dotnet build Source/XFESystem.NativeRuntime/Application/NativeApplication.csproj -c Release --artifacts-path build/NativeApplicationHostBuild
powershell -NoProfile -ExecutionPolicy Bypass -File Tools/IndependentKernel/Runtime/CompileProbe.ps1 -ProjectPath Source/XFESystem.NativeRuntime/Application/NativeApplication.csproj
这些命令分别证明托管构建和 ELF 交叉编译。只有独立内核安装完整 PAL、官方 .NET 初始化实际成功、来宾日志出现首帧标记且 framebuffer 截图符合现有桌面后,才能报告裸机运行通过。应用源中的成功标记、生成对象、宿主图像或可链接都不能替代来宾证据。