2.2.3.6 CPMConnectIn

The CPMConnectIn message begins a session between the client and server.

The format of the CPMConnectIn message that follows the header is shown in the following diagram.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

_iClientVersion

_fClientIsRemote

_cbBlob1

_paddingcbdBlob2 (variable)

...

_cbBlob2

_padding

...

...

MachineName (variable)

...

UserName (variable)

...

_paddingcPropSets (variable)

...

cPropSets

PropertySet1 (variable)

...

PropertySet2 (variable)

...

_paddingExtPropset (variable)

...

cExtPropSet

aPropertySets (variable)

...

_iClientVersion (4 bytes): A 32-bit integer indicating whether the server is to validate the checksum value specified in the _ulChecksum field of the message headers for messages sent by the client.

Note If the _iClientVersion field is set to 0x00000008 or greater, the server MUST validate the _ulChecksum field value for the following messages:

For how the server validates the value specified by the client in the _ulChecksum field for the messages previously listed, see section 3.2.4.

If the value is greater than 0x00000008, the client is assumed capable of handling 64-bit offsets in CPMGetRowsOut messages.<8>

_fClientIsRemote (4 bytes): A Boolean value indicating whether the client is running on a different machine from the server.

Note MUST be set to 0x00000001.

_cbBlob1 (4 bytes): A 32-bit unsigned integer indicating the size, in bytes, of the cPropSet, PropertySet1, and PropertySet2 fields, combined.

_paddingcbdBlob2 (variable): This field MUST be 0 to 4 bytes in length. The length of this field MUST be such that the byte offset from the beginning of the message to the first structure contained in the _cbBlob2 field is a multiple of 8. The value of the bytes can be any arbitrary value, and MUST be ignored by the receiver.

_cbBlob2 (4 bytes): A 32-bit unsigned integer indicating the size, in bytes, of the cExPropSet and aPropertySet fields combined.

_padding (12 bytes): Twelve bytes of padding that MAY contain arbitrary values, and MUST be ignored.

MachineName (variable): The machine name of the client. The name string MUST be a null-terminated array of fewer than 512 Unicode characters, including the NULL terminator.

UserName (variable): A string that represents the user name of the person who is running the application that invoked this protocol. The name string MUST be a null-terminated array of fewer than 512 Unicode characters when concatenated with MachineName.

_paddingcPropSets (variable): This field MUST be 0 to 7 bytes in length. The number of bytes MUST be the number required to make the byte offset of the cPropSets field a multiple of 8 from the beginning of the message that contains this structure. The value of the bytes can be any arbitrary value and MUST be ignored by the receiver.

cPropSets (4 bytes): A 32-bit unsigned integer indicating the number of CDbPropSet structures following this field.

Note This value MUST be set to 0x00000000, 0x00000001, or 0x0000002.

PropertySet1 (variable): A CDbPropSet structure with guidPropertySet containing DBPROPSET_FSCIFRMWRK_EXT (see section 2.2.1.16). This field is not present when cPropSets is 0x00000000.

PropertySet2 (variable):  A CDbPropSet structure with guidPropertySet containing DBPROPSET_CIFRMWRKCORE_EXT (see section 2.2.1.16). This field is not present when cPropSets is 0x00000000 or 0x00000001.

_paddingExtPropset  (variable): This field MUST be 0 to 7 bytes in length. The number of bytes MUST be the number required to make the byte offset of the cExtPropSets field from the beginning of the message that contains this structure equal a multiple of 8. The value of the bytes can be any arbitrary value, and MUST be ignored by the receiver.

cExtPropSet (4 bytes): A 32-bit unsigned integer indicating the number of CDbPropSet structures following this field.

aPropertySets (variable): An array of CDbPropSet structures specifying other properties. The number of elements in this array MUST be equal to cExtPropSet. An example would be DONOTCOMPUTEEXPENSIVEPROPERTIES(A7AC77ED-F8D7-11CE-A798-0020F8008025) which prevents the computation of expensive properties.<9>