У меня в Delphi написан IFilter, который я пытаюсь заставить работать под 64-битной Windows 7 Desktop Search.
Благодаря тому, что он разрабатывается в Delphi, я могу скомпилировать его только как 32-битную DLL.
Чтобы обойти это, я пытаюсь написать 64-битный IFilter Dll в Visual C ++, который внутренне использует мой 32-битный объект IFilter Com, используя технику DllSurogate, описанную здесь .
У меня все это работает нормально в тестовом 64-битном консольном приложении. Я могу создать экземпляр моей 64-битной оболочки, которая внутренне создает 32-битный объект IFilter и делегирует ему все вызовы. Затем я могу получить содержимое моего документа.
Проблема в том, что когда я регистрируюсь в WDS, 64-битная оболочка больше не может создавать 32-битный объект. CoCreateInstance возвращает «Ошибка выполнения сервера» (CO_E_SERVER_EXEC_FAILURE).
Это я создаю 32-битный объект в стороне от 64-битной оболочки
result = CoCreateInstance(clsid, 0, CLSCTX_LOCAL_SERVER , IID_IFilter, (LPVOID*)&m_pFilter);
Любая идея, почему это происходит. Это ограничение разрешений с IFilters в WDS?
Спасибо за любую помощь в этом.