Component Categories for Describing Internet-Aware Objects

A category identifier (CATID) is a GUID that is stored in the registry as an attribute of a class. There are various useful categories for introducing a Microsoft ActiveX control to its container; they describe which features the object requires and those it implements. The following tables list the categories used to Internet-aware objects: first, those that a control might require, and then those that it might implement.

Required categories Description
CATID_PersistsToMoniker, CATID_PersistsToStreamInit, CATID_PersistsToStream, CATID_PersistsToStorage, CATID_PersistsToMemory, CATID_PersistsToFile, CATID_PersistsToPropertyBag Each category is mutually exclusive and is used only when an object supports but one persistence mechanism at all—thus the mutual exclusion. Containers that do not support the persistence mechanism described by one of these categories should prevent themselves from creating an object of classes so marked.
CATID_RequiresDataPathHost The object requires the ability to save data to one or more paths and requires container involvement, therefore requiring container support for IBindHost.

 

Implemented categories Description
CATID_PersistsToMoniker, CATID_PersistsToStreamInit, CATID_PersistsToStream, CATID_PersistsToStorage, CATID_PersistsToMemory, CATID_PersistsToFile, CATID_PersistsToPropertyBag Object supports the corresponding IPersist* mechanism for the category.
CATID_InternetAware The object is Internet-aware, meaning that the object needs no special behavior to work well in the Internet environment, or the object uses large data sets but is written to retrieve that data asynchronously. In addition, all Internet-aware objects are marked with OLEMISC_SETCLIENTSITEFIRST. This category is defined to help authoring tools differentiate between objects that might or might not understand the special implications of the Internet.
CATID_SafeForInitializing The control can safely be initialized from untrusted data. Controls that guarantee no security breach regardless of the data source are considered safe for initialization.
CATID_SafeForScripting The control is considered safe even if used from untrusted script. Such controls generally do not rely on system settings, nor attempt to write to or read from privileged areas of the system disk or registry.
CATID_DesignTimeUIActivatableControl The control implements a design-time UI.
CATID_Insertable, CATID_Control, CATID_Programmable, CATID_IsShortcut, CATID_NeverShowExt, CATID_DocObject, CATID_Printable Not used.

 

 

The following table provides the exact CATID value assigned to each category.

Category CATID
CATID_RequiresDataPathHost 0DE86A50-2BAA-11CF-A229-00AA003D7352
CATID_PersistsToMoniker 0DE86A51-2BAA-11CF-A229-00AA003D7352
CATID_PersistsToStorage 0DE86A52-2BAA-11CF-A229-00AA003D7352
CATID_PersistsToStreamInit 0DE86A53-2BAA-11CF-A229-00AA003D7352
CATID_PersistsToStream 0DE86A54-2BAA-11CF-A229-00AA003D7352
CATID_PersistsToMemory 0DE86A55-2BAA-11CF-A229-00AA003D7352
CATID_PersistsToFile 0DE86A56-2BAA-11CF-A229-00AA003D7352
CATID_PersistsToPropertyBag 0DE86A57-2BAA-11CF-A229-00AA003D7352
CATID_InternetAware 0DE86A58-2BAA-11CF-A229-00AA003D7352
CATID_SafeForInitializing 7DD95802-9882-11CF-9FA9-00AA006C42C4
CATID_SafeForScripting 7DD95801-9882-11CF-9FA9-00AA006C42C4

 

For more information on categories, see the Component Categories document.

Conceptual

Safe Initialization and Scripting for ActiveX Controls

Storage of Control Persistent Data