我在加载COM接口时遇到问题。
我会稍微解释一下上下文:
我有一个CredentialProvider(在winlogon上运行),它在dll上执行loadlibrary + getProcAddress。此dll在其每个功能中都以这种方式加载COM接口:
_ConnectionPtr con;
hr = con.CreateInstance(__uuidof(Connection));
if(FAILED(hr)
{
_com_error err(hr);
LPCTSTR errMsg = err.ErrorMessage();
Log("hr = {%s}", errMsg);
CoInitializeEx(NULL, COINIT_MULTITHREADED);
hr = con.CreateInstance(__uuidof(Connection));
}
它工作正常。
但是,在进入userSession之后,Windows服务最终会将该相同的dll加载到liblibrary / getProcAddress。
当它尝试在__uuidof(Connection)上创建CreateInstance时,它将失败,并显示错误“ ERROR_CANNOT_FIND_WND_CLASS-找不到窗口类”。
我应如何解释此错误?其实我应该吗?
有人知道为什么为什么Windows服务在credentialProvider之前成功几秒钟会失败吗?
随时询问是否缺少任何细节。
感谢您提供任何解决方案/线索/提示。