我有一个用Delphi编写的IFilter,我正在尝试在64位Windows 7桌面搜索中使其正常工作。
由于它是用Delphi开发的,所以我只能将其编译为32位DLL。
为了解决这个问题,我正在尝试使用Visual C ++编写64位IFilter Dll,该Dll在内部使用我的32位IFilter Com对象,使用此处概述的DllSurogate技术。
我已经在测试的64位控制台应用程序下将所有这些都运行良好。我可以创建我的64位包装器的实例,该实例在内部创建32位IFilter对象并将所有调用委托给它。然后我就可以检索文档的内容。
问题是当我将其注册到WDS时,64位包装器无法再创建32位对象。CoCreateInstance返回“Server Execution Failed”(CO_E_SERVER_EXEC_FAILURE)。
这是我在64位包装器中创建32位对象的方法:
result = CoCreateInstance(clsid, 0, CLSCTX_LOCAL_SERVER , IID_IFilter, (LPVOID*)&m_pFilter);
有什么想法这是为什么。这是WDS中IFilters的权限限制吗?
谢谢你的帮助。