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
。
要求
平台:请参阅系统要求。
标头:MetaHost.h
库:作为资源包含在 MSCorEE.dll 中
.NET Framework 版本:自 4 起可用