Архитектура Microsoft Windows для разработчиков



              

Занятие 1. Архитектура СОМ - часть 5


Затем его можно использовать для фактического вызова свойства (или метода) средствами метода IDispatch.Invoke. Методы GetTypeInfoCount и GetTypeInfo позволяют получать из библиотеки типов компонента информацию об интерфейсах, методах и свойствах, которые он поддерживает.

Пример В этом коде на Visual Basic функция CreateObject применяется в операторе Set для создания нового объекта, который использует отложенное связывание и интерфейс IDispatch.

Dim MyObject as Object

Set MyObject = CreateObject("Word.Application")

Применение общей объектной переменной обеспечивает отложенное связывание — Вы можете использовать одну и ту же переменную для различных объектов и для объектов, которые поддерживают только отложенное связывание.

Виртуальные таблицы

Автоматизация позволяет ActiveX-клиенту вызывать метод или свойство напрямую. Этот способ, не использующий интерфейс IDispatch, называется связыванием через виртуальную таблицу. В Visual Basic применение виртуальной таблицы именуют ранним связыванием. Для него необходима информации о типах в виде библиотеки типов. Клиент получает эти данные на стадии компиляции, проверяет типы и синтаксис и затем вызывает методы и функции напрямую. На стадии выполнения раннее связывание работает гораздо быстрее, поскольку местонахождение сервера автоматизации уже известно, типы данных и синтаксис проверены, а доступ осуществляется непосредственно, без вызова IDispatch.

Для ссылки на экземпляры интерфейсов клиенты используют указатели, получая их во время создания объекта или запрашивая объект. Определив интерфейс, Вы

задаете массив указателей на функции, известный как виртуальная таблица (Virtual Table, VTBL). Функции, на которые указывают члены VTBL, называются методами, или функциями-членами интерфейса. Общепринято имена интерфейсов начинать с буквы «I».

5-5.jpg

Рис. 5.3 Применение виртуальных таблиц

Виртуальная таблица содержит список адресов всех свойств и методов, включенных в объект, в том числе функции-членов поддерживаемых им интерфейсов (рис. 5.3).


Содержание  Назад  Вперед