3.2.4.2.1 Sending a CPMConnectIn Request

This message is typically the very first request from the higher layer. The higher level provides the protocol client with the information necessary to connect.

To serve the higher layer, the client MUST do the following:

  1. Fill in the message, using the information provided by the higher-layer client (see section 2.2.3.2) in _iClientVersion, MachineName, UserName, PropertySet1, PropertySet2, and aPropertySet.

  2. Set _fClientIsRemote, _cbBlob1, _cbBlob2, cPropSet, and cExtPropSet, as specified in section 2.2.3.2.

  3. Set the checksum in the _ulChecksum field.

  4. Send the CPMConnectIn message to the server.

  5. Wait to receive a CPMConnectOut message back from the server, silently discarding all other messages.

  6. Report the value of the _status field of the response and, if it was successful, report the value of the _serverVersion back to the higher layer.

  7. Compare 4 DWORDs past the _serverVersion field with the 4 DWORDs at the same offset of CPMConnectIn message. If the value of the DWORDs is different, assume that the server supports version information and decode dwWinVerMajor, dwWinVerMinor, dwNLSVerMajor, dwNLSVerMinor fields. If requested, the values or the information that the server does not support versioning MAY be reported to a higher layer.

For informative purposes, it is expected that higher layers will typically do the following actions upon successful connection, but these are not enforced by the Windows Search Protocol client:

  • Use remote GSS catalog management messages for administrative tasks.

  • Use a CPMCreateQueryIn request to create a search query for the purpose of retrieving results from the catalog.