REGCLS
The REGCLS
enumeration defines flags used in CoRegisterClassObject
typedef enum tagREGCLS
{
REGCLS_SINGLEUSE = 0,
REGCLS_MULTIPLEUSE = 1,
REGCLS_MULTI_SEPARATE = 2,
} REGCLS;
Elements
REGCLS_SINGLEUSE
Once an
application has connected to the class object with CoGetClassObject
REGCLS_MULTIPLEUSE
Multiple
applications can connect to the class object through calls to CoGetClassObject.
REGCLS_MULTI_SEPARATE
Similar to
REGCLS_MULTIPLEUSE, except that REGCLS_MULTI_SEPARATE does not automatically
register the class object as CLSCTX_INPROC_SERVER for a local server. Instead,
it provides separate control over each context. When a class is registered this
way, if that server tries to bind to an object with its own class identifier,
it will start another copy of the server.
Remarks
In CoRegisterClassObject
The following
table summarizes the allowable flag combinations and the object registrations
affected by the combinations.
|
|
|
REGCLS_ |
|
CLSCTX_ |
Error |
Inproc |
Inproc |
Error |
CLSCTX_ |
Local |
Inproc/local |
Local |
Error |
Both of
the above |
Error |
Inproc/local |
Inproc/local |
Error |
Other |
Error |
Error |
Error |
Error |
REGCLS_MULTIPLEUSE
in combination with CLSCTX_LOCAL_SERVER automatically registers the class
object as an in-process server (CLSCTX_INPROC_SERVER). In contrast, registering
a class object as a local server and specifying REGCLS_MULTIPLE_SEPARATE does
not register the class object as an in-process server (registers the object
with the CLSCTX_LOCAL_SERVER flag, but does not automatically add the
CLSCTX_INPROC_SERVER flag, as is the case when you specify the
REGCLS_MULTIPLEUSE flag. This distinction is important in applications that are
both OLE containers and OLE embeddings, allowing a container/server to be
inserted into itself.
In general,
the following two registrations have the same effect -- they register class
objects as both multiple-use and as in-process servers:
CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE
(CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER),
REGCLS_MULTI_SEPARATE
The following
registers the class object only as a multiple-use local server:
CLSCTX_LOCAL_SERVER, REGCLS_MULTI_SEPARATE
See Also