_com_ptr_t :: CreateInstance, HRESULT = ERROR_CANNOT_FIND_WND_CLASS - PullRequest
0 голосов
/ 14 ноября 2018

У меня проблема с загрузкой интерфейса COM.

Я немного объясню контекст:

У меня есть CredentialProvider (работает на winlogon, поэтому), который делает loadlibrary + getProcAddress на DLL. Эта 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, наконец, загружает библиотеку / getProcAddress эту же DLL.

И когда он пытается создать экземпляр на __uuidof (соединение), он завершается ошибкой «ERROR_CANNOT_FIND_WND_CLASS - не удается найти класс окна».

Как мне интерпретировать эту ошибку? На самом деле, я должен?

Кто-нибудь имеет представление о том, почему он может потерпеть неудачу с Windows-службой, в то время как он успешно работает несколько секунд назад с помощью credentialProvider?

Не стесняйтесь спрашивать, если какие-либо детали отсутствуют.

Спасибо за любое решение / подсказку / подсказку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...