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



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


Заметим, что в этом коде не делается обычных вызовов реестровых API-функций, а вместо них для обработки реестра используется стандартный менеджер категорий.

Кроме того, стандартный менеджер категорий позволяет приложениям запрашивать реестр найти информацию о категориях. Эта функциональная возможность предоставляется через интерфейс ICatInformation:

[object, uuid(0002E013-0000-0000-C000-000000000046)] interface ICatInformation : IUnknown { // get list of known categories // получаем список известных категорий HRESULT EnumCategories([in] LCID lcid, [out] IEnumCATEGORYINFO** ppeci); // get description of a particular category // получаем описание определенной категории HRESULT GetCategoryDesc([in] REFCATID rcatid, [in] LCID lcid, [out] OLECHAR ** ppszDesc); // get list of classes compatible with specified categories // получаем список классов, совместимых с указанными категориями HRESULT EnumClassesOfCategories( [in] ULONG cImplemented, // -1 indicates ignore // (-1) означает игнорировать [in,size_is(cImplemented)] CATID rgcatidImpl[], [in] ULONG cRequired, // -1 indicates ignore // (-1) означает игнорировать [in,size_is(cRequired)] CATID rgcatidReq[], [out] IEnumCLSID** ppenumClsid);

// verify class is compatible with specified categories // проверяем, совместим ли класс с указанными категориями HRESULT IsClassOfCategories([in] REFCLSID rclsid, [in] ULONG cImplemented, [in,size_is(cImplemented)] CATID rgcatidImpl[], [in] ULONG cRequired, [in,size_is(cRequired)] CATID rgcatidReq[]);

// get list of class's implemented categories // получаем список реализованных категорий класса HRESULT EnumImplCategoriesOfClass([in] REFCLSID rclsid, [out] IEnumCATID** ppenumCatid);

// get list of class's required categories // получаем список категорий, необходимых классу HRESULT EnumReqCategoriesOfClass([in] REFCLSID rclsid, [out] IEnumCATID** ppenumCatid); }

Большинство этих методов возвращают свои курсоры на списки идентификаторов категории или класса. Эти указатели называются нумераторами (enumerators) и подробно описываются в главе 7.




Содержание  Назад  Вперед