CLR ICLRControl::GetCLRManager 失败,错误HOST_E_INVALIDOPERATION
CLR ICLRControl::GetCLRManager fails with error HOST_E_INVALIDOPERATION
我有一个本机进程,它通过COM互操作使用.NET组件。一旦该过程完成,我正在尝试使用 ICLRControl 接口指针获取指向各种 CLR 管理器(如 ICLRDebugManager、ICLRGCManager 等(的接口指针。我能够毫无故障地获取ICLRControl接口。ICLRRuntimeInfo还正确地告诉我,当我调用GetVersionString时,它是4.0.x .net版本。
只是ICLRControl::GetCLRManager不断失败,错误0x80130122,错误代码代表HOST_E_INVALIDOPERATION。搜索了互联网,但无法获得有关为什么这可能失败的信息。任何帮助都非常感谢。
蒂亚。
温菲普
编辑 1.添加代码片段。
// ICLRRuntimeInfo interface pointer
CComQIPtr<ICLRRuntimeInfo> pCLRRuntimeInfo = pUnk;
if (!pCLRRuntimeInfo)
{
cout << "failed to get run time info interface pointer" << endl;
return;
}
TCHAR version[128];
memset(version, 0, 128);
DWORD count = 127;
pCLRRuntimeInfo->GetVersionString(version, &count);
cout << version << endl;
// ICLRRuntimeHost
CComPtr<ICLRRuntimeHost> pCLRRuntimeHost = 0;
hr = pCLRRuntimeInfo->GetInterface(CLSID_CLRRuntimeHost, IID_ICLRRuntimeHost, (LPVOID *)&pCLRRuntimeHost);
if (FAILED(hr))
{
cout << "failed to get run time host interface pointer" << endl;
return;
}
// ICLRControl
CComPtr<ICLRControl> pCLRControl = 0;
hr = pCLRRuntimeHost->GetCLRControl(&pCLRControl);
if (FAILED(hr))
{
cout << "failed to get clr control interface pointer" << endl;
return;
}
///////////////////////////////////////////
// Everything is successful upto this point
///////////////////////////////////////////
// ICLRGCManager
CComPtr<ICLRGCManager> pCLRGCManager = 0;
hr = pCLRControl->GetCLRManager(IID_ICLRGCManager, (LPVOID *)&pCLRGCManager);
if (FAILED(hr))
{
cout << "failed to get GC manager interface pointer" << endl;
return;
}
// Above call fails with the error 0x81031022, though everything is as per the MSDN documentation for the API
在 GitHub 上查看此源代码,如果运行时已经启动,看起来CCorCLRControl::GetCLRManager
将返回HOST_E_INVALIDOPERATION
。
这就解释了为什么您在尝试"锁定已加载的 CLR 实例"时收到该错误代码,但在显式创建 CLR 实例时却成功
相关文章:
- 通过 host() 从 af::array 检索数据会导致错误的数据
- 使用提升 asio 时出现"resolve: Host not found (authoritative)"异常
- mingw32_gt_pch_use_address中的内部错误,在config/i386/host-mingw32.c
- cudaMallocManaged for host-initiated variable
- Makefile for host & target
- 内核调用会产生错误"error: a host function call cannot be configured"。调用有什么问题?
- Watson 通过 C++ Boost Websockets 的文本到语音转换 - "No such host is known"
- 提升 ASIO:"host not found (authorative)"
- 侦听传入数据时"An existing connection was forcibly closed by the remote host"
- C++/MySQL - 通过主机地址访问数据库时'Unknown MySQL server host';没有 IP
- 在iOS上提升ASIO错误"Host not found"
- 可以以某种方式从私人课程中检索"host instance"吗?
- 配置文件上——host参数的有效参数列表
- 如果URL作为参数提供,c++ curl无法解析host