Интерфейс — Unknown

Так же как и класс Delphi имеет базовый класс TObject, так и для интерфейсов определен базовый интерфейс — iunknown. По правде говоря, в Delphi, начиная с 6 версии, этот интерфейс именуется imterface, что в принципе не меняет его сути. Для интерфейсов, в отличие от объектов, наследование не может означать повторного использования кода, т. к. интерфейс и его реализация — две абсолютно разные вещи. Также нужно сказать, что наследование интерфейсов не может быть выборочным, т. е. производный интерфейс наследует все методы базового интерфейса.
Интерфейс iunknown содержит всего три виртуальных метода. Первый — это получение указателя на интерфейс СОМ-объекта:
function Querylnterfасе(
const IID: TGUID;
out Obj): HResult; stdcall;
Здесь:
П iid — уникальный идентификатор запрашиваемого интерфейса;
П obj — переменная, в которую будет занесен запрашиваемый интерфейс. Если объект не поддерживает запрашиваемый интерфейс, то в перемен ную будет записано нулевое (nil) значение.
Оставшиеся два метода управляют подсчетом ссылок. Увеличение числ ссылок на единицу:
function _AddRef: Integer; stdcall;
И уменьшение числа ссылок на объект на единицу:
function _Release: Integer; stdcall;
Методы управления подсчетом ссылок не требуется вызывать в явном ви де — Delphi сделает это автоматически. Это означает, что при создани СОМ-объекта будет автоматически вызван метод AddRef, а при присваивании указателю на интерфейс значения nil (или когда объект выйдет за область видимости) автоматически будет вызван метод Release.

Желательно оставить комментарий, также можно поставить трэкбек со своего блога или сайта.

Написать сообщение

Яндекс.Метрика