DLL экспортирует 4 функции COM, но не COM-объект ?!Я просто не понимаю! - PullRequest
1 голос
/ 11 ноября 2010

Я просматривал библиотеки DLL в Windows и видел много библиотек DLL, которые имеют 4 экспортированные функции COM:

DllCanUnloadNow DllGetClassObject DllRegisterServer DllUnregisterServer

только для примера: c: \windows \ system32 \ actxprxy.dll // <- WINDOWS 7 !!!(Я думаю, Vista тоже) </p>

B - U - T, когда я ищу COM-объекты (используя различные инструменты, в том числе Visual Studio, DLLEXP.exe nirsoft.net и другие инструменты) Я не могу найти какие-либо!

Более того, visual studio говорит, что это не COM-объект, как это возможно ?!Я могу думать о COM DLL без каких-либо интерфейсов / классов, но я знаю, что некоторые приложения используют эти DLL.

Кто-нибудь может объяснить, что здесь происходит?: -)

Спасибо!

1 Ответ

3 голосов
/ 11 ноября 2010

COM определяет vtables и параметры вызова методов интерфейса COM.Однако указатели на реализации методов никогда не экспортируются с использованием механизма экспорта DLL: эти указатели на реализации методов хранятся в виртуальной таблице COM-объекта, созданного библиотекой.

То есть без запросаБиблиотека COM, чтобы создать один объект COM для вас, невозможно знать, как библиотека COM будет «создавать» объект COM.Часть этого процесса «построения» включает в себя размещение правильных указателей на методы в виртуальной таблице объекта.

...