3.1.1.3.1 ComponentsAndFullConfigurations Table

The entries in the ComponentsAndFullConfigurations table can be divided into two categories:

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

CLSID

 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.