Шаг 18 - Интерфейс IUnknown

Основой любого объекта является интерфейс IUnknown. Этот интерфейс используется для:

Реализация интерфейса IUnknown превращает объект в объект COM. Реализуется этот интерфейс по определенным правилам. Для его реализации необходимо, чтобы класс унаследовал этот абстрактный интерфейс и реализовал его методы. Наследование производится так.

#include "stdafx.h"
#include "ole2.h"

class COleTestAbstract
{
public:
	virtual void Msg()=0;
};

class COAbsatract : public COleTestAbstract, public IUnknown
{
public:
	 void Msg();
};

У данного интрефейса есть три метода.

Каждый объект читает количество ссылок на себя. Для этого в классе необходимо завести переменную, в которой будет храниться количество обращений. Обычно это переменная типа ULONG хотя можно использовать и int. При объявлении методов используются определения STDMETHOD или STDMETHOD_, чем они отличаются ??? Первое объявление всегда возвращает HRESULT, а второе в зависимости от первого указанного типа.

STDMETHOD   (QueryInterface) // вернет HRESULT
STDMETHOD_  (ULONG, AddRef)  // вернет ULONG

IUnknown является главным интерфейсом. Через него производится доступ к другим интерфейсам. Ну типо того, что Вы спрашиваете у объекта умеет ли он делать это, а в ответ объект возврашает вам либо ошибку либо указатель на метод.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.