技术开发 频道

.NET中的幕后英雄:MSCOREE.DLL

程序可以通过MSCOREE调用CLR的提供的功能或者定制CLR

MSCOREE.DLL导出了大量的函数,那么这些函数是否公开并且可以调用呢?答案是肯定的。几乎所有这些函数在MSDN中都可以查到对应的文档,并且在.NET Framework SDK的Include目录中有一个对应的mscoree.h,提供了这些函数的Prototype。应用程序通过这些函数,可以访问CLR提供的各项功能,比如:

函数名
用途
GetCORSystemDirectory
获得进程中加载的CLR的安装目录
GetCORVersion
获得进程中加载的CLR的版本西nxi 
GetFileVersion
获得指定文件的CLR版本信息
GetRequestedRuntimeInfo
获得指定版本CLR的相关信息
GetRequestedRuntimeVersion
获得应用程序运行所需要的CLR版本信息
ClrCreateManagedInstance
创建一个.NET对象并返回指定的接口,使用此函数可以访问大量的.NET Framework的已有功能
CorBindToRuntime
加载指定版本CLR
CorBindToRuntimeHost
Host中加载指定版本CLRHosting时候使用
CreateDebuggingInterfaceFromVersion
获得对应版本CLRICorDebug接口,用于编写调试器(比如Visual Studio
CorLaunchApplication
以指定参数启动托管程序

除此之外还有很多,这里只是列了一些比较常用的功能而已。可以看到这些功能都非常有用,特别值得提出的是CorBindToRuntimeHost和CreateDebuggingInterfaceFromVersion。前者提供了对CLR各个方面的定制功能,功能非常强大,有兴趣的朋友可以参考MSDN或者Customizing the Common Language Runtime一书。而后者则提供了对托管程序的调试支持,通过ICorDebug接口。

MSCOREE提供对COM支持

非托管代码可以通过COM直接调用.NET的Assembly中的托管对象。以下面这个对象为例,该对象CLSID为{0029598F-26Fa-46F7-953B-86E2947AB19F},类型为Microsoft.SqlServer.Replication.ComErrorRecord,线程模型为Both,Assembly名称为Microsoft.SqlServer.Replication, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91,所需CLR版本为v2.0.50727 (2.0 RTM)。最值得注意的是,入口点为mscoree.dll。

0
相关文章