_com_ptr_t ::: CreateInstance,HRESULT = ERROR_CANNOT_FIND_WND_CLASS

时间:2018-11-14 13:57:33

标签: c++ com windows-services ado

我在加载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之前成功几秒钟会失败吗?

随时询问是否缺少任何细节。

感谢您提供任何解决方案/线索/提示。

0 个答案:

没有答案