Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КОП__подготовка.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
42 Кб
Скачать
☆
  1. Реализация метода QueryInterface(). Правила использования QueryInterface().

Метод QueryInterface() позволяет по идентификатору интерфейса (iid) получить указатель на интерфейс.

Функция AddRef() ведёт счётчик ссылок на этот интерфейс.

Функция Release() уменьшает счётчик ссылок на этот интерфейс.

public QueryInterface()

AddRef()

Release()

Fx1()

Fx2()

Метод QueryInterface() имеет два параметра: первый - iid – interface IDefiner (GUID interface),(указатель на GUID), а второй – указатель на интерфейс.

Правила: Создаётся указатель на интерфейс и его указатель передаётся на вход QueryInterface() вместе с GUID. После выполнения QueryInterface() этот указатель будет указывать на реализацию этого интерфейса в COM.

В начало

  1. Время жизни компонента. Метод AddRef() и Release(). Правила подсчета ссылок.

Срок жизни компонента (сервера) зависит от наличия клиентов. Клиент регистрируется на сервере с помощью метода QueryInterface(), при этом увеличивается счётчик ссылок методом AddRef(). После того, как компонент перестаёт быть нужным вызывается метод Release, который разрывает связь между клиентом и компонентом. При этом счётчик ссылок уменьшается на 1. До тех пор, пока счётчик ссылок не равен нулю, COM-компонет имеет клиентов, а значит должен функционировать. После того, как счётчик ссылок обнулился, это означает, что клиентов не осталось, и необходимость содержания его в рабочем состоянии отпала.

Правила подсчёта ссылок: при каждом успешном обращении к QueryInterface() счётчик ссылок увеличивается с помощью AddRef(). Release уменьшает счётчик на 1 иразрывает связь между клиентом и компонентом.

Функция AddRef() ведёт счётчик ссылок на этот интерфейс.

Функция Release() уменьшает счётчик ссылок на этот интерфейс.

public QueryInterface()

AddRef()

Release()

Fx1()

Fx2()

В начало

  1. Время жизни компонента. Метод Release(). Правила подсчета ссылок.

Срок жизни компонента (сервера) зависит от наличия клиентов. Клиент регистрируется на сервере с помощью метода QueryInterface(), при этом увеличивается счётчик ссылок методом AddRef(). После того, как компонент перестаёт быть нужным вызывается метод Release, который разрывает связь между клиентом и компонентом. При этом счётчик ссылок уменьшается на 1. До тех пор, пока счётчик ссылок не равен нулю, COM-компонет имеет клиентов, а значит должен функционировать. После того, как счётчик ссылок обнулился, это означает, что клиентов не осталось, и необходимость содержания его в рабочем состоянии отпала.

Правила подсчёта ссылок: при каждом успешном обращении к QueryInterface() счётчик ссылок увеличивается с помощью AddRef(). Release уменьшает счётчик на 1 иразрывает связь между клиентом и компонентом.

Функция AddRef() ведёт счётчик ссылок на этот интерфейс.

Функция Release() уменьшает счётчик ссылок на этот интерфейс.

public QueryInterface()

AddRef()

Release()

Fx1()

Fx2()

В начало

  1. Реализация компонента в виде динамической библиотеки. Диаграмма компонент.

Диагра́мма компоне́нтов, Component diagram — статическая структурная диаграмма, показывает разбиение программной системы на структурные компоненты и связи (зависимости) между компонентами. В качестве физических компонентов могут выступать файлы, библиотеки, модули, исполняемые файлы, пакеты и т. п.

Реализация компонента: Создать проект Win32, выбрать в мастере создания проекта «Библиотека DLL», создать в проекте заголовочные файлы и файлы исходного кода, в которых реализованы библиотечные функции. Классы, функции и т.п., которые должны быть доступны клиенту библиотеки помечаются как экспортируемые одним из двух способов: через def-файл, либо с помощью добавления конструкции « __declspec(dllexport) тип данных имя функции();»перед объявлением экспортируемого класса или функции.

В начало