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
|
_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's lowest 2 bytes are set to 0x00000109 or greater, the server MUST validate the _ulChecksum field value for the following messages:
CPMConnectIn
CPMCreateQueryIn
CPMFetchValueIn
CPMGetRowsIn
CPMSetBindingsIn
For details on 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 lowest 2 bytes are greater than 0x00000109, the client is assumed to be capable of handling 64-bit offsets in CPMGetRowsOut messages.<5><6>
_fClientIsRemote (4 bytes): A Boolean value indicating if the client is running on a different machine than the server. This field is set to 0x00000001 if the client is running on a different machine and 0x00000000 if it is not.
_cbBlob1 (4 bytes): A 32-bit unsigned integer indicating the size, in bytes, of the cPropSets, PropertySet1, and PropertySet2 fields combined.
_paddingcbdBlob2 (4 bytes): This field MUST be 4 bytes in length. The length of this field MUST be such that the byte offset from the beginning of the message to the beginning of 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 cExtPropSet and aPropertySet fields, combined.
_padding (12 bytes): Twelve bytes of padding that can 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 less than 512 Unicode characters, including the null terminator. The server MUST ignore this field upon receipt.
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 less than 512 Unicode characters when concatenated with MachineName. The server MUST ignore this field upon receipt.
_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 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.
cPropSets (4 bytes): A 32-bit unsigned integer indicating the number of CDbPropSet structures following this field.
Note This field MUST be set to 0x0000002.
PropertySet1 (variable): A CDbPropSet structure with guidPropertySet containing DBPROPSET_FSCIFRMWRK_EXT.
PropertySet2 (variable): A CDbPropSet structure with guidPropertySet containing DBPROPSET_CIFRMWRKCORE_EXT.
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. This field must be greater than or equal to 1.
aPropertySets (variable): An array of CDbPropSet structures specifying other properties. The number of elements in this array MUST be equal to cExtPropSet.
Although any value can be passed here, the server MUST ignore anything except the following property, which must be the first property in aPropertySets. This value must also align with the DBPROP_CI_CATALOG_NAME specified in DBPROPSET_FSCIFRMWRK_EXT.
Value
|
Meaning
|
DBPROP_CI_CATALOG_NAME
0x00000002
|
This is the catalog name for the query.
|
CPMConnectOut
The CPMConnectOut message contains a response to a CPMConnectIn message.
The format of the CPMConnectOut 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
|
_serverVersion
|
_reserved (variable)
|
...
|
dwWinVerMajor (optional)
|
dwWinVerMinor (optional)
|
dwNLSVerMajor (optional)
|
dwNLSVerMinor (optional)
|
_serverVersion (4 bytes): A 32-bit integer that indicates whether the server can support 64-bit offsets. Values greater than or equal to 0x00010000 indicate 64-bit support. Values less than 0x00010000 indicate 32-bit support.<7><8>
_reserved (variable): The server can send an arbitrary number of arbitrary values, and the client MUST ignore these values if present. If the server supports version reporting, the size MUST be 4 bytes.
dwWinVerMajor (4 bytes): 32-bit unsigned integer that contains the major version number of the Windows operating system on a server. If server doesn't supports version reporting then this field MUST be omitted.<9>
If present this field can contain one of the following values:
Value
|
Meaning
|
WINDOWS_MAJOR_VERSION_6
0x00000006
|
The major version of the Windows operating system is 0x00000006.
|
dwWinVerMinor (4 bytes): 32-bit unsigned integer that contains the minor version number of the Windows operating system on a server. If server doesn't supports version reporting then this field MUST be omitted. <10>
If present this field can contain one of the following values:
Value
|
Meaning
|
WINDOWS_MINOR_VERSION_0
0x00000000
|
The minor version of the Windows operating system is 0x00000000.
|
WINDOWS_MINOR_VERSION_1
0x00000001
|
The minor version of the Windows operating system is 0x00000001.
|
dwNLSVerMajor (4 bytes): 32-bit unsigned integer that contains the National Language Support (NLS) version number of the Windows operating system on a server. If server doesn't supports version reporting then this field MUST be omitted. <11>
dwNLSVerMinor (4 bytes): 32-bit unsigned integer that contains the defined National Language Support (NLS) version number of the Windows operating system on a server. If server doesn't supports version reporting then this field MUST be omitted. <12>
If present, the dwNLSVerMajor and dwNLSVerMinor fields can contain one of the following values:
Value
|
Meaning
|
NLS_ VERSION_40500
0x00040500
|
Defined NLS version is 0x00040500.
|
NLS_VERSION_60000
0x00060000
|
Defined NLS version is 0x00060000.
|
NLS_VERSION_60101
0x00060101
|
Defined NLS version is 0x00060101.
|
12>11>10>9>8>7>6>5>
|