The following table shows the COM interfaces with a description of the purpose of each.
| Programming element | Description | 
|---|---|
| IAccessControl | This interface manages access to objects and properties. | 
| IBindCtx | This interface provides access to a bind context, which is an object that stores information about a particular moniker binding operation. | 
| ICatInformation | This interface provides methods for obtaining information about the categories implemented or required by a certain class, as well as information about the categories registered on a given machine. | 
| ICatRegister | This interface provides methods for registering and unregistering component category information in the registry. | 
| IClassActivator | This interface specifies a method that retrieves a class object. | 
| IClassFactory | Because this interface contains two methods intended to deal with an entire class of objects, it is implemented on the class object for a specific class of objects, identified by a class identifier (CLSID). | 
| IClassFactory2 | This interface enables a class factory object, in any sort of object server, to control object creation through licensing. | 
| IClientSecurity | This interface gives the client control over the security settings for each individual interface proxy of an object. | 
| IConnectionPoint | This interface supports connection points for connectable objects. | 
| IConnectionPointContainer | This interface supports connection points for connectable objects. | 
| IContinueCallback | This interface is a generic callback mechanism for interruptible processes that should periodically ask an object whether to continue. | 
| IDataObject | This interface specifies methods that enable data transfer and notification of changes in data. | 
| IDccMan | This interface is implemented by Connection Manager. It allows an application some control of the connection manager and the ability to register for connection notifications. | 
| IDccManSink | This interface is implemented by a client application that needs to be notified by Connection Manager about the connection and disconnection events it handles. | 
| IEnumConnectionPoints | This interface enumerates connection points. Connectable objects support the following features: | 
| IEnumConnections | This interface enumerates the current connections for a connectable object. | 
| IEnumFORMATETC | This interface is used to enumerate an array of FORMATETC structures. | 
| IEnumMoniker | This interface is used to enumerate the components of a moniker or to enumerate the monikers in a table of monikers. | 
| IEnumSTATDATA | This interface is used to enumerate through an array of STATDATA structures, which contain advisory connection information for a data object. | 
| IEnumSTATSTG | This interface is used to enumerate through an array of STATSTG structures that contains statistical information about an open storage, stream, or byte array object. | 
| IEnumString | This interface enumerates strings. | 
| IEnumUnknown | This enumerator enumerates objects with the IUnknown interface. | 
| IErrorlog | This interface is an abstraction of an error log used to communicate detailed error information between a client and an object. | 
| IExternalConnection | This interface manages a server object's count of marshaled, or external, connections. | 
| IFillLockBytes | This interface enables downloading code to write data asynchronously to a structured storage byte array. | 
| IGlobalInterfaceTable | This interface allows any apartment in a process to get access to an interface implemented on an object in any other apartment in the process. | 
| IMalloc | This interface allocates, frees, and manages memory. | 
| IMallocSpy | This interface is a debugging interface that allows application developers to monitor (spy on) memory allocation, detect memory leaks, and simulate memory failure in calls to IMalloc methods. | 
| IMarshal | This interface enables a COM object to define and manage the marshaling of its interface pointers. | 
| IMessageFilter | This interface provides COM servers and applications with the ability to selectively handle incoming and outgoing COM messages while waiting for responses from synchronous calls. | 
| IMoniker | This interface contains methods that allow you to use a moniker object, which contains information that uniquely identifies a Component Object Model (COM) object. | 
| IMultiQI | This interface enables a client to query an object proxy, or handler, for multiple interfaces, using a single RPC call. | 
| IObjectSafety | This interface allows a container to retrieve the current initialization or scripting capabilities for an ActiveX control and to ask a control to make itself safe. | 
| IOleControlSite | This interface provides methods to enable a site object to manage each embedded control witin a container. | 
| IOleItemContainer | This interface is used by item monikers when they are bound to the objects they identify. | 
| IOleLink | This interface provides functions for managing information about the linked object, such as the location of the link source and the cached presentation data for the linked object. | 
| IParseDisplayName | This interface parses a displayable name string to convert it into a moniker for custom moniker implementations. | 
| IPersist | This interface defines the single method GetClassID, which is designed to supply the class identifier (CLSID) of an object that can be stored persistently in the system. | 
| IPersistFile | This interface provides methods that permit an object to be loaded from or saved to a disk file, rather than a storage object or stream. | 
| IPersistPropertyBag | This interface works in conjunction with IPropertyBag to define an individual property-based persistence mechanism. | 
| IPersistStorage | This interface defines methods that enable a container application to pass a storage object to one of its contained objects and to load and save the storage object. | 
| IPersistStream | This interface provides methods for saving and loading objects that use a simple serial stream for their storage needs. | 
| IPersistStreamInit | This interface is defined as a replacement for IPersistStream to add an initialization method, InitNew. | 
| IProgressNotify | This interface enables applications and other objects to receive notifications of changes during a downloading operation. | 
| IPropertyBag | This interface provides an object with a property bag in which the object can persistently save its properties. | 
| IProvideClassInfo | This interface provides a single method for accessing the type information for an object's coclass entry in its type library. | 
| IProvideClassInfo2 | This interface is a simple extension to the IProvideClassInfo interface for the purpose of making it quick and easy to retrieve an object's outgoing interface IID for its default event set. | 
| IROTData | This interface is implemented by monikers to enable the Running Object Table (ROT) to compare monikers against each other. | 
| IRunnableObject | This interface enables a container to control the running of its embedded objects. | 
| IRunningObjectTable | This interface manages access to the Running Object Table (ROT), a globally accessible look-up table on each workstation. | 
| ISequentialStream | This interface supports simplified sequential access to stream objects. | 
| IServerSecurity | This interface is used by a server to help authenticate the client and to manage impersonation of the client. | 
| ISpecifyPropertyPages | This interface is used to support property pages for an object. | 
| IStdMarshalInfo | This interface returns the CLSID identifying the handler to be used in the destination process during standard marshaling. | 
| ISurrogate | This interface defines two methods: one for dynamically loading new DLL servers into an existing surrogate, and one to free the surrogate when it is no longer needed. | 
| IUnknown | This interface enables clients to get pointers to other interfaces on a specified object through the IUnknown::QueryInterface method, and manage the existence of the object through the IUnknown::AddRef and IUnknown::Release methods. | 
| IViewObject2 | This interface is an extension to the IViewObject interface, which returns the size of the drawing for a given view of an object. | 
| IViewObjectEx | This interface is an extension derived from the IViewObject2 interface to provide support for: | 
| IAccessControl | This interface manages access to objects and properties. | 
See Also
Send Feedback on this topic to the authors