3.2.5.8.1.1 Receiving a RopFastTransferSourceCopyTo ROP Request

When the client sends the server a RopFastTransferSourceCopyTo ROP request (section 2.2.3.1.1.1), the server MUST parse the request, as specified in [MS-OXCROPS] section 2.2.13.6.1 and section 2.2.3.1.1.1 of this specification. The server MUST respond with a RopFastTransferSourceCopyTo ROP response, as specified in [MS-OXCROPS] section 2.2.13.6.2 and section 2.2.3.1.1.1 of this specification.

If the Level field is set to 0x00, the server MUST copy descendant subobjects by using the property list specified by the PropertyTags field. Subobjects are only copied when they are not listed in the value of the PropertyTags field.

If the Level field is set to a nonzero value, the server MUST exclude all descendant subobjects from being copied.

If the Move flag of the CopyFlags field is set, the server SHOULD NOT output any objects in a FastTransfer stream that the client does not have permissions to delete.

The server MAY<34> support the Move flag of the CopyFlags field, or alternatively the server can set the value of the ReturnValue field to InvalidParameter (0x80070057) if it receives this flag.

If the BestBody flag of the CopyFlags field is set, the server SHOULD output the message body, and the body of the Embedded Message object, in their original format. If this flag is not set, the server MAY<35> output the message body in the compressed Rich Text Format (RTF).

Servers SHOULD fail the ROP if unknown flags in the CopyFlags field are set.

The following table lists the server behavior for valid combinations of the Unicode, ForceUnicode, and UseCpid flags of the SendOptions field.

Flag name

Description

None of the three flags are set

String properties MUST be output in the code page set on the current connection with a property type of PtypString8 ([MS-OXCDATA] section 2.11.1).

Unicode only

String properties MUST be output either in Unicode with a property type of PtypUnicode ([MS-OXCDATA] section 2.11.1), or in the code page set on the current connection with a property type of PtypString8. If the properties are stored in Unicode on the server, the server MUST return the properties in Unicode. If the properties are not stored in Unicode on the server, the server MUST return the properties in the code page set on the current connection.

ForceUnicode only

String properties MUST be output in Unicode with a property type of PtypUnicode.

UseCpid only

String properties MUST be output using code page property types, as specified in section 2.2.4.1.1.1. If the properties are stored in Unicode on the server, the server MUST return the properties using the Unicode code page (code page property type 0x84B0), otherwise the server MUST send the string using the code page property type of the code page in which the property is stored on the server.

Unicode and ForceUnicode

String properties MUST be output in Unicode with a property type of PtypUnicode.

UseCpid and Unicode

String properties MUST be output using code page property types, as specified in section 2.2.4.1.1.1. If the properties are stored in Unicode on the server, the server MUST return the properties using the Unicode code page (code page property type 0x84B0); otherwise the server MUST send the string using the code page property type of the code page in which the property is stored on the server.

The combination of the UseCpid and Unicode flags is the ForUpload flag.

UseCpid and ForceUnicode

String properties MUST be output using the Unicode code page (code page property type 0x84B0).

UseCpid, Unicode, and ForceUnicode

The combination of the UseCpid and Unicode flags is the ForUpload flag.

String properties MUST be output using the Unicode code page (code page property type 0x84B0).

The server MUST attempt to recover from failures when downloading changes for individual messages, when the RecoverMode flag of the SendOptions field is set.

Servers SHOULD fail the ROP if any unknown flags in the SendOptions field are set.