CLSCTX

The CLSCTX enumeration constants specify the execution context for a class object. Different pieces of code can be associated with one CLSID for use in different execution contexts.

typedef enum tagCLSCTX
{
CLSCTX_INPROC_SERVER = 1,
CLSCTX_INPROC_HANDLER = 2,
CLSCTX_LOCAL_SERVER = 4
} CLSCTX;

Elements

CLSCTX_INPROC_SERVER

The code that creates and manages objects of this class runs in the same process as the caller of the function specifying the class context.

CLSCTX_INPROC_HANDLER

The code that manages objects of this class is an in-process handler. This is a DLL that runs in the client process and implements client-side structures of this class when instances of the class are accessed remotely.

CLSCTX_LOCAL_SERVER

The EXE code that creates and manages objects of this class is loaded in a separate process space (runs on same machine but in a different process).

To indicate that multiple contexts are acceptable, you can string multiple values together with boolean ORs. The contexts are tried in the order in which they are listed.

The following table shows the use and reasons for CLSCTX values in calls to CoGetClassObject, which is used in the implementation of other OLE functions:

Function Called
Context Flag Used
OleLoad
CLSCTX_INPROC_HANDLER | CLSCTX_INPROC_SERVER
Putting an OLE object into the loaded state requires in-process access; but, it doesn't matter if all of the object's function is presently available.
IRunnableObject::Run
CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER
Running an OLE object requires connecting to the full code of the object wherever it is located.
CoUnMarshalInterface
CLSCTX_INPROC_HANDLER
Unmarshalling needs the form of the class designed for remote access.

See Also

CoCreateInstance, CoGetClassObject, CoRegisterClassObject

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
Databases for Amazon shops developers
Amazon Categories Database
Browse Nodes Database