Processing RopSeekRowBookmark

The RopSeekRowBookmark ROP ([MS-OXCROPS] section MUST move the cursor position according to its request fields. It acts in the same way as the RopSeekRow ROP ([MS-OXCROPS] section, except that it moves the cursor using a custom bookmark, as specified in section, as a reference.

If the bookmark has become invalid because of a RopSortTable ([MS-OXCROPS] section, RopRestrict ([MS-OXCROPS] section, or RopResetTable ([MS-OXCROPS] section ROP request, the server SHOULD<28> set the ReturnValue field to "ecInvalidBookmark". If the bookmark points to a row that is no longer visible (for example, it has been deleted, or its properties have changed so that it no longer matches the restriction, or its header row has been collapsed), the server MUST set the RowNoLongerVisible field to "TRUE" (0x01) and move the cursor to the next row in the table.

The server MUST complete all asynchronous table ROPs before executing this ROP or fail the ROP with "ecBusy", as specified in section

The RopSeekRowBookmark ROP MUST be supported for contents tables and hierarchy tables.

The following specific error codes apply to this ROP. If the server encounters one of these errors while processing this ROP, it MUST NOT process any remaining ROPs in the ROP input buffer, as specified in [MS-OXCROPS] section 2.2.1. For more details about ROP errors returned, see [MS-OXCDATA] section 2.4.

Error code name






The bookmark sent in the request is no longer valid.




The object on which this ROP was sent is not a contents table or hierarchy table.