子系统 |
备注 |
---|---|
底层文件 IO |
这些函数是在 XSharp.Core 中实现的。 与 VO 相比,XSharp.Core 的实现有一个重要区别。 在 VO 中,从 FCreate() 和 FOpen() 等函数返回的文件句柄是操作系统文件句柄。这意味着你也可以直接将它们传递给 Win32 API 函数。在 X# 运行时中,这已不再可能。 我们使用 .Net FileStream 对象进行文件 IO。返回的文件处理程序(IntPtr 类型)是我们存储这些文件 IO 对象的表中的唯一密钥。密钥由随机数生成。您不能也不应该依赖这些键的值。 |
静态内存 IO |
静态内存子系统使用 Marshal.AllocHGlobal 功能分配内存。每个内存块都有 2 个保护块,其中包含有关组编号、大小和魔法编号的信息。我们还实现了内存组。 与 VO 不同,您不能通过简单地关闭内存组来释放组中的所有块。 如果您想枚举已分配的块,应首先调用 MemTrace(TRUE) 启用块跟踪。 然后创建一个具有以下原型的函数
FUNCTION MyMemWalker(pMem AS IntPtr, nSize AS DWORD) AS LOGIC 然后调用 MemWalk 并将函数作为参数传递。运行时将调用你的函数,并传入所有已分配但尚未释放的内存块。 |
后期绑定支持 |
运行时完全支持延迟绑定。后期绑定支持仍需要一些优化。 我们建议仅在必要时使用。新代码应使用动态类型或尽量使用早期绑定代码。 |