Средства разработки приложений


Часть 1: Дублирование интерфейсов - часть 2


Если у вас нет OLE/COM Object Viewer, спишите его из http://www.microsoft.com/oledev/ и запустите приложение.

Запустив OLE/COM Object Viewer, выберите режим View | Expert для просмотра Type Libraries. Пролистайте список и откройте папку под названием Type Libraries. Пролистайте папку пока не найдете GasTankLevelGetter 1.0 TypeLibrary (Ver 1.0). Выделите этот элемент списка и вы увидите на правой панели ID библиотеки типа и ее полный путь, как показано на рисунке.

Двойной щелчок на GasTankLevelGetter откроет окно, отображающее всю библиотеку типа. Эта информация берется их данных регистров, которые создаются при регистрации DLL. Данные по TypeLib хранятся в HKEY_CLASSES_ROOT \ TypeLib.

Раздел coclass содержит список поддерживаемых интерфейсов для компонентного объекта. Объект может иметь любое количество интерфейсов, перечисляемых в его теле и полностью описывающих тот набор интерфейсов, которые этот объект реализует, как входящих, так и исходящих. Ниже приведены CLSID и интерфейс, содержащиеся в coclass для данного COM объекта:

CLSID: 8A544DC6-F531-11D0-A980-0020182A7050
Interface Name: ILevelGetter

[ uuid(8A544DC6-F531-11D0-A980-0020182A7050), helpstring("LevelGetter Class") ] coclass LevelGetter { [default] interface ILevelGetter; };

Раскрывая далее информацию по интерфейсу наподобие coclass, мы можем определить:

  • ID интерфейса 8A544DC5-F531-11D0-A9 80-0020182A7050.
  • Интерфейс наследуется от IUnknown.
  • Интерфейс поддерживает методы. Первые три метода возвращают значения типа long, а четвертый - указатель на BSTR.
[ odl, uuid(8A544DC5-F531-11D0-A980-0020182A7050), helpstring("ILevelGetter Interface") ] interface ILevelGetter : IUnknown { HRESULT _stdcall GetLowestPossibleSafeLevel([out, retval] long* plLowestSafeLevel); HRESULT _stdcall GetHighestPossibleSafeLevel([out, retval] long* plHighestSafeLevel); HRESULT _stdcall GetCurrentLevel([out, retval] long* plCurrentLevel); HRESULT _stdcall GetTextMessage([out, retval] BSTR* ppbstrMessage); };

Более детальный взгляд на структуру type library открывает нам методы и ID интерфейсов.




Начало  Назад  Вперед