【问题标题】:DLL exports 4 COM function but not COM object ?! I just don't understand!DLL 导出 4 个 COM 函数而不是 COM 对象?!我就是不明白!
【发布时间】:2011-05-08 08:01:39
【问题描述】:

我一直在查看 Windows 中的 DLL,我看到许多具有 4 个 COM 导出函数的 DLL:

DllCanUnloadNow DllGetClassObject DLL注册服务器 DllUnregisterServer

只是一个例子: c:\windows\system32\actxprxy.dll //

B - U - T 当我在寻找 COM 对象时(使用各种工具,包括 Visual Studio、nirsoft.net 的 DLLEXP.exe 和其他工具)我找不到任何东西!

而且,Visual Studio 说它不是 COM 对象,这怎么可能?! 我可以想到一个没有任何接口/类的 COM DLL,但我知道某些应用程序会使用这些 DLL。

谁能解释这里发生了什么? :-)

谢谢!

【问题讨论】:

  • 这只是无聊的好奇心,还是什么?顾名思义,它用于某种代理,当然(在我的 XP 机器上)它似乎已在注册表中正确注册(与其他名称中也有 prxy 或 pxy 的 DLL 一样)

标签: c++ com windows-7 windows-vista


【解决方案1】:

COM 定义了 COM 接口方法的 vtables 和调用参数。但是,指向方法实现的指针永远不会使用 DLL 导出机制导出:这些指向方法实现的指针存储在库创建的 COM 对象的 vtable 中。

也就是说,如果不要求 COM 库为您创建一个 COM 对象,就不可能知道 COM 库将如何“构造”一个​​ COM 对象。 “构造”过程的一部分涉及将正确的方法指针放入对象的虚拟表中。

【讨论】:

    猜你喜欢
    • 2013-10-08
    • 1970-01-01
    • 2011-08-22
    • 2011-09-22
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    相关资源
    最近更新 更多