Интерфейс IUnknown

По аналогии с наследованием классов, предком которых является базовый класс TObject, все интерфейсы являются прямыми или косвенными наследниками интерфейса IUnknown. Этот базовый интерфейс описан в модуле System следующим образом (листинг 10.3).

Листинг 10.3.Описание базового интерфейса IUnknown

type
IUnknown = interface
[ '{ 00000000-0000-0000-C000-000000000046} ' ]
function QueryInterface(const IID: TGUID; out Obj): Integer; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall; end;

Синтаксис описания интерфейса похож на описание класса. Главное отличие заключается в том, что интерфейс может быть связан с глобальным уникальным идентификатором (Global Unique Identifier, GUID).

GUID — это 128-разрядное целое число, которое используется для уникальной идентификации интерфейсов. Так как в 128-ми разрядах можно закодировать большое количество чисел, GUID гарантирует глобальную уникальность идентификатора интерфейса. То есть, практически невозможно, чтобы на двух компьютерах GUID совпал. Алгоритм генерации GUID основан на аппаратной части компьютера (частота процессора, номер сетевой карты и т. д.). В результате работы алгоритма, который может быть реализован с помощью функции API CoCreateGUID( ), получается запись типа TGUID. Эту запись можно определить в виде строки следующего формата:

'{хххххххх-хххх-хххх-хххх-хххххххххххх}'

Для создания нового GUID в среде Kylix достаточно нажать комбинацию клавиш <Ctrl>+<Shift>+<G> при работе редактора кода.

Итак, интерфейс IUnknown поддерживает три метода, которые наследуются всеми интерфейсами:

Hosted by uCoz