3.1.5.2.9 Receiving a CPMGetNotify Request

When the server receives a CPMGetNotify message from a client, the server MUST do the following:

  1. Search the ConnectedClientsIdentifiers list for the HANDLE of the named pipe over which the server has received the CPMGetNotify message. If it is not present, the server MUST report a STATUS_INVALID_PARAMETER (0xC000000D) error.<34>

  2. Call the GetQueryStatusChanges abstract interface with the HANDLE of the named pipe over which the server has received the CPMGetNotify message as its QueryIdentifier argument. If the ChangesPresent output parameter is true, then the server MUST respond with a CPMSendNotifyOut message and MUST set the _watchNotify field of this message to the LatestChange parameter value that is output from the call.

  3. At a later time, if there is a change in the query results set as determined by polling the GSS with GetQueryStatusChanges interface calls, the server MUST send exactly one CPMSendNotifyOut message to the client and MUST specify the change in the _watchNotify field.

  4. Report any errors encountered during message preparation or during any abstract interface call to the GSS. Errors that are specific to this request:

    • E_OUTOFMEMORY: generated by any resource allocation failure on the server or service side.

    • STATUS_INVALID_PARAMETER: generated when any of the parameters passed in by the client is invalid. Invalid parameters are those that do not obey the corresponding data structure layout as defined for their types in this document.

    Any other error code can be returned, but it will be treated as informative only.