2010-11-11 4 views
1

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

DllCanUnloadNow DllGetClassObject DllRegisterServer DllUnregisterServer

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

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

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

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

Спасибо!

+0

Это просто праздное любопытство, или что? Это название предполагает, что он используется для какого-то проксирования и, конечно, (на моей машине XP), он, похоже, правильно зарегистрирован в реестре (как и другие DLL-файлы, которые также имеют prxy или pxy в своих именах) –

ответ

3

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

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