2.2.2 Message Headers

All MSSearch Query Protocol messages have a 16-byte header.

The following diagram shows the MSSearch Query Protocol message header format.


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

_msg

_status

_ulChecksum

_ulReserved2

_msg (4 bytes): A 32-bit integer that identifies the type of message following the header.

The following table lists the MSSearch Query Protocol messages and the integer values specified for each message. As shown in the table, some values identify two messages in the table. In those instances, the message following the header can be identified by the direction of the message flow. If the direction is protocol client to protocol server, the message with "In" appended to the message name is indicated. If the direction is protocol server to protocol client, the message with "Out" appended to the message name is indicated.

Value

Meaning

0x000000C8

CPMConnectIn or CPMConnectOut

0x000000C9

CPMDisconnect

0x000000CA

CPMCreateQueryIn or CPMCreateQueryOut

0x000000CB

CPMFreeCursorIn or CPMFreeCursorOut

0x000000CC

CPMGetRowsIn or CPMGetRowsOut

0x000000D0

CPMSetBindingsIn

0x000000E4

CPMFetchValueIn or CPMFetchValueOut

_status (4 bytes): An HRESULT, indicating the status of the requested operation. When sent by the protocol client, this field MAY contain any value and the protocol server MUST ignore the value<6>.

_ulChecksum (4 bytes): A 32-bit integer field. The _ulChecksum MUST be calculated as specified in section 3.2.4 for the following messages:

§ CPMConnectIn

§ CPMCreateQueryIn

§ CPMSetBindingsIn

§ CPMGetRowsIn

§ CPMFetchValueIn

Note  For all other messages from the protocol client, _ulChecksum MUST be ignored by the receiver. A protocol client MUST ignore the _ulChecksum field.

_ulReserved2 (4 bytes): A 32-bit integer field. If the message type is CPMGetRowsIn and 64-bit offsets are used, as specified in section 2.2.3.7, this field MUST contain the upper 32 bits of the base value to use for pointer calculations in the row buffer (the _ulClientBase field of the CPMGetRowsIn message contains the lower 32 bits). Otherwise, the value MUST be set to 0x00000000.