3.1.1 Abstract Data Model
The following section specifies data and state maintained by the Windows Search Protocol server. The data provided in this document explains how the protocol behaves. This section does not mandate that implementations adhere to this model as long as their external behavior is consistent with that described in this document.
The Generic Search Service (GSS) implementing the Windows Search Protocol MUST maintain the following abstract data elements:
ConnectedClientsIdentifiers: A list of 32-bit unsigned integers. Values are added upon successful responses to CPMConnectIn messages and are removed when the clients disconnect. These integer identifiers are actually set to the values of the named pipe HANDLEs to connected clients because they uniquely identify incoming connections. The identifiers are removed from the list when the named pipe with the same HANDLEs are disconnected. Apart from the unique connection identification quality, no named pipe HANDLE semantics are assumed about the integer values in this list. Queries can be executed only one at a time over any given connection. Therefore, the server passes values in the ConnectedClientsIdentifiers list as the QueryIdentifier argument to any GSS abstract interface calls that it makes.
ConnectedClientVersions: A list of 32-bit unsigned integers, one for each identifier in the ConnectedClientsIdentifiers list. If the last 2 bytes of the client version are greater than or equal to 0x109, the server will verify the checksums in the message. If the version is greater than 0x10000, the server detects that the client is a 64-bit system.