Сущность технологии COM


Категории компонентов - часть 3


Получив эти записи, сам клиент перед активацией должен убедиться в том, что он удовлетворяет запрошенным категориям. СОМ не обеспечивает согласование с клиентом.

Элементы категорий компонентов могут быть зарегистрированы либо с помощью явных функций реестра, либо с использованием предлагаемого СОМ менеджера категорий компонентов (component category manager). Этот менеджер категорий компонентов объявляется в СОМ как создаваемый СОМ-класс (CLSID_StdComponentCategoriesMgr), который реализует интерфейс ICatRegister для регистрации информации о категории и интерфейс ICatInformation для запроса информации о категории. Интерфейс ICatRegister позволяет библиотекам DLL сервера легко добавлять в реестр необходимые элементы:

[object, uuid(0002E012-0000-0000-C000-000000000046)] interface ICatRegister : IUnknown { // description info for a category // описательная информация для категории typedef struct tagCATEGORYINFO { CATID catid; LCID lcid; OLECHAR szDescription[128]; } CATEGORYINFO;

// register cCts category descriptions // регистрируем описания категории cCts HRESULT RegisterCategories([in] ULONG cCts, [in, size_is(cCts)] CATEGORYINFO rgCatInfo[]);

// unregister cCategories category descriptions // отменяем регистрацию описаний категории cCategories HRESULT UnRegisterCategories([in] ULONG cCategories, [in, size_is(cCategories)] CATID rgcatid[]);

// indicate a class implements one or more categories // показываем, что класс реализует одну или более категорий HRESULT RegisterClassImplCategories([in] REFCLSID rclsid, [in] ULONG cCategories, [in, size_is(cCategories)] CATID rgcatid[]);

// deindicate a class implements one or more categories // перестаем показывать, реализует класс одну или более категорий HRESULT UnRegisterClassImplCategories([in] REFCLSID rclsd, [in] ULONG cCategories, [in, size_is(cCategories)] CATID rgcatid[]);

// indicate a class requires one or more categories // показываем, что класс требует одну или более категорий HRESULT RegisterClassReqCategories([in] REFCLSID rclsid, [in] ULONG cCategories, [in, size_is(cCategories)] CATID rgcatid[]):




Начало  Назад  Вперед



Книжный магазин