3.1.1.3.1 ComponentsAndFullConfigurations Table
The entries in the ComponentsAndFullConfigurations table can be divided into two categories:
Entries representing components (or component bitnesses on servers that support multiple bitnesses) that do not have component full configuration entries.
Entries representing component full configuration entries.
Both types of entries have the same schema. However, the semantics of these types of entries are different, as are the constraints on the values of their properties. This is specified in more detail in this section.
Table identifier: {6E38D3C8-C2A7-11D1-8DEC-00C04FC2E0C7}
AuxiliaryGuid: {B4B3AECB-DFD6-11D1-9DAA-00805F85CFE3}
Defined in catalog version: All catalog versions.
Prerequisites: None.
Hidden bitness property: Yes (catalog version 4.00 and catalog version 5.00).
Supported query templates
Cell 1 |
Cell 2 |
---|---|
eSQO_OPTHINT equals 1 |
ConglomerationIdentifier equals <A> |
ConglomerationIdentifier equals null |
InprocServerPath not equal to null |
Primary key
Catalog version |
Primary key properties |
---|---|
3.00 |
|
4.00/5.00 |
Hidden component bitness property, CLSID, PartitionIdentifier, Reserved1, ConfigurationBitness |
For the purposes of constraints and the semantics of certain properties, it is important to make a distinction between the two types of entries. Entries that have the value GUID_NULL for the ConglomerationIdentifier property represent components (or component bitnesses on servers that support multiple bitnesses) that do not have component full configurations on the server. Hereafter these are referred to as componententries. Entries that have a value other than GUID_NULL for the ConglomerationIdentifier property represent component full configurations (hereafter full configuration entries).
Other referential constraints
For simplicity, the constraints are expressed as if the hidden component bitness property is present on all servers that support catalog version 4.00 or catalog version 5.00. For these purposes, the hidden component bitness property can be thought of as having the fixed value of the single bitness supported by the server on servers that do not support multiple bitnesses.
The following constraints apply to component entries.
Catalog version |
Constraints |
Notes |
---|---|---|
3.00 |
If ProgID is not null, there MUST NOT exist another entry with an identical value for ProgID. |
The ProgID is a unique identifier of a component for scripting environments. |
4.00/5.00 |
Component entries MUST be uniquely identified by CLSID and hidden component bitness property. |
Implied by constraints on PartitionIdentifier, Reserved1, and ConfigurationBitness properties for these entries. |
4.00/5.00 |
There MUST NOT exist a full configuration entry in the table with identical values for CLSID and hidden component bitness property. |
Entries represent components (or component bitnesses) that do not have component full configuration entries. |
4.00/5.00 |
If ProgID is not null, there MUST NOT exist another entry with identical values for ProgID and hidden component bitness property. |
The ProgID is a unique identifier of a component (or component bitness) for scripting environments. |
The following constraints apply to component full configuration entries.
Catalog version |
Constraints |
Notes |
---|---|---|
3.00 |
There MUST exist an entry in the Conglomerations table with an identical value for the ConglomerationIdentifier property. |
Each component configuration entry is contained in a conglomeration. |
3.00 |
There MUST NOT exist an entry in the ComponentLegacyConfigurations table with identical CLSID. |
A component (or component bitness) that has a component legacy configuration can have no other component configuration entries. |
3.00 |
If ProgID is not null, there MUST NOT exist another entry with an identical value for ProgID. |
The ProgID is a unique identifier of a component for scripting environments. |
3.00 |
If ServerInitializer is TRUE, the conglomeration identified by ConglomerationIdentifier MUST have the value 0x00000001 for the Activation property. |
The server initializer facility is intended for initialization of instance containers created in a new process. |
4.00/5.00 |
There MUST exist an entry in the Conglomerations table with an identical value for the ConglomerationIdentifier property. |
Each component configuration entry is contained in a conglomeration. |
4.00/5.00 |
The matching entry in the Conglomerations table MUST have an identical value for the PartitionIdentifier property. |
|
4.00/5.00 |
There MUST exist an entry in the Partitions table with an identical value for the PartitionIdentifier property. |
|
4.00/5.00 |
Full configuration entries MUST be uniquely identified by CLSID and ConglomerationIdentifier. |
Each component can have at most one component configuration entry in a conglomeration. |
4.00/5.00 |
There MUST NOT exist another entry in the table with an identical value for the ConglomerationIdentifier property and a different value for the ConfigurationBitness property. |
Each conglomeration contains component full configuration entries for a single bitness. |
4.00/5.00 |
There MUST NOT exist an entry in the ComponentLegacyConfigurations table with identical values for the CLSID and ConfigurationBitness properties. |
A component (or component bitness) that has a component legacy configuration entry can have no other component configuration entries. |
4.00/5.00 |
There MUST NOT exist another entry in the table with identical CLSID and ConfigurationBitness for which the values of the InprocServerPath, ThreadingModel, ProgID, Description, VersionMajor, VersionMinor, VersionBuild, or VersionSubBuild properties have different values. |
These properties represent static properties of the component (or component bitness), not the configuration. Note, however, that VersionMajor, VersionMinor, VersionBuild, or VersionSubBuild are not used for component entries. |
4.00/5.00 |
If ProgID is not null, there MUST NOT exist another entry with identical values for ProgID and hidden component bitness property but a different value for CLSID. |
The ProgID is a unique identifier of a component (or component bitness) for scripting environments. |
4.00/5.00 |
If ServerInitializer is TRUE, the conglomeration identified by ConglomerationIdentifier MUST have the value 0x00000001 for the Activation property. |
The server initializer facility is intended for initialization of instance containers created in a new process. |
Write restrictions: Add MUST NOT be supported. Update and remove MUST be supported if and only if:
The conglomeration identified by ConglomerationIdentifier has the value "Y" for Changeable.
The conglomeration identified by ConglomerationIdentifier has the value "N" for IsSystem.
The partition identified by PartitionIdentifier has the value "Y" for Changeable.
Cascade: On removal of a full configuration entry, all entries in the ConfiguredInterfaces table (section 3.1.1.3.11) and RolesForComponent table (section 3.1.1.3.13) tables that have identical values for CLSID property (catalog version 3.00), or CLSID, PartitionIdentifier, and ConfigurationBitness properties (catalog version 4.00) are removed.
Populate: N/A.
Properties:
Index (3.00) |
Index (4.00/5.00) |
Property name |
Type |
Size |
Flags |
Meta |
---|---|---|---|---|---|---|
0 |
0 |
CLSID |
eDT_GUID |
16 |
0x00000003 |
RO |
1 |
1 |
InprocServerPath |
eDT_LPWSTR |
variable |
0x00000000 |
RO |
2 |
2 |
ThreadingModel |
eDT_ULONG |
4 |
0x00000002 |
RO |
3 |
3 |
ProgID |
eDT_LPWSTR |
variable |
0x00000000 |
RO |
4 |
4 |
Description |
eDT_LPWSTR |
variable |
0x00000000 |
|
5 |
5 |
Internal1 |
eDT_LPWSTR |
variable |
0x00000000 |
IN |
- |
6 |
PartitionIdentifier |
eDT_GUID |
16 |
0x00000003 |
RO |
- |
7 |
Reserved1 |
eDT_GUID |
16 |
0x00000003 |
|
- |
8 |
ConfigurationBitness |
eDT_ULONG |
4 |
0x00000003 |
RO |
6 |
9 |
ConglomerationIdentifier |
eDT_GUID |
16 |
0x00000000 |
RO |
7 |
10 |
Internal2 |
eDT_GUID |
16 |
0x00000000 |
IN |
8 |
11 |
VersionMajor |
eDT_ULONG |
4 |
0x00000002 |
RO |
9 |
12 |
VersionMinor |
eDT_ULONG |
4 |
0x00000002 |
RO |
10 |
13 |
VersionBuild |
eDT_ULONG |
4 |
0x00000002 |
RO |
11 |
14 |
VersionSubBuild |
eDT_ULONG |
4 |
0x00000002 |
RO |
12 |
15 |
Internal3 |
eDT_ULONG |
4 |
0x00000002 |
IN |
13 |
16 |
ServerInitializer |
eDT_ULONG |
4 |
0x00000002 |
TR |
14 |
17 |
Transaction |
eDT_ULONG |
4 |
0x00000002 |
TR |
15 |
18 |
Synchronization |
eDT_ULONG |
4 |
0x00000002 |
TR |
16 |
19 |
Internal4 |
eDT_ULONG |
4 |
0x00000002 |
IN |
17 |
20 |
FlowWebServerProperties |
eDT_ULONG |
4 |
0x00000002 |
TR |
18 |
21 |
FlowTransactionIntegratorProperties |
eDT_ULONG |
4 |
0x00000002 |
TR |
19 |
22 |
JustInTimeActivation |
eDT_ULONG |
4 |
0x00000002 |
TR |
20 |
23 |
ComponentAccessChecksEnabled |
eDT_ULONG |
4 |
0x00000002 |
TR |
21 |
24 |
Internal5 |
eDT_BYTES |
variable |
0x00000000 |
IN |
22 |
25 |
Internal6 |
eDT_GUID |
16 |
0x00000000 |
IN |
23 |
26 |
MinPoolSize |
eDT_ULONG |
4 |
0x00000002 |
TR |
24 |
27 |
MaxPoolSize |
eDT_ULONG |
4 |
0x00000002 |
TR |
25 |
28 |
CreationTimeout |
eDT_ULONG |
4 |
0x00000002 |
TR |
26 |
29 |
ConstructorString |
eDT_LPWSTR |
variable |
0x00000000 |
TR |
27 |
30 |
ConfigurationFlags |
eDT_ULONG |
4 |
0x00000002 |
TR |
28 |
31 |
Internal7 |
eDT_GUID |
16 |
0x00000000 |
IN |
29 |
32 |
Reserved2 |
eDT_ULONG |
4 |
0x00000002 |
|
30 |
33 |
Internal8 |
eDT_LPWSTR |
variable |
0x00000000 |
IN |
31 |
34 |
Internal9 |
eDT_GUID |
16 |
0x00000000 |
IN |
32 |
35 |
ExceptionClass |
eDT_LPWSTR |
variable |
0x00000000 |
TR |
33 |
36 |
Internal10 |
eDT_ULONG |
4 |
0x00000002 |
IN |
34 |
37 |
Internal11 |
eDT_LPWSTR |
variable |
0x00000000 |
IN |
35 |
38 |
Internal12 |
eDT_ULONG |
4 |
0x00000002 |
IN |
36 |
39 |
Internal13 |
eDT_LPWSTR |
variable |
0x00000020 |
IN |
37 |
40 |
Internal14 |
eDT_LPWSTR |
variable |
0x00000000 |
IN |
38 |
41 |
Internal15 |
eDT_LPWSTR |
variable |
0x00000020 |
IN |
39 |
42 |
Internal16 |
eDT_ULONG |
4 |
0x00000002 |
IN |
40 |
43 |
IsEventClass |
eDT_ULONG |
4 |
0x00000002 |
RO |
41 |
44 |
PublisherID |
eDT_LPWSTR |
variable |
0x00000000 |
TR |
42 |
45 |
MultiInterfacePublisherFilterCLSID |
eDT_GUID |
16 |
0x00000000 |
TR |
43 |
46 |
AllowInprocSubscribers |
eDT_ULONG |
4 |
0x00000002 |
TR |
44 |
47 |
FireInParallel |
eDT_ULONG |
4 |
0x00000002 |
TR |
45 |
48 |
Internal17 |
eDT_ULONG |
4 |
0x00000002 |
IN |
46 |
49 |
Internal18 |
eDT_LPWSTR |
variable |
0x00000000 |
IN |
47 |
50 |
TransactionTimeout |
eDT_ULONG |
4 |
0x00000002 |
TR |
48 |
51 |
Internal19 |
eDT_ULONG |
4 |
0x00000002 |
IN |
- |
52 |
IsEnabled |
eDT_ULONG |
4 |
0x00000002 |
|
- |
53 |
TransactionIsolationLevel |
eDT_ULONG |
4 |
0x00000002 |
TR |
- |
54 |
IsPrivateComponent |
eDT_ULONG |
4 |
0x00000002 |
|
- |
55 |
SoapAssemblyName |
eDT_LPWSTR |
variable |
0x00000000 |
TR |
- |
56 |
SoapTypeName |
eDT_LPWSTR |
variable |
0x00000000 |
TR |
In the previous table, internal properties (marked with IN in the Meta column) MUST NOT be written to or interpreted by the client. The server's use of these properties is implementation-specific because it does not affect interoperability.
CLSID: The CLSID of the component.<56>
InprocServerPath: If not null, an ImplementationSpecificPathProperty (section 2.2.2.2) providing a path to a module of the component (or component bitness) that is supported for full configuration.<57> For full configuration entries, it MUST NOT be null.
ThreadingModel: A ThreadingModelEnumerationProperty (section 2.2.2.3.1) representing the restrictions, if any, that the ORB is to place on the types of threads on which the instantiations of the component (or component bitness) will be hosted. <58>
ProgID: If not null, a ScriptingProgramIdProperty (section 2.2.2.4) of the component (or component bitness).<59> If not null, the character length of this property MUST be between 1 and 39.
Description: A DescriptionProperty (section 2.2.2.7) providing a human-readable description of the component (or component bitness).<60>
PartitionIdentifier: For component full configuration entries, the partition identifier of the partition in which the configuration resides. For component entries, a PlaceholderPartitionIdProperty (section 2.2.2.1.1).
Reserved1: A PlaceholderGuidProperty (section 2.2.2.1.2).
ConfigurationBitness: For full configuration entries, a BitnessProperty (section 2.2.2.5) representing the bitness for which the component is configured in this component full configuration.<61> This value MUST represent the same bitness as the hidden bitness property. For component entries, a PlaceholderIntegerProperty (section 2.2.2.1.4).
ConglomerationIdentifier: For component full configuration entries, the conglomeration identifier of the conglomeration containing the configuration. For component entries, it MUST be GUID_NULL (this value indicates a component entry).
VersionMajor: For component full configuration entries, the application-specific major version of the component.<62> For component entries, a PlaceholderIntegerProperty.
VersionMinor: For component full configuration entries, the application-specific minor version of the component.<63> For component entries, a PlaceholderIntegerProperty.
VersionBuild: For component full configuration entries, the application-specific build version of the component.<64> For component entries, a PlaceholderIntegerProperty.
VersionSubBuild: For full configuration entries, the application-specific sub build version of the component.<65> For component entries, a PlaceholderIntegerProperty.
ServerInitializer: For component full configuration entries, a BooleanProperty (section 2.2.2.9) that indicates whether the component is to be activated by the ORB when an instance container is created for its containing conglomeration.<66> For component entries, a PlaceholderIntegerProperty.
Transaction: For full configuration entries, a ContextFacilityProperty (section 2.2.2.8) value indicating how, if at all, the ORB is to enable atomic transactions for the component.<67> It MUST be a ContextFacilityProperty (section 2.2.2.8). For component entries, a PlaceholderIntegerProperty.
Synchronization: For full configuration entries, a ContextFacilityProperty (section 2.2.2.8) value indicating how, if at all, the ORB is to provide synchronization to components that might not be thread safe.<68> It MUST be a ContextFacilityProperty (section 2.2.2.8). For component entries, a PlaceholderIntegerProperty.
FlowWebServerProperties: For full configuration entries, a BooleanProperty that indicates whether the ORB is to provide special services to component instances if they were created within a context of a web server servicing a request.<69> It MUST be a BooleanProperty. For component entries, a PlaceholderIntegerProperty.
FlowTransactionIntegratorProperties: For full configuration entries, a BooleanProperty that indicates whether the ORB is to provide special services to component instances to interoperate with other transaction managers not native to the ORB.<70> For component entries, a PlaceholderIntegerProperty.
JustInTimeActivation: For full configuration entries, a BooleanProperty that indicates whether component instances are to be activated by the ORB only when a method call arrives.<71> For component entries, a PlaceholderIntegerProperty.
ComponentAccessChecksEnabled: For full configuration entries, a BooleanProperty that indicates whether component-level access checks (section 1.3.4) are to be enabled for the component by the ORB.<72> For component entries, a PlaceholderIntegerProperty.
MinPoolSize: For full configuration entries, a MinPoolSizeProperty (section 2.2.2.10.1) indicating the minimum pool size for instance pooling by the ORB.<73>It MUST be between 0x00000000 and 0x00100000 (decimal 1048576). For component entries, MUST be zero (placeholder value, no meaning). Note that this property is only meaningful if EnablePooling has the value TRUE.
MaxPoolSize: For full configuration entries, a MaxPoolSizeProperty (section 2.2.2.10.2) indicating the maximum pool size for instance pooling by the ORB.<74>For component entries, a PlaceholderIntegerProperty. Note that this property is only meaningful if EnablePooling has the value TRUE.
CreationTimeout: For full configuration entries, a LongTimeoutInSecondsProperty (section 2.2.2.11.1) indicating how long the ORB is to wait for a pooled component instance to complete its activation.<75> This property is only meaningful if EnablePooling has the value TRUE. For component entries, a PlaceholderIntegerProperty.
ConstructorString: For full configuration entries, an ApplicationSpecificStringProperty (section 2.2.2.12) to be used for configurable initialization as part of instantiation of the component by the ORB.<76> This property is only meaningful if EnableConstruction has the value TRUE. For component entries, a PlaceholderStringProperty (section 2.2.2.1.3).
ConfigurationFlags: For full configuration entries, a bit field used to configure different properties on the component, each of which is a BooleanBitProperty (section 2.2.2.9.1). For component entries, a PlaceholderIntegerProperty. ConfigurationFlags is specified as follows for full configuration entries.
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
1 0 |
1 1 |
1 2 |
1 3 |
1 4 |
1 5 |
1 6 |
1 7 |
1 8 |
1 9 |
2 0 |
2 1 |
2 2 |
2 3 |
2 4 |
2 5 |
2 6 |
2 7 |
2 8 |
2 9 |
3 0 |
3 1 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Internal |
D C |
C C |
In |
E E |
L B |
E C |
E P |
Internal |
All bits marked Internal (or In) MUST NOT be interpreted by clients. (To modify any of the non-Internal bits in this bit field, as specified in section 3.2.4.5, clients are expected to first read the value of the bit field, construct a value with the non-Internal bits modified, and then write the result back to the server.) The server's use of these bits is implementation-specific as it does not affect interoperability.
MustRunInDefaultContext (DC): For full configuration entries, a BooleanBitProperty that indicates whether the ORB is to restrict activation of the component such that it can only be activated in a default environment.<77> The definition of the default environment is ORB-specific.
MustRunInClientContext (CC): For full configuration entries, a BooleanBitProperty that indicates whether the ORB is to restrict activation of the component such that it can only be activated in the client's environment. If an application requires this behavior for its component, it can set this property.<78>
EnableEvents (EE): For full configuration entries, a BooleanBitProperty that indicates whether the ORB is to collect activity statistics for component instances.<79>
LoadBalancingSupported (LB): For full configuration entries, a BooleanBitProperty that indicates whether the ORB is to provide instance load balancing for the component.<80>
EnableConstruction (EC): For full configuration entries, a BooleanBitProperty that indicates whether the ORB is to provide a configurable initialization for components during activation.<81>
EnablePooling (EP): For full configuration entries, a BooleanBitProperty that indicates whether or not the ORB is to provide instance pooling for the component.<82>
Reserved2: A PlaceholderIntegerProperty.
ExceptionClass: For full configuration entries, an ORBSpecificExceptionClassProperty (section 2.2.2.13.1) to be used in creating an exception-handling object if an error condition occurs while the ORB is servicing method calls to the component.<83> For component entries, a PlaceholderStringProperty.
IsEventClass: For full configuration entries, a BooleanProperty that indicates whether the component is an event class that can be used in a publisher-subscriber framework.<84> For component entries, a PlaceholderIntegerProperty.
PublisherID: For full configuration entries, a NameProperty (section 2.2.2.2) providing a unique identifier for a publisher in a publisher-subscriber framework provided by the ORB, or null to indicate that the configuration is not a publisher.<85> If not null, IsEventClass must have the value TRUE (0x00000001). For component entries, a PlaceholderStringProperty.
MultiInterfacePublisherFilterCLSID: For full configuration entries, a CLSID of a component that provides filtering for events in a publisher-subscriber framework provided by the ORB, or GUID_NULL to indicate that the configuration does not use such a filter component.<86> If not GUID_NULL, PublisherID MUST NOT be null. For component entries, a PlaceholderGuidProperty (section 2.2.2.1.2).
AllowInprocSubscribers: For full configuration entries, a BooleanProperty that indicates whether a publisher allows subscriber components to be instantiated in its process.<87> This property is only meaningful if IsEventClass has the value TRUE. For component entries, a PlaceholderIntegerProperty.
FireInParallel: For full configuration entries, a BooleanProperty that indicates whether subscribers will be notified of events from this event class in parallel (as opposed to serially).<88> This property has no meaning if the component is not an event class. If TRUE, IsEventClass MUST have the value TRUE. For component entries, a PlaceholderIntegerProperty.
TransactionTimeout: For full configuration entries, a LongTimeoutInSecondsProperty indicating how long the ORB is to allow the component to run with a specific transaction before it is forcibly aborted.<89> For component entries, a PlaceholderIntegerProperty.
IsEnabled: For full configuration entries, a BooleanProperty that indicates whether the ORB is to enable instantiation of the component.<90> For component entries, a PlaceholderIntegerProperty.
TransactionIsolationLevel: For full configuration entries, a TransactionIsolationLevelProperty (section 2.2.2.14) the ORB is use when managing atomic transactions for the component (or component bitness).<91> For component entries, a PlaceholderIntegerProperty.
IsPrivateComponent: For full configuration entries, a BooleanProperty that indicates whether or not instantiation of the component is to be scoped by the ORB so that only components in the same conglomeration can instantiate it.<92> For component entries, a PlaceholderIntegerProperty.
SoapAssemblyName: For full configuration entries, an ORBSpecificModuleIdentifierProperty (section 2.2.2.13.2) for a module to be used by the ORB to expose the component as a SOAP [SOAP1.1] endpoint. In order to provide such a feature, an ORB MAY need a module to interpret calls from SOAP to the component. If an application wishes to use this feature, it can set this property.<93> This property has no meaning if not specified in conjunction with SoapTypeName field. For component entries, a PlaceholderStringProperty.
SoapTypeName: For full configuration entries, an ORBSpecificTypeIdentifierProperty (section 2.2.2.13.3) for the type name used by the ORB to locate an entity in the module specified by the SoapAssemblyName, to be used by the ORB to expose the component as a SOAP [SOAP1.1] endpoint. If an application wishes to use this feature, it can set this property.<94> This property has no meaning if not specified in conjunction with the SoapAssemblyName property. For component entries, a PlaceholderStringProperty.