У меня проблема с загрузкой интерфейса 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?
Не стесняйтесь спрашивать, если какие-либо детали отсутствуют.
Спасибо за любое решение / подсказку / подсказку.