public TableRopReturnValues RopQueryPosition()
{
RopQueryPositionRequest queryPositionRequest;
RopQueryPositionResponse queryPositionResponse;
queryPositionRequest.RopId = 0x17;
queryPositionRequest.LogonId = 0x00;
queryPositionRequest.InputHandleIndex = 0x00;
this.DoSingleCallROP(queryPositionRequest, this.tableHandle, ref this.response, ref this.rawData);
queryPositionResponse = (RopQueryPositionResponse)this.response;
uint numerator = queryPositionResponse.Numerator;
uint denominator = queryPositionResponse.Denominator;
CursorPosition currentPosition;
if (numerator == 0)
{
// Indicate the cursor position is begin when numerator is 0.
currentPosition = CursorPosition.BEGIN;
}
else if (numerator == denominator)
{
// Indicate the cursor position is end when numerator equal denominator.
currentPosition = CursorPosition.END;
}
else
{
currentPosition = CursorPosition.CURRENT;
}
bool isRowCount = this.rowCount == denominator;
if (this.RopQueryPositionResponse != null)
{
this.RopQueryPositionResponse(currentPosition, isRowCount);
}
return (TableRopReturnValues)queryPositionResponse.ReturnValue;
}