2010-11-11 59 views
1

我一直在尋找在Windows中的DLL,而且我看到有4個COM導出函數的DLL很多:DLL導出4個COM函數但不是COM對象?我只是不明白!

DllCanUnloadNow 的DllGetClassObject 中的DllRegisterServer DllUnregisterServer的

只是一個例子: C:\ WINDOWS \ system32 \ actxprxy.dll // < - WINDOWS 7 !!! (我猜Vista也是)

B-U-T當我在尋找COM對象時(使用各種工具,包括visual studio,nirsoft.net的DLLEXP.exe和其他工具)我找不到任何!

此外,視覺工作室說,它不是一個COM對象,它怎麼可能?! 我可以想象一個沒有任何接口/類的COM DLL,但我知道某些應用程序使用這些DLL。

任何人都可以解釋這裏發生了什麼? :-)

謝謝!

+0

難道這只是閒散的好奇心,還是什麼?它的名字暗示它用於某種代理,當然(在我的XP機器上)它似乎已經在註冊表中正確註冊了(其他名稱中也包含prxy或pxy的DLL也是如此) – 2010-11-11 08:15:49

回答

3

COM定義了vtable和調用COM接口方法的參數。但是,指向方法實現的指針永遠不會使用DLL Export機制導出:這些指向方法實現的指針存儲在由庫創建的COM對象的vtable上。

也就是說,在不要求COM庫爲您創建一個COM對象的情況下,不可能知道COM庫如何「構造」COM對象。 「構建」過程的一部分涉及將正確的方法指針放入對象的虛擬表中。