ICLRMetaHost::RequestRuntimeLoadedNotification 方法

在首次加载 CLR 版本但尚未启动它时,提供一个一定会调用的回调函数。 此方法取代 LockClrVersion 函数。

HRESULT RequestRuntimeLoadedNotification (
    [in] RuntimeLoadedCallbackFnPtr pCallbackFunction);

参数

  • pCallbackFunction
    [in] 在加载完新的运行时之后调用的回调函数。

返回值

此方法将返回以下特定的 HRESULT 以及用于指示方法失败的 HRESULT 错误。

HRESULT

说明

S_OK

该方法成功完成。

E_POINTER

pCallbackFunction 为 null。

备注

回调的工作方式如下:

  • 仅当执行某个运行时的第一次加载时才调用回调。

  • 执行相同运行时的重入加载时,不会调用回调。

  • 对于非重入运行时加载,将序列化对回调函数的调用。

回调函数具有以下原型:

typedef void (__stdcall *RuntimeLoadedCallbackFnPtr)(
                     ICLRRuntimeInfo *pRuntimeInfo,
                     CallbackThreadSetFnPtr pfnCallbackThreadSet,
                     CallbackThreadUnsetFnPtr pfnCallbackThreadUnset);

回调函数的原型如下所示:

  • pfnCallbackThreadSet:

    typedef HRESULT (__stdcall *CallbackThreadSetFnPtr)();
    
  • pfnCallbackThreadUnset:

    typedef HRESULT (__stdcall *CallbackThreadUnsetFnPtr)();
    

如果主机尝试以重入方式加载或致使加载另一个运行时,则必须按以下方式使用回调函数中提供的 pfnCallbackThreadSet 和 pfnCallbackThreadUnset 参数:

  • 可能导致加载运行时的线程在尝试此类加载之前必须调用 pfnCallbackThreadSet。

  • 当线程不再导致此类运行时加载时,必须在从初始回调返回之前调用 pfnCallbackThreadUnset。

  • pfnCallbackThreadSet 和 pfnCallbackThreadUnset 都是非重入的。

注意注意

宿主应用程序不得在 pCallbackFunction 参数范围之外调用 pfnCallbackThreadSet 和 pfnCallbackThreadUnset。

要求

**平台:**请参见 .NET Framework 系统要求

头文件: MetaHost.h

**库:**作为一项资源包含在 MSCorEE.dll 中

**.NET Framework 版本:**4

请参见

参考

ICLRMetaHost 接口

其他资源

承载(非托管 API 参考)