main::Attach 函数载入 SystemDomain,然后加载并初始化异常处理、JITer等等支持代码,最后会调用 SystemDomain::Init 函数完成初始化 SystemDomain 等等工作。 SystemDomain::Attach 函数(vmappdomain.cpp:912)主要完成四部分工作:初始化系统 stub 管理器和 SystemDomain 的静态成员变量;以全局静态数组 g_pSystemDomainMemory 的内存区,构造并初始化 SystemDomain 对象,并将指针保存到 m_pSystemDomain 静态变量中,用于以后判断 SystemDomain 是否被构造等功能使用;构造缺省的 AppDomain;构造 SharedDomain。函数的简要功能代码如下: 以下内容为程序代码: SystemDomain* SystemDomain::m_pSystemDomain = NULL; static BYTE g_pSystemDomainMemory[sizeof(SystemDomain)]; HRESULT SystemDomain::Attach() { // 判断 SystemDomain 是否已经构造 _ASSERTE(m_pSystemDomain == NULL); if(m_pSystemDomain != NULL) return COR_E_EXECUTIONENGINE; // 初始化系统 stub 管理器和 SystemDomain 的静态成员变量 // ... // 构造 SystemDomain 对象<页码:[1] [2] [3] [4] [5] [6] [7] [8] [9] 第6页、共9页 |