2.2.2 Message Headers

All Windows Search Protocol messages have a 16-byte header.

The following table shows the Windows Search 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 Windows Search Protocol messages and the integer values specified for each message. As shown in the table, some values identify two messages. In those instances, the message following the header can be identified by the direction of the message flow. If the direction is client to server, the message with "In" appended to the message name is indicated. If the direction is server to 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

0x000000CD

CPMRatioFinishedIn or CPMRatioFinishedOut

0x000000CE

CPMCompareBmkIn or CPMCompareBmkOut

0x000000CF

CPMGetApproximatePositionIn or CPMGetApproximatePositionOut

0x000000D0

CPMSetBindingsIn

0x000000D1

CPMGetNotify

0x000000D2

CPMSendNotifyOut

0x000000D7

CPMGetQueryStatusIn or CPMGetQueryStatusOut

0x000000D9

CPMCiStateInOut

0x000000E4

CPMFetchValueIn or CPMFetchValueOut

0x000000E7

CPMGetQueryStatusExIn or CPMGetQueryStatusExOut

0x000000E8

CPMRestartPositionIn

0x000000EC

CPMSetCatStateIn (not supported)

0x000000F1

CPMGetRowsetNotifyIn or CPMGetRowsetNotifyOut

0x000000F2

CPMFindIndicesIn, or CPMFindIndicesOut

0x000000F3

CPMSetScopePrioritizationIn or CPMSetScopePrioritizationOut

0x000000F4

CPMGetScopeStatisticsIn or CPMGetScopeStatisticsOut

_status (4 bytes): An HRESULT, indicating the status of the requested operation. The client MUST initialize this value to 0x00000000. The server then changes it as the status of the requested operation changes.

_ulChecksum (4 bytes): 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, _ulChecksum MUST be set to 0x00000000. A client MUST ignore the _ulChecksum field.

_ulReserved2 (4 bytes): MUST be ignored by the receiver.

Note This field MUST be set to 0x00000000 except for the CPMGetRowsIn message, where it MUST hold the high 32-bits part of a 64-bit offset if 64-bit offsets are being used (see section 2.2.3.12 for details).