Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
A version of this page is also available for
4/8/2010

This method retrieves the class identifier (CLSID) of an object. The CLSID is a unique value that identifies the code that can manipulate the persistent data.

Syntax

HRESULT GetClassID( 
  CLSID* 
pClassID
);

Parameters

pClassID

[out] Pointer to the location of the CLSID on return.

The CLSID is a globally unique identifier (GUID) that uniquely represents an object class that defines the code that can manipulate the object's data.

Return Value

The following table shows the return values for this method.

Value Description

S_OK

The CLSID was successfully retrieved.

E_FAIL

The CLSID could not be retrieved.

Remarks

The GetClassIDmethod retrieves the class identifier (CLSID) for an object, used in later operations to load object-specific code into the caller's context.

To determine whether the platform supports this interface, see Determining Supported COM APIs.

Notes to Callers

A container application might call this method to retrieve the original CLSID of an object that it is treating as a different class. Such a call would be necessary if a user performed an editing operation that required the object to be saved.

If the container were to save it using the treat-as CLSID, the original application would no longer be able to edit the object.

Typically, in this case, the container calls the OleSavehelper function, which performs all the necessary steps. For this reason, most container applications have no need to call this method directly.

The exception would be a container that provides an object handler for certain objects. In particular, a container application should not get an object's CLSID and then use it to retrieve class specific information from the registry. Instead, the container should use IOleObjectand IDataObjectinterfaces to retrieve such class-specific information directly from the object.

Notes to Implementers

Typically, implementations of this method simply supply a constant CLSID for an object. If, however, the object's TreatAsregistry key has been set by an application that supports emulation (and so is treating the object as one of a different class), a call to IPersist::GetClassIDmust supply the CLSID specified in the TreatAskey. For more information on emulation, refer to CoTreatAsClass.

When an object is in the running state, the default handler calls an implementation of IPersist::GetClassIDthat delegates the call to the implementation in the object. When the object is not running, the default handler instead calls the ReadClassStgfunction to read the CLSID that is saved in the object's storage.

Requirements

Header objidl.h, objidl.idl
Library ole32.lib, uuid.lib
Windows Embedded CE Windows CE 2.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also