18.104.22.168 Processing Asynchronous Requests
If the client requests that the server perform a RopSetColumns ([MS-OXCROPS] section 22.214.171.124), RopSortTable ([MS-OXCROPS] section 126.96.36.199), or RopRestrict ([MS-OXCROPS] section 188.8.131.52) ROP request asynchronously, the server MAY<20> perform the operation synchronously and return "TBLSTAT_COMPLETE" in the TableStatus field of the ROP response buffer. However, if the server executes the ROP asynchronously, the server SHOULD return "TBLSTAT_SORTING", "TBLSTAT_SETTING_COLS", or "TBLSTAT_RESTRICTING" (depending on the ROP performed) in the TableStatus field of the ROP response buffer and do the work asynchronously. The server MUST return the same TableStatus field value in the RopGetStatus ROP response buffer ([MS-OXCROPS] section 184.108.40.206) unless the work has been completed or a RopAbort ROP request ([MS-OXCROPS] section 220.127.116.11) has been sent.
If there is an error setting the columns, sorting the table, or restricting, the next response to a RopGetStatus ROP request MUST set the TableStatus field to "TBLSTAT_SETCOL_ERROR", "TBLSTAT_SORT_ERROR", or "TBLSTAT_RESTRICT_ERROR", depending on the ROP performed. When the asynchronous work is complete, the server MUST send the TableRestrictionChanged or TableChanged notifications, depending on the ROP performed. For details about these notifications, see [MS-OXCNOTIF] section 18.104.22.168.1.
If the client requests additional asynchronous work while the server is still performing asynchronous work, the server MUST set the value of the ReturnValue field in the ROP response buffer to "ecBusy". If the client requests additional synchronous work while the server is still performing asynchronous work, the server can do either of the following:
Set the value of the ReturnValue field in the ROP response buffer to "ecBusy" and not perform the requested action.
Wait until the first asynchronous action is complete and then complete the synchronous action and send the ROP response at that time.