3.1.5.2.4 Receiving a CPMGetQueryStatusExIn Request
When the server receives a CPMGetQueryStatusExIn message request from a client, the server MUST do the following:
Search the ConnectedClientsIdentifiers list for the HANDLE of the named pipe over which the server has received the CPMGetQueryStatusExIn message. If it is not present, the server MUST report a STATUS_INVALID_PARAMETER (0xC000000D) error.
Call the ClientQueryHasCursorHandle abstract interface to the GSS with the HANDLE of the named pipe over which the server has received the CPMGetQueryStatusIn message as its QueryIdentifier argument and with the _hCursor handle as its CursorHandle argument.<27>
Prepare a CPMGetQueryStatusExOut message, using corresponding parameters obtained by calling the following abstract interfaces to the GSS.
GetState, with no parameters
Parameters: none
Use Output parameters:
cFilteredDocuments = cFilteredDocuments
Set cDocumentsToFilter to: cTotalDocuments - cFilteredDocuments
GetQueryStatus
Parameters:
The HANDLE of the named pipe over which the server has received the CPMGetQueryStatusExIn message.
Use Output parameters:
QStatus = QStatus
GetRatioFinishedParams
Parameters:
The HANDLE of the named pipe over which the server has received the CPMGetQueryStatusExIn message.
hCursor
Use Output parameters:
dwRatioFinishedDenominator = rdwRatioFinishedDenominator
dwRatioFinishedNumerator = rdwRatioFinishedNumerator
GetApproximatePosition
Parameters:
The HANDLE of the named pipe over which the server has received the CPMGetQueryStatusExIn message.
hCursor
bmk
Use Output Parameters:
iRowBmk = riRowBmk
GetWhereID
Parameters:
The HANDLE of the named pipe over which the server has received the CPMGetQueryStatusExIn message.
Use Output parameters:
whereID = whereid
GetExpensiveProperties
Parameters:
The HANDLE of the named pipe over which the server has received the CPMGetQueryStatusExIn message.
hCursor
Use Output parameters:
cRowsTotal = rcRowsTotal
cResultsFound = rdwResultCount
maxRank = maxRank
Respond to the client with the CPMGetQueryStatusExOut message.
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.
E_ACCESSDENIED: generated when the client does not have permissions to access a needed resource such as a file result or a catalog.
Any other error code can be returned, but it will be treated as informative only.