none
CopyFlags mis-match RRS feed

  • Question

  • Hello,

    In MS-OXCROPS (1.03), for the RopFastTransferSourceCopy* rops, the CopyFlags field is listed as a single byte.  It goes on to refer to MS-OXCFXICS Section 2.2.3.1.1.1.1 which describes the field options as 4 bytes.

    I haven't tested it to see if the layout is wrong or the flags are wrong.  Can anyone shed a little light on this?

    Thanks,
    Joe
    Sunday, December 28, 2008 2:47 PM

Answers

  • Joe,

    My apologies! It seems that CopyFlags is described in each Remote Operation where applicable. The previous table I provided to you was for the RopFastTransferSourceCopyTo Remote Operation. Here is the CopyFlags field information for the other operations in question.

    2.2.3.1.1.2  RopFastTransferSourceCopyProperties

    Remarks:

    This ROP is very similar to RopFastTransferSourceCopyTo, with the following exceptions:

    ·        PropertyTags specify a list of properties and subobjects to include, as opposed to exclude.

    ·        BestBody logic SHOULD NOT be used when copying messages.

    2.2.3.1.1.2.1    CopyFlags

    Defines parameters of the FastTransfer download operation.

    Servers MAY fail the command if unknown flag bits are set.

    Name

    Value

    Description

    Move

    0x01

    MUST NOT be passed if InputServerObject is not a folder or a message.

    If this flag is set, the client identifies the FastTransfer operation being configured as a logical part of a larger object move operation.

    If this flag is specified for a download operation, the server SHOULD NOT output any objects in a FastTransfer stream that the client does not have permissions to delete. See section 3.2.4.4.1 for more server details.

    Unused1

    0x02

    MUST be ignored by the server.

    Unused2

    0x04

    MUST be ignored by the server.

    Unused3

    0x08

    MUST be ignored by the server.

     
    2.2.3.1.1.3       RopFastTransferSourceCopyMessages

    2.2.3.1.1.3.1  CopyFlags

    Defines parameters of the FastTransfer download operation.

    Servers MAY fail the command if unknown flag bits are set.

    Name

    Value

    Description

    Move

    0x01

    MUST NOT be passed if InputServerObject is not a folder.

    If this flag is set, the client identifies the FastTransfer operation being configured as a logical part of a larger object move operation.

    If this flag is specified for a download operation, the server SHOULD NOT output any objects in a FastTransfer stream that the client does not have permissions to delete. See section 3.2.4.4.1 for more server details.

    Unused1

    0x02

    MUST be ignored by the server.

    Unused2

    0x04

    MUST be ignored by the server.

    Unused3

    0x08

    MUST be ignored by the server.

    BestBody

    0x10

    If set, the server SHOULD output the message body, and the body of embedded messages, in their original format.

    If not set, the server MUST output message bodies in the compressed Rich Text Format (RTF).

     2.2.3.1.1.4        RopFastTransferSourceCopyFolder

    2.2.3.1.1.4.1    CopyFlags

    Defines parameters of the FastTransfer download operation.

    Servers MAY fail the command if unknown flag bits are set.

    Name

    Value

    Description

    Move

    0x01

    If this flag is set, the client identifies the FastTransfer operation being configured as a logical part of a larger object move operation.

    If this flag is specified for a download operation, the server SHOULD NOT output any objects in a FastTransfer stream that the client does not have permissions to delete. See section 3.2.4.4.1 for more server details.

    Unused1

    0x02

    MUST be ignored by the server.

    Unused2

    0x04

    MUST be ignored by the server.

    Unused3

    0x08

    MUST be ignored by the server.

    CopySubfolders

    0x10

    This flag identifies whether subfolders of a folder specified in InputServerObject, MUST be recursively included into the scope.

    NoGhostedContent

    0x20

    If this flag is set, the server SHOULD NOT send ghosted folder content.

     

    Is this information sufficient?

    Dominic Salemno
    SENIOR SUPPORT ESCALATION ENGINEER

     

    • Marked as answer by JoeDoyle23 Thursday, January 22, 2009 5:36 PM
    Tuesday, January 20, 2009 9:23 PM

All replies

  • Joe,

    I have alerted our Protocols Support team concerning your questions. One of our team members will contact you soon.

    Richard Guthrie
    Escalation Engineer
    Sunday, December 28, 2008 10:00 PM
  • Greetings Joe,

    I have taken ownership of your issue. Upon reviewing [MS-OXCFXICS].pdf within Section 2.2.3.1.1.1.1 (Page 37) of the specified document, it seems that the CopyFlags field (4-byte field) described is contained within a RopFastTransferSourceCopyTo Request (Page 36 Section 2.2.3.1.1.1). Cross-referencing [MS-OXCROPS].pdf for the same operation (RopFastTransferSourceCopyTo Request, Page 210 Section 2.2.11.6), I have found that MS-OXCROPS also refers to CopyFlags as a 4-byte field (Page 211 Section 2.2.11.6.1).

    Could you tell me what Page and Section you are referencing in [MS-OXCROPS].pdf?

    Thank you!

    Dominic Salemno

    SENIOR SUPPORT ESCALATION ENGINEER

    Monday, December 29, 2008 3:42 PM
  • Hi Dominic,

    The function I'm looking to use is RopFastTransferSourceCopyMessages.  On page 210 of [MS-OXCROPS], it lists CopyFlags as a 1 byte field.  On page 208 of [MS-OXCROPS], RopFastTransferSourceCopyFolder also shows CopyFlags as a 1 byte field.  The description of both of these functions are referenced as you mentioned in [MS-OXCFXICS] on page 37 which shows a 4 byte field.

    I didn't notice that RopFastTransferSourceCopyTo showed it as a 4 byte field.  Is the request layout description wrong for RopFastTransferSourceCopyMessages and RopFastTransferSourceCopyFolder and it should be 4 bytes?  Based on the SourceCopyTo layout, I would assume that it should be 4 bytes.

    On a quick side note:  These documents are fantastic!  Feel free to pass it on to the folks who put them together.

    Thanks,
    Joe
    Monday, December 29, 2008 5:27 PM
  • Joe,

    Note: ~ will signify a prefix of RopFastTransferSource for simplicity's sake, as all remote operations in question contain this prefix.

    After reviewing both documents, I find that both sets correlate. ~CopyFolder and ~CopyMessages in both documents contain a 1-byte CopyFlags field. The ~CopyTo request is the only one containing a 4-byte CopyFlags field.

    Is this not what you are seeing?

    Pay close attention in both documents. Each remote operation has its own defined section detailing the various fields and their lengths.

    RopFastTransferSourceCopyFolder

    [MS-OXCROPS].pdf
    ============

    Page: 208
    Section: 2.2.11.4
    CopyFlags Length: 1 byte  (Page 208)

     [MS-OXCFXICS].pdf
    ===========

    Page: 40
    Section 2.2.3.1.1.4
    CopyFlags Length: 1 byte  (Page 41)

    RopFastTransferSourceCopyMessages

    [MS-OXCROPS].pdf
    ============

    Page: 209
    Section: 2.2.11.5
    CopyFlags Length: 1 byte  (Page 210)

     [MS-OXCFXICS].pdf
    ===========

    Page: 40
    Section 2.2.3.1.1.3
    CopyFlags Length: 1 byte  (Page 40)

    RopFastTransferSourceCopyTo

    [MS-OXCROPS].pdf
    ============

    Page: 210
    Section: 2.2.11.6
    CopyFlags Length: 4 bytes  (Page 211)

     [MS-OXCFXICS].pdf
    ===========

    Page: 36
    Section 2.2.3.1.1.1
    CopyFlags Length: 4 bytes  (Page 36)

     

    Does this assist you in any way?

    Dominic Salemno

    SENIOR SUPPORT ESCALATION ENGINEER

     

    Monday, December 29, 2008 9:23 PM
  • Dominic,

    I agree that these correlate.  The part that is causing problems is the definition for CopyFlags.  Both references you listed for ~CopyFolder and ~CopyMessages in [MS-OXCFXICS] on pages 40 & 41 point back to Section 2.2.3.1.1.1.1 for the possible values of the CopyFlag field.  In Section 2.2.3.1.1.1.1, on page 37, the possible flags are listed as 4 byte values.  The description for BestBody says that it can be set for ~CopyMessages, but it a value of 0x00002000, which is larger than a single byte.

    Quoted from the CopyFlags definition:

    BestBody 
     
    0x00002000 
     
    This flag is ignored by any ROPs other than the following:
    • RopFastTransferSourceCopyTo if InputServerObject is a message
    • RopFastTransferSourceCopyMessages 
    If set, the server SHOULD output message bodies in their original format. If not set, the server MUST output message bodies in the compressed Rich Text Format (RTF).

    So I guess the problem I am seeing is that if ~CopyFolder and ~CopyMessages use a 1 byte CopyFlag field, where is the 1 byte definition for the possible values?  Any why does a 1 byte field point to a 4 byte definition?  Most of the sections do agree with each other which makes it hard to tell which one is right, and how to use it.  I do have time today to test this out and see how Exchange 2007 reacts to it both ways.

    Thanks,
    Joe

    Tuesday, December 30, 2008 7:44 AM
  • Hi Dominic,

    It appears that ~CopyFolder and ~CopyMessages do require the CopyFlag field to be 1 byte.  So now all that is really missing is the definition of possible values for the 1 byte values of CopyFlag.

    Thanks,
    Joe
    Tuesday, December 30, 2008 9:32 AM
  •  Joe,

    You are absolutely correct! This seems like an issue with the documentation. I forwarded this information on to a colleague for resolution. I will keep you informed as things progress!

    Dominic Salemno

    SENIOR SUPPORT ESCALATION ENGINEER

    Tuesday, December 30, 2008 7:13 PM
  • Joe,

     

    We have made the following modifications to that particular section of the document. The updated section looks like the following:

    2.2.3.1.1.1.1
       CopyFlags

    Defines parameters of the FastTransfer download operation.

    Servers MAY fail the command if unknown flag bits are set.

    Name

    Value

    Description

    Move

    0x00000001

    MUST NOT be passed if InputServerObject is not a folder or a message.

    If this flag is set, the client identifies the FastTransfer operation being configured as a logical part of a larger object move operation.

    If this flag is specified for a download operation, the server SHOULD NOT output any objects in a FastTransfer stream that the client does not have permissions to delete. See section 3.2.4.4.1 for more server details.

    Unused1

    0x00000002

    MUST be ignored by the server.

    Unused2

    0x00000004

    MUST be ignored by the server.

    Unused3

    0x00000008

    MUST be ignored by the server.

    Unused4

    0x00000200

    MUST be ignored by the server.

    Unused5

    0x00000400

    MUST be ignored by the server.

    BestBody

    0x00002000

    MUST NOT be passed if InputServerObject is not a message.

    If set, the server SHOULD output the message body, and the body of embedded messages, in its original format.

    If not set, the server MUST output message body in the compressed Rich Text Format (RTF).



    These modifications will be in the next release of the document.

    Does this assist you?

    Dominic Salemno

    SENIOR SUPPORT ESCALATION ENGINEER

     

    Thursday, January 15, 2009 7:09 PM
  • Hi Dominic,

    The updated table doesn't help.  It appears from my testing that there should be 2 definitions for the CopyFlags property.  In fact, there should really be 2 different names to avoid this confusion altogether.  The table listed works for the 4 byte CopyFlags which is used in a few of the ROPFastTransfer operations.  What is still missing is a definition (and I feel a new name) for the 1 byte CopyFlags value which is used specificly in RopFastTransferSourceCopyMessages. 

    I still can't use the BestBody value defined in your new table becuase it uses a value larger than 1 byte.  The BestBody flag is a 2 byte value at a minimum. 

    Thanks,
    Joe


    Friday, January 16, 2009 6:06 PM
  • Joe,

    My apologies! It seems that CopyFlags is described in each Remote Operation where applicable. The previous table I provided to you was for the RopFastTransferSourceCopyTo Remote Operation. Here is the CopyFlags field information for the other operations in question.

    2.2.3.1.1.2  RopFastTransferSourceCopyProperties

    Remarks:

    This ROP is very similar to RopFastTransferSourceCopyTo, with the following exceptions:

    ·        PropertyTags specify a list of properties and subobjects to include, as opposed to exclude.

    ·        BestBody logic SHOULD NOT be used when copying messages.

    2.2.3.1.1.2.1    CopyFlags

    Defines parameters of the FastTransfer download operation.

    Servers MAY fail the command if unknown flag bits are set.

    Name

    Value

    Description

    Move

    0x01

    MUST NOT be passed if InputServerObject is not a folder or a message.

    If this flag is set, the client identifies the FastTransfer operation being configured as a logical part of a larger object move operation.

    If this flag is specified for a download operation, the server SHOULD NOT output any objects in a FastTransfer stream that the client does not have permissions to delete. See section 3.2.4.4.1 for more server details.

    Unused1

    0x02

    MUST be ignored by the server.

    Unused2

    0x04

    MUST be ignored by the server.

    Unused3

    0x08

    MUST be ignored by the server.

     
    2.2.3.1.1.3       RopFastTransferSourceCopyMessages

    2.2.3.1.1.3.1  CopyFlags

    Defines parameters of the FastTransfer download operation.

    Servers MAY fail the command if unknown flag bits are set.

    Name

    Value

    Description

    Move

    0x01

    MUST NOT be passed if InputServerObject is not a folder.

    If this flag is set, the client identifies the FastTransfer operation being configured as a logical part of a larger object move operation.

    If this flag is specified for a download operation, the server SHOULD NOT output any objects in a FastTransfer stream that the client does not have permissions to delete. See section 3.2.4.4.1 for more server details.

    Unused1

    0x02

    MUST be ignored by the server.

    Unused2

    0x04

    MUST be ignored by the server.

    Unused3

    0x08

    MUST be ignored by the server.

    BestBody

    0x10

    If set, the server SHOULD output the message body, and the body of embedded messages, in their original format.

    If not set, the server MUST output message bodies in the compressed Rich Text Format (RTF).

     2.2.3.1.1.4        RopFastTransferSourceCopyFolder

    2.2.3.1.1.4.1    CopyFlags

    Defines parameters of the FastTransfer download operation.

    Servers MAY fail the command if unknown flag bits are set.

    Name

    Value

    Description

    Move

    0x01

    If this flag is set, the client identifies the FastTransfer operation being configured as a logical part of a larger object move operation.

    If this flag is specified for a download operation, the server SHOULD NOT output any objects in a FastTransfer stream that the client does not have permissions to delete. See section 3.2.4.4.1 for more server details.

    Unused1

    0x02

    MUST be ignored by the server.

    Unused2

    0x04

    MUST be ignored by the server.

    Unused3

    0x08

    MUST be ignored by the server.

    CopySubfolders

    0x10

    This flag identifies whether subfolders of a folder specified in InputServerObject, MUST be recursively included into the scope.

    NoGhostedContent

    0x20

    If this flag is set, the server SHOULD NOT send ghosted folder content.

     

    Is this information sufficient?

    Dominic Salemno
    SENIOR SUPPORT ESCALATION ENGINEER

     

    • Marked as answer by JoeDoyle23 Thursday, January 22, 2009 5:36 PM
    Tuesday, January 20, 2009 9:23 PM
  • Hi Dominic,

    That looks more like what I was expecting!  Thanks a lot for all your help!

    Joe
    Thursday, January 22, 2009 5:36 PM
  • No Problem! Glad to be of assistance!

    Dominic Salemno

    SENIOR SUPPORT ESCALATION ENGINEER

    Tuesday, January 27, 2009 3:34 PM