程序可以通过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中加载指定版本CLR,Hosting时候使用
|
CreateDebuggingInterfaceFromVersion
|
获得对应版本CLR的ICorDebug接口,用于编写调试器(比如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。