Show/Hide Toolbars

XSharp

Navigation: X# 文档 > X# 运行时(Runtime)

X# 运行时的子系统

Scroll Prev Top Next More

各子系统的说明

 

子系统

备注

底层文件 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 并将函数作为参数传递。运行时将调用你的函数,并传入所有已分配但尚未释放的内存块。

后期绑定支持

运行时完全支持延迟绑定。后期绑定支持仍需要一些优化。

我们建议仅在必要时使用。新代码应使用动态类型或尽量使用早期绑定代码。