(Ms-Oxcrops) : Remote Operations (ROP) List and Encoding Protocol
(Ms-Oxcrops) : Remote Operations (ROP) List and Encoding Protocol
(Ms-Oxcrops) : Remote Operations (ROP) List and Encoding Protocol
Tools. The Open Specifications documentation does not require the use of Microsoft programming
tools or programming environments in order for you to develop an implementation. If you have access
to Microsoft programming tools and environments, you are free to take advantage of them. Certain
Open Specifications documents are intended for use in conjunction with publicly available standards
specifications and network programming art and, as such, assume that the reader either is familiar
with the aforementioned material or has immediate access to it.
1 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
Revision Summary
Revision Revision
Date History Class Comments
4/10/2009 2.0 Major Updated technical content and applicable product releases.
2 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
Revision Revision
Date History Class Comments
3 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
Table of Contents
1 Introduction .......................................................................................................... 14
1.1 Glossary ......................................................................................................... 14
1.2 References ...................................................................................................... 17
1.2.1 Normative References ................................................................................. 17
1.2.2 Informative References ............................................................................... 18
1.3 Overview ........................................................................................................ 18
1.3.1 Server Objects ........................................................................................... 19
1.3.2 Format of ROP Buffers ................................................................................. 19
1.4 Relationship to Other Protocols .......................................................................... 19
1.5 Prerequisites/Preconditions ............................................................................... 20
1.6 Applicability Statement ..................................................................................... 20
1.7 Versioning and Capability Negotiation ................................................................. 20
1.8 Vendor-Extensible Fields ................................................................................... 20
1.9 Standards Assignments..................................................................................... 20
2 Messages ............................................................................................................... 21
2.1 Transport ........................................................................................................ 21
2.2 Message Syntax ............................................................................................... 21
2.2.1 ROP Input and Output Buffers ...................................................................... 21
2.2.2 The Table of RopIds .................................................................................... 21
2.2.3 Logon ROPs ............................................................................................... 30
2.2.3.1 RopLogon ROP ...................................................................................... 30
2.2.3.1.1 RopLogon ROP Request Buffer........................................................... 30
2.2.3.1.2 RopLogon ROP Success Response Buffer for Private Mailboxes .............. 30
2.2.3.1.2.1 LogonTime Structure .................................................................. 32
2.2.3.1.3 RopLogon ROP Success Response Buffer for Public Folders ................... 33
2.2.3.1.4 RopLogon ROP Redirect Response Buffer ............................................ 34
2.2.3.1.5 RopLogon ROP Failure Response Buffer .............................................. 35
2.2.3.2 RopGetReceiveFolder ROP ...................................................................... 35
2.2.3.2.1 RopGetReceiveFolder ROP Request Buffer ........................................... 35
2.2.3.2.2 RopGetReceiveFolder ROP Success Response Buffer ............................. 36
2.2.3.2.3 RopGetReceiveFolder ROP Failure Response Buffer .............................. 36
2.2.3.3 RopSetReceiveFolder ROP ...................................................................... 37
2.2.3.3.1 RopSetReceiveFolder ROP Request Buffer ........................................... 37
2.2.3.3.2 RopSetReceiveFolder ROP Response Buffer ......................................... 37
2.2.3.4 RopGetReceiveFolderTable ROP .............................................................. 38
2.2.3.4.1 RopGetReceiveFolderTable ROP Request Buffer ................................... 38
2.2.3.4.2 RopGetReceiveFolderTable ROP Success Response Buffer ..................... 38
2.2.3.4.3 RopGetReceiveFolderTable ROP Failure Response Buffer ....................... 39
2.2.3.5 RopGetStoreState ROP .......................................................................... 39
2.2.3.5.1 RopGetStoreStage ROP Request Buffer .............................................. 39
2.2.3.5.2 RopGetStoreState ROP Success Response Buffer ................................. 39
2.2.3.5.3 RopGetStoreState ROP Failure Response Buffer ................................... 40
2.2.3.6 RopGetOwningServers ROP .................................................................... 40
2.2.3.6.1 RopGetOwningServers ROP Request Buffer ......................................... 40
2.2.3.6.2 RopGetOwningServers ROP Success Response Buffer ........................... 41
2.2.3.6.3 RopGetOwningServers ROP Failure Response Buffer ............................ 42
2.2.3.7 RopPublicFolderIsGhosted ROP ............................................................... 42
2.2.3.7.1 RopPublicFolderIsGhosted ROP Request Buffer .................................... 42
2.2.3.7.2 RopPublicFolderIsGhosted ROP Success Response Buffer ...................... 42
2.2.3.7.3 RopPublicFolderIsGhosted ROP Failure Response Buffer ........................ 43
2.2.3.8 RopLongTermIdFromId ROP ................................................................... 44
2.2.3.8.1 RopLongTermIdFromId ROP Request Buffer ........................................ 44
2.2.3.8.2 RopLongTermIdFromId ROP Success Response Buffer .......................... 44
2.2.3.8.3 RopLongTermIdFromId ROP Failure Response Buffer ............................ 45
4 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.3.9 RopIdFromLongTermId ROP ................................................................... 45
2.2.3.9.1 RopIdFromLongTermId ROP Request Buffer ........................................ 45
2.2.3.9.2 RopIdFromLongTermId ROP Success Response Buffer .......................... 46
2.2.3.9.3 RopIdFromLongTermId ROP Failure Response Buffer ............................ 46
2.2.3.10 RopGetPerUserLongTermIds ROP ............................................................ 47
2.2.3.10.1 RopGetPerUserLongTermIds ROP Request Buffer ................................. 47
2.2.3.10.2 RopGetPerUserLongTermIds ROP Success Response Buffer ................... 47
2.2.3.10.3 RopGetPerUserLongTermIds ROP Failure Response Buffer .................... 48
2.2.3.11 RopGetPerUserGuid ROP ........................................................................ 48
2.2.3.11.1 RopGetPerUserGuid ROP Request Buffer ............................................. 49
2.2.3.11.2 RopGetPerUserGuid ROP Success Response Buffer ............................... 49
2.2.3.11.3 RopGetPerUserGuid ROP Failure Response Buffer ................................ 50
2.2.3.12 RopReadPerUserInformation ROP ............................................................ 50
2.2.3.12.1 RopReadPerUserInformation ROP Request Buffer ................................. 50
2.2.3.12.2 RopReadPerUserInformation ROP Success Response Buffer ................... 51
2.2.3.12.3 RopReadPerUserInformation ROP Failure Response Buffer .................... 52
2.2.3.13 RopWritePerUserInformation ROP ........................................................... 52
2.2.3.13.1 RopWritePerUserInformation ROP Request Buffer ................................ 52
2.2.3.13.2 RopWritePerUserInformation ROP Response Buffer .............................. 53
2.2.4 Folder ROPs ............................................................................................... 54
2.2.4.1 RopOpenFolder ROP .............................................................................. 54
2.2.4.1.1 RopOpenFolder ROP Request Buffer ................................................... 54
2.2.4.1.2 RopOpenFolder ROP Success Response Buffer ..................................... 55
2.2.4.1.3 RopOpenFolder ROP Failure Response Buffer ....................................... 55
2.2.4.2 RopCreateFolder ROP ............................................................................ 56
2.2.4.2.1 RopCreateFolder ROP Request Buffer ................................................. 56
2.2.4.2.2 RopCreateFolder ROP Success Response Buffer ................................... 57
2.2.4.2.3 RopCreateFolder ROP Failure Response Buffer ..................................... 58
2.2.4.3 RopDeleteFolder ROP ............................................................................. 58
2.2.4.3.1 RopDeleteFolder ROP Request Buffer ................................................. 58
2.2.4.3.2 RopDeleteFolder ROP Response Buffer ............................................... 59
2.2.4.4 RopSetSearchCriteria ROP ...................................................................... 59
2.2.4.4.1 RopSetSearchCriteria ROP Request Buffer .......................................... 59
2.2.4.4.2 RopSetSearchCriteria ROP Response Buffer ........................................ 60
2.2.4.5 RopGetSearchCriteria ROP ..................................................................... 60
2.2.4.5.1 RopGetSearchCriteria ROP Request Buffer .......................................... 60
2.2.4.5.2 RopGetSearchCriteria ROP Success Response Buffer ............................ 61
2.2.4.5.3 RopGetSearchCriteria ROP Failure Response Buffer .............................. 62
2.2.4.6 RopMoveCopyMessages ROP .................................................................. 62
2.2.4.6.1 RopMoveCopyMessages ROP Request Buffer ....................................... 62
2.2.4.6.2 RopMoveCopyMessages ROP Response Buffer ..................................... 63
2.2.4.6.3 RopMoveCopyMessages ROP Null Destination Failure Response Buffer .... 63
2.2.4.7 RopMoveFolder ROP .............................................................................. 64
2.2.4.7.1 RopMoveFolder ROP Request Buffer ................................................... 64
2.2.4.7.2 RopMoveFolder ROP Response Buffer ................................................. 65
2.2.4.7.3 RopMoveFolder ROP Null Destination Failure Response Buffer ............... 65
2.2.4.8 RopCopyFolder ROP............................................................................... 66
2.2.4.8.1 RopCopyFolder ROP Request Buffer ................................................... 66
2.2.4.8.2 RopCopyFolder ROP Response Buffer ................................................. 66
2.2.4.8.3 RopCopyFolder ROP Null Destination Failure Response Buffer ................ 67
2.2.4.9 RopEmptyFolder ROP ............................................................................. 67
2.2.4.9.1 RopEmptyFolder ROP Request Buffer ................................................. 67
2.2.4.9.2 RopEmptyFolder ROP Response Buffer ............................................... 68
2.2.4.10 RopHardDeleteMessagesAndSubfolders ROP ............................................. 68
2.2.4.10.1 RopHardDeleteMessagesAndSubfolders ROP Request Buffer .................. 68
2.2.4.10.2 RopHardDeleteMessagesAndSubfolders ROP Response Buffer ................ 69
2.2.4.11 RopDeleteMessages ROP ........................................................................ 69
2.2.4.11.1 RopDeleteMessages ROP Request Buffer ............................................. 69
5 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.4.11.2 RopDeleteMessages ROP Response Buffer ........................................... 70
2.2.4.12 RopHardDeleteMessages ROP ................................................................. 70
2.2.4.12.1 RopHardDeleteMessages ROP Request Buffer ...................................... 71
2.2.4.12.2 RopHardDeleteMessages ROP Response Buffer .................................... 71
2.2.4.13 RopGetHierarchyTable ROP .................................................................... 72
2.2.4.13.1 RopGetHierarchyTable ROP Request Buffer ......................................... 72
2.2.4.13.2 RopGetHierarchyTable ROP Success Response Buffer ........................... 72
2.2.4.13.3 RopGetHierarchyTable ROP Failure Response Buffer ............................. 73
2.2.4.14 RopGetContentsTable ROP ..................................................................... 73
2.2.4.14.1 RopGetContentsTable ROP Request Buffer .......................................... 73
2.2.4.14.2 RopGetContentsTable ROP Success Response Buffer ............................ 73
2.2.4.14.3 RopGetContentsTable ROP Failure Response Buffer .............................. 74
2.2.5 Table ROPs ................................................................................................ 74
2.2.5.1 RopSetColumns ROP ............................................................................. 74
2.2.5.1.1 RopSetColumns ROP Request Buffer .................................................. 74
2.2.5.1.2 RopSetColumns ROP Success Response Buffer .................................... 75
2.2.5.1.3 RopSetColumns ROP Failure Response Buffer ...................................... 75
2.2.5.2 RopSortTable ROP ................................................................................. 76
2.2.5.2.1 RopSortTable ROP Request Buffer...................................................... 76
2.2.5.2.2 RopSortTable ROP Success Response Buffer ....................................... 77
2.2.5.2.3 RopSortTable ROP Failure Response Buffer ......................................... 77
2.2.5.3 RopRestrict ROP.................................................................................... 77
2.2.5.3.1 RopRestrict ROP Request Buffer ........................................................ 77
2.2.5.3.2 RopRestrict ROP Success Response Buffer .......................................... 78
2.2.5.3.3 RopRestrict ROP Failure Response Buffer ............................................ 78
2.2.5.4 RopQueryRows ROP .............................................................................. 79
2.2.5.4.1 RopQueryRows ROP Request Buffer ................................................... 79
2.2.5.4.2 RopQueryRows ROP Success Response Buffer ..................................... 79
2.2.5.4.3 RopQueryRows ROP Failure Response Buffer ....................................... 80
2.2.5.5 RopAbort ROP....................................................................................... 80
2.2.5.5.1 RopAbort ROP Request Buffer ........................................................... 81
2.2.5.5.2 RopAbort ROP Success Response Buffer ............................................. 81
2.2.5.5.3 RopAbort ROP Failure Response Buffer ............................................... 81
2.2.5.6 RopGetStatus ROP ................................................................................ 82
2.2.5.6.1 RopGetStatus ROP Request Buffer ..................................................... 82
2.2.5.6.2 RopGetStatus ROP Success Response Buffer ....................................... 82
2.2.5.6.3 RopGetStatus ROP Failure Response Buffer ......................................... 82
2.2.5.7 RopQueryPosition ROP ........................................................................... 83
2.2.5.7.1 RopQueryPosition ROP Request Buffer ................................................ 83
2.2.5.7.2 RopQueryPosition ROP Success Response Buffer.................................. 83
2.2.5.7.3 RopQueryPosition ROP Failure Response Buffer ................................... 84
2.2.5.8 RopSeekRow ROP ................................................................................. 84
2.2.5.8.1 RopSeekRow ROP Request Buffer ...................................................... 84
2.2.5.8.2 RopSeekRow ROP Success Response Buffer ........................................ 85
2.2.5.8.3 RopSeekRow ROP Failure Response Buffer .......................................... 85
2.2.5.9 RopSeekRowBookmark ROP ................................................................... 86
2.2.5.9.1 RopSeekRowBookmark ROP Request Buffer ........................................ 86
2.2.5.9.2 RopSeekRowBookmark ROP Success Response Buffer .......................... 86
2.2.5.9.3 RopSeekRowBookmark ROP Failure Response Buffer ............................ 87
2.2.5.10 RopSeekRowFractional ROP .................................................................... 87
2.2.5.10.1 RopSeekRowFractional ROP Request Buffer ......................................... 87
2.2.5.10.2 RopSeekRowFractional ROP Response Buffer....................................... 88
2.2.5.11 RopCreateBookmark ROP ....................................................................... 88
2.2.5.11.1 RopCreateBookmark ROP Request Buffer ............................................ 88
2.2.5.11.2 RopCreateBookmark ROP Success Response Buffer.............................. 89
2.2.5.11.3 RopCreateBookmark ROP Failure Response Buffer ............................... 89
2.2.5.12 RopQueryColumnsAll ROP ...................................................................... 90
2.2.5.12.1 RopQueryColumnsAll ROP Request Buffer ........................................... 90
6 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.5.12.2 RopQueryColumnsAll ROP Success Response Buffer ............................. 90
2.2.5.12.3 RopQueryColumnsAll ROP Failure Response Buffer ............................... 90
2.2.5.13 RopFindRow ROP .................................................................................. 91
2.2.5.13.1 RopFindRow ROP Request Buffer ....................................................... 91
2.2.5.13.2 RopFindRow ROP Success Response Buffer ......................................... 92
2.2.5.13.3 RopFindRow ROP Failure Response Buffer ........................................... 92
2.2.5.14 RopFreeBookmark ROP .......................................................................... 93
2.2.5.14.1 RopFreeBookmark ROP Request Buffer ............................................... 93
2.2.5.14.2 RopFreeBookmark ROP Response Buffer ............................................. 93
2.2.5.15 RopResetTable ROP ............................................................................... 94
2.2.5.15.1 RopResetTable ROP Request Buffer .................................................... 94
2.2.5.15.2 RopResetTable ROP Response Buffer .................................................. 94
2.2.5.16 RopExpandRow ROP .............................................................................. 94
2.2.5.16.1 RopExpandRow ROP Request Buffer ................................................... 94
2.2.5.16.2 RopExpandRow ROP Success Response Buffer ..................................... 95
2.2.5.16.3 RopExpandRow ROP Failure Response Buffer ...................................... 96
2.2.5.17 RopCollapseRow ROP ............................................................................. 96
2.2.5.17.1 RopCollapseRow ROP Request Buffer ................................................. 96
2.2.5.17.2 RopCollapseRow ROP Success Response Buffer ................................... 97
2.2.5.17.3 RopCollapseRow ROP Failure Response Buffer ..................................... 97
2.2.5.18 RopGetCollapseState ROP ...................................................................... 97
2.2.5.18.1 RopGetCollapseState ROP Request Buffer ........................................... 97
2.2.5.18.2 RopGetCollapseState ROP Success Response Buffer ............................. 98
2.2.5.18.3 RopGetCollapseState ROP Failure Response Buffer ............................... 99
2.2.5.19 RopSetCollapseState ROP ...................................................................... 99
2.2.5.19.1 RopSetCollapseState ROP Request Buffer ........................................... 99
2.2.5.19.2 RopSetCollapseState ROP Success Response Buffer ............................100
2.2.5.19.3 RopSetCollapseState ROP Failure Response Buffer ..............................100
2.2.6 Message ROPs ...........................................................................................101
2.2.6.1 RopOpenMessage ROP ..........................................................................101
2.2.6.1.1 RopOpenMessage ROP Request Buffer ...............................................101
2.2.6.1.2 RopOpenMessage ROP Success Response Buffer.................................101
2.2.6.1.2.1 OpenRecipientRow Structure ......................................................103
2.2.6.1.3 RopOpenMessage ROP Failure Response Buffer ..................................103
2.2.6.2 RopCreateMessage ROP ........................................................................103
2.2.6.2.1 RopCreateMessage ROP Request Buffer .............................................104
2.2.6.2.2 RopCreateMessage ROP Success Response Buffer ...............................104
2.2.6.2.3 RopCreateMessage ROP Failure Response Buffer ................................105
2.2.6.3 RopSaveChangesMessage ROP ..............................................................105
2.2.6.3.1 RopSaveChangesMessage ROP Request Buffer ...................................105
2.2.6.3.2 RopSaveChangesMessage ROP Success Response Buffer .....................106
2.2.6.3.3 RopSaveChangesMessage ROP Failure Response Buffer .......................106
2.2.6.4 RopRemoveAllRecipients ROP ................................................................107
2.2.6.4.1 RopRemoveAllRecipients ROP Request Buffer .....................................107
2.2.6.4.2 RopRemoveAllRecipients ROP Response Buffer ...................................107
2.2.6.5 RopModifyRecipients ROP ......................................................................107
2.2.6.5.1 RopModifyRecipients ROP Request Buffer ...........................................107
2.2.6.5.1.1 ModifyRecipientRow Structure ....................................................108
2.2.6.5.2 RopModifyRecipients ROP Response Buffer.........................................109
2.2.6.6 RopReadRecipients ROP ........................................................................109
2.2.6.6.1 RopReadRecipients ROP Request Buffer .............................................109
2.2.6.6.2 RopReadRecipients ROP Success Response Buffer ...............................110
2.2.6.6.2.1 ReadRecipientRow Structure ......................................................110
2.2.6.6.3 RopReadRecipients ROP Failure Response Buffer ................................111
2.2.6.7 RopReloadCachedInformation ROP .........................................................111
2.2.6.7.1 RopReloadCachedInformation ROP Request Buffer ..............................111
2.2.6.7.2 RopReloadCachedInformation ROP Success Response Buffer ................112
2.2.6.7.3 RopReloadCachedInformation ROP Failure Response Buffer .................113
7 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.6.8 RopSetMessageStatus ROP ....................................................................113
2.2.6.8.1 RopSetMessageStatus ROP Request Buffer ........................................113
2.2.6.8.2 RopSetMessageStatus ROP Success Response Buffer ..........................114
2.2.6.8.3 RopSetMessageStatus ROP Failure Response Buffer ............................114
2.2.6.9 RopGetMessageStatus ROP ...................................................................115
2.2.6.9.1 RopGetMessageStatus ROP Request Buffer ........................................115
2.2.6.9.2 RopGetMessageStatus ROP Response Buffers .....................................115
2.2.6.10 RopSetReadFlags ROP ..........................................................................115
2.2.6.10.1 RopSetReadFlags ROP Request Buffer ...............................................115
2.2.6.10.2 RopSetReadFlags ROP Response Buffer .............................................116
2.2.6.11 RopSetMessageReadFlag ROP ................................................................117
2.2.6.11.1 RopSetMessageReadFlag ROP Request Buffer .....................................117
2.2.6.11.2 RopSetMessageReadFlag ROP Success Response Buffer ......................117
2.2.6.11.3 RopSetMessageReadFlag ROP Failure Response Buffer ........................118
2.2.6.12 RopOpenAttachment ROP ......................................................................119
2.2.6.12.1 RopOpenAttachment ROP Request Buffer ..........................................119
2.2.6.12.2 RopOpenAttachment ROP Response Buffer ........................................119
2.2.6.13 RopCreateAttachment ROP ....................................................................120
2.2.6.13.1 RopCreateAttachment ROP Request Buffer .........................................120
2.2.6.13.2 RopCreateAttachment ROP Success Response Buffer ..........................120
2.2.6.13.3 RopCreateAttachment ROP Failure Response Buffer ............................121
2.2.6.14 RopDeleteAttachment ROP ....................................................................121
2.2.6.14.1 RopDeleteAttachment ROP Request Buffer .........................................121
2.2.6.14.2 RopDeleteAttachment ROP Response Buffer .......................................121
2.2.6.15 RopSaveChangesAttachment ROP ..........................................................122
2.2.6.15.1 RopSaveChangesAttachment ROP Request Buffer ...............................122
2.2.6.15.2 RopSaveChangesAttachment ROP Response Buffer .............................122
2.2.6.16 RopOpenEmbeddedMessage ROP ...........................................................123
2.2.6.16.1 RopOpenEmbeddedMessage ROP Request Buffer ................................123
2.2.6.16.2 RopOpenEmbeddedMessage ROP Success Response Buffer ..................123
2.2.6.16.3 RopOpenEmbeddedMessage ROP Failure Response Buffer ....................125
2.2.6.17 RopGetAttachmentTable ROP .................................................................125
2.2.6.17.1 RopGetAttachmentTable ROP Request Buffer .....................................125
2.2.6.17.2 RopGetAttachmentTable ROP Response Buffer ...................................126
2.2.6.18 RopGetValidAttachments ROP ................................................................126
2.2.6.18.1 RopGetValidAttachments ROP Request Buffer .....................................126
2.2.6.18.2 RopGetValidAttachments ROP Success Response Buffer ......................126
2.2.6.18.3 RopGetValidAttachments ROP Failure Response Buffer ........................127
2.2.7 Transport ROPs .........................................................................................128
2.2.7.1 RopSubmitMessage ROP .......................................................................128
2.2.7.1.1 RopSubmitMessage ROP Request Buffer ............................................128
2.2.7.1.2 RopSubmitMessage ROP Response Buffer ..........................................128
2.2.7.2 RopAbortSubmit ROP ............................................................................128
2.2.7.2.1 RopAbortSubmit ROP Request Buffer ................................................128
2.2.7.2.2 RopAbortSubmit ROP Response Buffer ..............................................129
2.2.7.3 RopGetAddressTypes ROP .....................................................................129
2.2.7.3.1 RopGetAddressTypes ROP Request Buffer ..........................................129
2.2.7.3.2 RopGetAddressTypes ROP Success Response Buffer ............................130
2.2.7.3.3 RopGetAddressTypes ROP Failure Response Buffer .............................130
2.2.7.4 RopSetSpooler ROP ..............................................................................131
2.2.7.4.1 RopSetSpooler ROP Request Buffer ...................................................131
2.2.7.4.2 RopSetSpooler ROP Response Buffer .................................................131
2.2.7.5 RopSpoolerLockMessage ROP ................................................................132
2.2.7.5.1 RopSpoolerLockMessage ROP Request Buffer .....................................132
2.2.7.5.2 RopSpoolerLockMessage ROP Response Buffer ...................................132
2.2.7.6 RopTransportSend ROP .........................................................................133
2.2.7.6.1 RopTransportSend ROP Request Buffer .............................................133
2.2.7.6.2 RopTransportSend ROP Success Response Buffer ...............................133
8 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.7.6.3 RopTransportSend ROP Failure Response Buffer .................................134
2.2.7.7 RopTransportNewMail ROP ....................................................................134
2.2.7.7.1 RopTransportNewMail ROP Request Buffer .........................................134
2.2.7.7.2 RopTransportNewMail ROP Response Buffer .......................................135
2.2.7.8 RopGetTransportFolder ROP ..................................................................135
2.2.7.8.1 RopGetTransportFolder ROP Request Buffer .......................................135
2.2.7.8.2 RopGetTransportFolder ROP Success Response Buffer .........................136
2.2.7.8.3 RopGetTransportFolder ROP Failure Response Buffer...........................136
2.2.7.9 RopOptionsData ROP ............................................................................136
2.2.7.9.1 RopOptionsData ROP Request Buffer .................................................136
2.2.7.9.2 RopOptionsData ROP Success Response Buffer ...................................137
2.2.7.9.3 RopOptionsData ROP Failure Response Buffer ....................................138
2.2.8 Property ROPs ...........................................................................................138
2.2.8.1 RopGetPropertyIdsFromNames ROP .......................................................138
2.2.8.1.1 RopGetPropertyIdsFromNames ROP Request Buffer ............................138
2.2.8.1.2 RopGetPropertyIdsFromNames ROP Success Response Buffer ..............139
2.2.8.1.3 RopGetPropertyIdsFromNames ROP Failure Response Buffer ................140
2.2.8.2 RopGetNamesFromPropertyIds ROP .......................................................140
2.2.8.2.1 RopGetNamesFromPropertyIds ROP Request Buffer ............................140
2.2.8.2.2 RopGetNamesFromPropertyIds ROP Success Response Buffer ..............141
2.2.8.2.3 RopGetNamesFromPropertyIds ROP Failure Response Buffer ................141
2.2.8.3 RopGetPropertiesSpecific ROP................................................................142
2.2.8.3.1 RopGetPropertiesSpecific ROP Request Buffer ....................................142
2.2.8.3.2 RopGetPropertiesSpecific ROP Success Response Buffer ......................142
2.2.8.3.3 RopGetPropertiesSpecific ROP Failure Response Buffer ........................143
2.2.8.4 RopGetPropertiesAll ROP .......................................................................143
2.2.8.4.1 RopGetPropertiesAll ROP Request Buffer............................................143
2.2.8.4.2 RopGetPropertiesAll ROP Success Response Buffer .............................144
2.2.8.4.3 RopGetPropertiesAll ROP Failure Response Buffer ...............................144
2.2.8.5 RopGetPropertiesList ROP .....................................................................145
2.2.8.5.1 RopGetPropertiesList ROP Request Buffer ..........................................145
2.2.8.5.2 RopGetPropertiesList ROP Success Response Buffer ............................145
2.2.8.5.3 RopGetPropertiesList ROP Failure Response Buffer ..............................146
2.2.8.6 RopSetProperties ROP ..........................................................................146
2.2.8.6.1 RopSetProperties ROP Request Buffer ...............................................146
2.2.8.6.2 RopSetProperties ROP Success Response Buffer .................................147
2.2.8.6.3 RopSetProperties ROP Failure Response Buffer ...................................148
2.2.8.7 RopSetPropertiesNoReplicate ROP ..........................................................148
2.2.8.7.1 RopSetPropertiesNoReplicate ROP Request Buffer ...............................148
2.2.8.7.2 RopSetPropertiesNoReplicate ROP Success Response Buffer .................149
2.2.8.7.3 RopSetPropertiesNoReplicate ROP Failure Response Buffer ..................149
2.2.8.8 RopDeleteProperties ROP ......................................................................150
2.2.8.8.1 RopDeleteProperties ROP Request Buffer ...........................................150
2.2.8.8.2 RopDeleteProperties ROP Success Response Buffer .............................150
2.2.8.8.3 RopDeleteProperties ROP Failure Response Buffer ..............................151
2.2.8.9 RopDeletePropertiesNoReplicate ROP ......................................................151
2.2.8.9.1 RopDeletePropertiesNoReplicate ROP Request Buffer ..........................151
2.2.8.9.2 RopDeletePropertiesNoReplicate ROP Success Response Buffer ............152
2.2.8.9.3 RopDeletePropertiesNoReplicate ROP Failure Response Buffer ..............152
2.2.8.10 RopQueryNamedProperties ROP .............................................................153
2.2.8.10.1 RopQueryNamedProperties ROP Request Buffer ..................................153
2.2.8.10.2 RopQueryNamedProperties ROP Success Response Buffer ...................154
2.2.8.10.3 RopQueryNamedProperties ROP Failure Response Buffer .....................154
2.2.8.11 RopCopyProperties ROP ........................................................................155
2.2.8.11.1 RopCopyProperties ROP Request Buffer .............................................155
2.2.8.11.2 RopCopyProperties ROP Success Response Buffer ...............................155
2.2.8.11.3 RopCopyProperties ROP Null Destination Failure Response Buffer .........156
2.2.8.11.4 RopCopyProperties ROP Failure Response Buffer ................................156
9 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.8.12 RopCopyTo ROP ...................................................................................157
2.2.8.12.1 RopCopyTo ROP Request Buffer ........................................................157
2.2.8.12.2 RopCopyTo ROP Success Response Buffer .........................................158
2.2.8.12.3 RopCopyTo ROP Null Destination Failure Response Buffer ....................158
2.2.8.12.4 RopCopyTo ROP Failure Response Buffer ...........................................159
2.2.8.13 RopProgress ROP .................................................................................159
2.2.8.13.1 RopProgress ROP Request Buffer ......................................................159
2.2.8.13.2 RopProgress ROP Success Response Buffer ........................................160
2.2.8.13.3 RopProgress ROP Failure Response Buffer..........................................160
2.2.9 Stream ROPs.............................................................................................161
2.2.9.1 RopOpenStream ROP ............................................................................161
2.2.9.1.1 RopOpenStream ROP Request Buffer ................................................161
2.2.9.1.2 RopOpenStream ROP Success Response Buffer ..................................161
2.2.9.1.3 RopOpenStream ROP Failure Response Buffer ....................................162
2.2.9.2 RopReadStream ROP ............................................................................162
2.2.9.2.1 RopReadStream ROP Request Buffer .................................................162
2.2.9.2.2 RopReadStream ROP Response Buffer ...............................................163
2.2.9.3 RopWriteStream ROP............................................................................163
2.2.9.3.1 RopWriteStream ROP Request Buffer ................................................163
2.2.9.3.2 RopWriteStream ROP Response Buffer ..............................................164
2.2.9.4 RopWriteStreamExtended ROP...............................................................164
2.2.9.4.1 RopWriteStreamExtended ROP Request Buffer ...................................164
2.2.9.4.2 RopWriteStreamExtended ROP Response Buffer .................................165
2.2.9.5 RopCommitStream ROP ........................................................................165
2.2.9.5.1 RopCommitStream ROP Request Buffer .............................................165
2.2.9.5.2 RopCommitStream ROP Response Buffer ...........................................166
2.2.9.6 RopGetStreamSize ROP ........................................................................166
2.2.9.6.1 RopGetStreamSize ROP Request Buffer .............................................166
2.2.9.6.2 RopGetStreamSize ROP Success Response Buffer ...............................167
2.2.9.6.3 RopGetStreamSize ROP Failure Response Buffer .................................167
2.2.9.7 RopSetStreamSize ROP.........................................................................167
2.2.9.7.1 RopSetStreamSize ROP Request Buffer .............................................167
2.2.9.7.2 RopSetStreamSize ROP Response Buffer ...........................................168
2.2.9.8 RopSeekStream ROP ............................................................................168
2.2.9.8.1 RopSeekStream ROP Request Buffer .................................................168
2.2.9.8.2 RopSeekStream ROP Success Response Buffer ...................................169
2.2.9.8.3 RopSeekStream ROP Failure Response Buffer ....................................169
2.2.9.9 RopCopyToStream ROP.........................................................................170
2.2.9.9.1 RopCopyToStream ROP Request Buffer .............................................170
2.2.9.9.2 RopCopyToStream ROP Response Buffer ...........................................170
2.2.9.9.3 RopCopyToStream ROP Null Destination Failure Response Buffer ..........171
2.2.9.10 RopLockRegionStream ROP ...................................................................172
2.2.9.10.1 RopLockRegionStream ROP Request Buffer ........................................172
2.2.9.10.2 RopLockRegionStream ROP Response Buffer ......................................172
2.2.9.11 RopUnlockRegionStream ROP ................................................................173
2.2.9.11.1 RopUnlockRegionStream ROP Request Buffer .....................................173
2.2.9.11.2 RopUnlockRegionStream ROP Response Buffer ...................................174
2.2.9.12 RopWriteAndCommitStream ROP ...........................................................174
2.2.9.12.1 RopWriteAndCommitStream ROP Request Buffer ................................174
2.2.9.12.2 RopWriteAndCommitStream ROP Response Buffer ..............................175
2.2.9.13 RopCloneStream ROP ...........................................................................175
2.2.9.13.1 RopCloneStream ROP Request Buffer ................................................175
2.2.9.13.2 RopCloneStream ROP Response Buffer ..............................................175
2.2.10 Permission ROPs ........................................................................................176
2.2.10.1 RopModifyPermissions ROP....................................................................176
2.2.10.1.1 RopModifyPermissions ROP Request Buffer ........................................176
2.2.10.1.1.1 PermissionData Structure ..........................................................176
2.2.10.1.2 RopModifyPermissions ROP Response Buffer ......................................177
10 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.10.2 RopGetPermissionsTable ROP ................................................................177
2.2.10.2.1 RopGetPermissionsTable ROP Request Buffer .....................................177
2.2.10.2.2 RopGetPermissionsTable ROP Response Buffer ...................................177
2.2.11 Rule ROPs .................................................................................................178
2.2.11.1 RopModifyRules ROP ............................................................................178
2.2.11.1.1 RopModifyRules ROP Request Buffer .................................................178
2.2.11.1.1.1 RuleData Structure ...................................................................179
2.2.11.1.2 RopModifyRules ROP Response Buffer ...............................................179
2.2.11.2 RopGetRulesTable ROP .........................................................................179
2.2.11.2.1 RopGetRulesTable ROP Request Buffer ..............................................179
2.2.11.2.2 RopGetRulesTable ROP Response Buffer ............................................180
2.2.11.3 RopUpdateDeferredActionMessages ROP .................................................180
2.2.11.3.1 RopUpdateDeferredActionMessages ROP Request Buffer ......................180
2.2.11.3.2 RopUpdateDeferredActionMessages ROP Response Buffer ....................181
2.2.12 Fast Transfer ROPs ....................................................................................182
2.2.12.1 RopFastTransferDestinationConfigure ROP...............................................182
2.2.12.1.1 RopFastTransferDestinationConfigure ROP Request Buffer ...................182
2.2.12.1.2 RopFastTransferDestinationConfigure ROP Response Buffer .................182
2.2.12.2 RopFastTransferDestinationPutBuffer ROP ...............................................183
2.2.12.2.1 RopFastTransferDestinationPutBuffer ROP Request Buffer ....................183
2.2.12.2.2 RopFastTransferDestinationPutBuffer ROP Response Buffer ..................183
2.2.12.3 RopFastTransferDestinationPutBufferExtended ROP ..................................184
2.2.12.3.1 RopFastTransferDestinationPutBufferExtended ROP Request Buffer .......184
2.2.12.3.2 RopFastTransferDestinationPutBufferExtended ROP Response Buffer .....184
2.2.12.4 RopFastTransferSourceGetBuffer ROP .....................................................185
2.2.12.4.1 RopFastTransferSourceGetBuffer ROP Request Buffer ..........................185
2.2.12.4.2 RopFastTransferSourceGetBuffer ROP Response Buffer........................186
2.2.12.5 RopFastTransferSourceCopyFolder ROP...................................................187
2.2.12.5.1 RopFastTransferSourceCopyFolder ROP Request Buffer .......................187
2.2.12.5.2 RopFastTransferSourceCopyFolder ROP Response Buffer .....................187
2.2.12.6 RopFastTransferSourceCopyMessages ROP ..............................................188
2.2.12.6.1 RopFastTransferSourceCopyMessages ROP Request Buffer...................188
2.2.12.6.2 RopFastTransferSourceCopyMessages ROP Response Buffer ................188
2.2.12.7 RopFastTransferSourceCopyTo ROP ........................................................189
2.2.12.7.1 RopFastTransferSourceCopyTo ROP Request Buffer.............................189
2.2.12.7.2 RopFastTransferSourceCopyTo ROP Response Buffer ..........................190
2.2.12.8 RopFastTransferSourceCopyProperties ROP .............................................190
2.2.12.8.1 RopFastTransferSourceCopyProperties ROP Request Buffer ..................190
2.2.12.8.2 RopFastTransferSourceCopyProperties ROP Response Buffer ................191
2.2.12.9 RopTellVersion ROP ..............................................................................191
2.2.12.9.1 RopTellVersion ROP Request Buffer ...................................................191
2.2.12.9.2 RopTellVersion ROP Response Buffer .................................................192
2.2.13 Incremental Change Synchronization ROPs ...................................................192
2.2.13.1 RopSynchronizationConfigure ROP .........................................................192
2.2.13.1.1 RopSynchronizationConfigure ROP Request Buffer ..............................192
2.2.13.1.2 RopSynchronizationConfigure ROP Response Buffer ............................193
2.2.13.2 RopSynchronizationImportMessageChange ROP .......................................194
2.2.13.2.1 RopSynchronizationImportMessageChange ROP Request Buffer ............194
2.2.13.2.2 RopSynchronizationImportMessageChange ROP Success Response Buffer
....................................................................................................195
2.2.13.2.3 RopSynchronizationImportMessageChange ROP Failure Response Buffer195
2.2.13.3 RopSynchronizationImportReadStateChanges ROP ...................................196
2.2.13.3.1 RopSynchronizationImportReadStateChanges ROP Request Buffer ........196
2.2.13.3.1.1 MessageReadState Structure ......................................................196
2.2.13.3.2 RopSynchronizationImportReadStateChanges ROP Response Buffer ......197
2.2.13.4 RopSynchronizationImportHierarchyChange ROP .....................................197
2.2.13.4.1 RopSynchronizationImportHierarchyChange ROP Request Buffer ..........197
11 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.13.4.2 RopSynchronizationImportHierarchyChange ROP Success Response Buffer
....................................................................................................198
2.2.13.4.3 RopSynchronizationImportHierarchyChange ROP Failure Response Buffer
....................................................................................................198
2.2.13.5 RopSynchronizationImportDeletes ROP ...................................................199
2.2.13.5.1 RopSynchronizationImportDeletes ROP Request Buffer ........................199
2.2.13.5.2 RopSynchronizationImportDeletes ROP Response Buffer ......................199
2.2.13.6 RopSynchronizationImportMessageMove ROP ..........................................200
2.2.13.6.1 RopSynchronizationImportMessageMove ROP Request Buffer ...............200
2.2.13.6.2 RopSynchronizationImportMessageMove ROP Success Response Buffer .201
2.2.13.6.3 RopSynchronizationImportMessageMove ROP Failure Response Buffer ..202
2.2.13.7 RopSynchronizationOpenCollector ROP ...................................................202
2.2.13.7.1 RopSynchronizationOpenCollector ROP Request Buffer ........................202
2.2.13.7.2 RopSynchronizationOpenCollector ROP Response Buffer ......................203
2.2.13.8 RopSynchronizationGetTransferState ROP ...............................................203
2.2.13.8.1 RopSynchronizationGetTransferState ROP Request Buffer ....................203
2.2.13.8.2 RopSynchronizationGetTransferState ROP Response Buffer ..................204
2.2.13.9 RopSynchronizationUploadStateStreamBegin ROP ....................................204
2.2.13.9.1 RopSynchronizationUploadStateStreamBegin ROP Request Buffer.........204
2.2.13.9.2 RopSynchronizationUploadStateStreamBegin ROP Response Buffer.......205
2.2.13.10 RopSynchronizationUploadStateStreamContinue ROP ...............................205
2.2.13.10.1 RopSynchronizationUploadStateStreamContinue ROP Request Buffer ....205
2.2.13.10.2 RopSynchronizationUploadStateStreamContinue ROP Response Buffer ..206
2.2.13.11 RopSynchronizationUploadStateStreamEnd ROP ......................................206
2.2.13.11.1 RopSynchronizationUploadStateStreamEnd ROP Request Buffer ...........206
2.2.13.11.2 RopSynchronizationUploadStateStreamEnd ROP Response Buffer .........206
2.2.13.12 RopSetLocalReplicaMidsetDeleted ROP ....................................................207
2.2.13.12.1 RopSetLocalReplicaMidsetDeleted ROP Request Buffer ........................207
2.2.13.12.1.1 LongTermIdRange Structure.......................................................208
2.2.13.12.2 RopSetLocalReplicaMidsetDeleted ROP Response Buffer ......................208
2.2.13.13 RopGetLocalReplicaIds ROP ...................................................................209
2.2.13.13.1 RopGetLocalReplicaIds ROP Request Buffer ........................................209
2.2.13.13.2 RopGetLocalReplicaIds ROP Success Response Buffer .........................209
2.2.13.13.3 RopGetLocalReplicaIds ROP Failure Response Buffer ...........................210
2.2.14 Notification ROPs .......................................................................................210
2.2.14.1 RopRegisterNotification ROP ..................................................................210
2.2.14.1.1 RopRegisterNotification ROP Request Buffer .......................................210
2.2.14.1.2 RopRegisterNotification ROP Response Buffer .....................................211
2.2.14.2 RopNotify ROP .....................................................................................212
2.2.14.2.1 RopNotify ROP Response Buffer ........................................................212
2.2.14.3 RopPending ROP ..................................................................................212
2.2.14.3.1 RopPending ROP Response Buffer .....................................................212
2.2.15 Other ROPs ...............................................................................................213
2.2.15.1 RopBufferTooSmall ROP ........................................................................213
2.2.15.1.1 RopBufferTooSmall ROP Response Buffer ...........................................213
2.2.15.2 RopBackoff ROP ...................................................................................213
2.2.15.2.1 RopBackoff ROP Response Buffer ......................................................213
2.2.15.2.1.1 BackoffRop Structure ................................................................214
2.2.15.3 RopRelease ROP ..................................................................................214
2.2.15.3.1 RopRelease ROP Request Buffer .......................................................214
3 Protocol Details ................................................................................................... 216
3.1 Client Details ..................................................................................................216
3.1.1 Abstract Data Model ...................................................................................216
3.1.2 Timers .....................................................................................................216
3.1.3 Initialization ..............................................................................................216
3.1.4 Higher-Layer Triggered Events ....................................................................216
3.1.4.1 Creating a ROP Input Buffer ..................................................................216
12 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
3.1.4.2 Logging On .........................................................................................217
3.1.5 Message Processing Events and Sequencing Rules .........................................217
3.1.5.1 Extra ROP Responses ...........................................................................217
3.1.5.1.1 Processing the RopBackoff ROP Response ..........................................217
3.1.5.1.2 Processing the RopBufferTooSmall Response Buffer ............................217
3.1.5.1.3 Processing the RopNotify and RopPending Responses ..........................218
3.1.5.2 Subsequent RopProgress ROP Requests ..................................................218
3.1.5.3 Server Object Dependencies ..................................................................218
3.1.5.4 Code Page for Strings ...........................................................................219
3.1.6 Timer Events .............................................................................................219
3.1.7 Other Local Events .....................................................................................219
3.1.7.1 Shutting Down .....................................................................................219
3.2 Server Details .................................................................................................219
3.2.1 Abstract Data Model ...................................................................................219
3.2.2 Timers .....................................................................................................220
3.2.3 Initialization ..............................................................................................220
3.2.4 Higher-Layer Triggered Events ....................................................................220
3.2.4.1 Sending Notifications to the Client ..........................................................220
3.2.4.2 Sending the RopBackoff ROP Response ...................................................220
3.2.4.3 Responding to Insufficient Output Buffer Space .......................................220
3.2.5 Message Processing Events and Sequencing Rules .........................................221
3.2.5.1 Processing a ROP Input Buffer ...............................................................221
3.2.5.2 Creating a ROP Output Buffer ................................................................221
3.2.5.3 Processing the RopRelease ROP Request .................................................221
3.2.5.4 Error Codes Returned When an Object Is Invalid ......................................222
3.2.6 Timer Events .............................................................................................222
3.2.7 Other Local Events .....................................................................................222
3.2.7.1 Disconnecting ......................................................................................222
4 Protocol Examples ............................................................................................... 223
4.1 Empty ROP Buffer ...........................................................................................223
4.2 Single ROP Request .........................................................................................223
4.3 Multiple ROP Request.......................................................................................223
4.4 RopRelease ROP Request .................................................................................224
4.5 RopBufferTooSmall ROP Response .....................................................................225
4.6 Logon RopBackoff ROP Response ......................................................................225
4.7 RopBackoff ROP Response ................................................................................226
5 Security ............................................................................................................... 228
5.1 Security Considerations for Implementers ..........................................................228
5.2 Index of Security Parameters ...........................................................................228
6 Appendix A: Product Behavior ............................................................................. 229
7 Change Tracking .................................................................................................. 232
8 Index ................................................................................................................... 233
13 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 Introduction
The Remote Operations (ROP) List and Encoding Protocol provides the remote operations (ROPs)
used to access and modify mailbox information on the server.
Sections 1.5, 1.8, 1.9, 2, and 3 of this specification are normative. All other sections and examples in
this specification are informative.
1.1 Glossary
active replica: A name given to a server that hosts content and is expected to serve that content
to clients.
address type: An identifier for the type of email address, such as SMTP and EX.
ASCII: The American Standard Code for Information Interchange (ASCII) is an 8-bit character-
encoding scheme based on the English alphabet. ASCII codes represent text in computers,
communications equipment, and other devices that work with text. ASCII refers to a single 8-bit
ASCII character or an array of 8-bit ASCII characters with the high bit of each character set to
zero.
attachments table: A Table object whose rows represent the Attachment objects that are
attached to a Message object.
bookmark: A data structure that the server uses to point to a position in the Table object. There
are three pre-defined bookmarks (beginning, end, and current). A custom bookmark is a server-
specific data structure that can be stored by the client for easily navigating a Table object.
code page: An ordered set of characters of a specific script in which a numerical index (code-point
value) is associated with each character. Code pages are a means of providing support for
character sets and keyboard layouts used in different countries. Devices such as the display and
keyboard can be configured to use a specific code page and to switch from one code page (such
as the United States) to another (such as Portugal) at the user's request.
contents table: A Table object whose rows represent the Message objects that are contained in
a Folder object.
Deferred Action Message (DAM): A hidden message indicating to a client that it needs to
execute one or more rules on another user-visible message in the store.
distinguished name (DN): A name that uniquely identifies an object by using the relative
distinguished name (RDN) for the object, and the names of container objects and domains that
contain the object. The distinguished name (DN) identifies the object and its location in a tree.
Embedded Message object: A Message object that is stored as an Attachment object within
another Message object.
FastTransfer download context: A Server object that represents a context for a FastTransfer
download.
FastTransfer upload context: A Server object that represents a context for a FastTransfer
upload.
14 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
folder associated information (FAI): A collection of Message objects that are stored in a
Folder object and are typically hidden from view by email applications. An FAI Message object is
used to store a variety of settings and auxiliary data, including forms, views, calendar options,
favorites, and category lists.
Folder object: A messaging construct that is typically used to organize data into a hierarchy of
objects containing Message objects and folder associated information (FAI) Message
objects.
Gateway Address Routing Table (GWART): A list of values that specifies the address types
that are supported by transport gateways.
globally unique identifier (GUID): A term used interchangeably with universally unique
identifier (UUID) in Microsoft protocol technical documents (TDs). Interchanging the usage of
these terms does not imply or require a specific algorithm or mechanism to generate the value.
Specifically, the use of this term does not imply or require that the algorithms described in
[RFC4122] or [C706] must be used for generating the GUID. See also universally unique
identifier (UUID).
handle: Any token that can be used to identify and access an object such as a device, file, or a
window.
hard delete: A process that removes an item permanently from the system. If an item is hard
deleted, a server does not retain a back-up copy of the item and a client cannot access or
restore the item. See also soft delete.
hierarchy table: A Table object whose rows represent the Folder objects that are contained in
another Folder object.
little-endian: Multiple-byte values that are byte-ordered with the least significant byte stored in
the memory location with the lowest address.
local replica: A copy of the data in a mailbox that exists on the client.
Logon object: A Server object that provides access to a private mailbox or a public folder. A
client obtains a Logon object by issuing a RopLogon remote operation (ROP) to a server.
lowest-cost server: A server whose communication cost to access is the lowest in a list of
servers.
mailbox: A message store that contains email, calendar items, and other Message objects for a
single recipient.
message class: A property that loosely defines the type of a message, contact, or other Personal
Information Manager (PIM) object in a mailbox.
Message object: A set of properties that represents an email message, appointment, contact, or
other type of personal-information-management object. In addition to its own properties, a
Message object contains recipient properties that represent the addressees to which it is
addressed, and an attachments table that represents any files and other Message objects that
are attached to it.
message store: A unit of containment for a single hierarchy of Folder objects, such as a mailbox
or public folders.
15 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
messaging object: An object that exists in a mailbox. It can be only a Folder object or a
Message object.
named property: A property that is identified by both a GUID and either a string name or a 32-bit
identifier.
non-read receipt: A message that is generated when an email message is deleted at the
expiration of a time limit or due to other client-specific criteria.
permissions table: A Table object whose rows represent entries in a permissions list for a Folder
object.
property ID: A 16-bit numeric identifier of a specific attribute. A property ID does not include any
property type information.
property name: A string that, in combination with a property set, identifies a named property.
property tag: A 32-bit value that contains a property type and a property ID. The low-order 16
bits represent the property type. The high-order 16 bits represent the property ID.
public folder: A Folder object that is stored in a location that is publicly available.
Receive folder: A Folder object that is configured to be the destination for email messages that
are delivered.
(2) An entity that is in an address list, can receive email messages, and contains a set of
attributes. Each attribute has a set of associated values.
remote operation (ROP): An operation that is invoked against a server. Each ROP represents an
action, such as delete, send, or query. A ROP is contained in a ROP buffer for transmission
over the wire.
remote procedure call (RPC): A communication protocol used primarily between client and
server. The term has three definitions that are often used interchangeably: a runtime
environment providing for communication facilities between computers (the RPC runtime); a set
of request-and-response message exchanges between computers (the RPC exchange); and the
single message from an RPC exchange (the RPC message). For more information, see [C706].
(2) A copy of the data that is in a user's mailbox at a specific point in time.
replica GUID (REPLGUID): A value that represents a namespace for identifiers. If a REPLGUID is
combined with a GLOBSET, the result is a set of global identifiers. A REPLGUID value has an
associated replica ID (REPLID) that is used in its place on disk and on the wire.
replica ID (REPLID): A value that is mapped to a replica GUID (REPLGUID) that identifies a
namespace for IDs within a given logon. REPLIDs are used on disk and on the wire for
compactness, and are replaced with the corresponding REPLGUID for external consumption.
restriction: A filter used to map some domain into a subset of itself, by passing only those items
from the domain that match the filter. Restrictions can be used to filter existing Table objects or
to define new ones, such as search folder or rule criteria.
ROP buffer: A structure containing an array of bytes that encode a remote operation (ROP).
The first byte in the buffer identifies the ROP. This byte is followed by ROP-specific fields.
Multiple ROP buffers can be packed into a single remote procedure call (RPC) request or
response.
16 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
ROP request: See ROP request buffer.
ROP request buffer: A ROP buffer that a client sends to a server to be processed.
ROP response buffer: A ROP buffer that a server sends to a client to be processed.
rule: A condition or action, or a set of conditions or actions, that performs tasks automatically
based on events and values.
rules table: A Table object whose rows represent the rules that are contained in a Folder object.
search criteria: A criteria used to determine which messages are included in a folder with specific
characteristics. It is composed of a restriction, which is the filter to be applied, and a search
scope, which are the folders that contain the content to search.
search folder: A Folder object that provides a means of querying for items that match certain
criteria. The search folder includes the search folder definition message and the search folder
container.
Server object: An object on a server that is used as input or created as output for remote
operations (ROPs).
Server object handle table: An array of 32-bit handles that are used to identify input and output
Server objects for ROP requests and ROP responses.
special folder: One of a default set of Folder objects that can be used by an implementation to
store and retrieve user data objects.
Stream object: A Server object that is used to read and write large string and binary properties.
Unicode: A character encoding standard developed by the Unicode Consortium that represents
almost all of the written languages of the world. The Unicode standard [UNICODE5.0.0/2007]
provides three forms (UTF-8, UTF-16, and UTF-32) and seven schemes (UTF-8, UTF-16, UTF-16
BE, UTF-16 LE, UTF-32, UTF-32 LE, and UTF-32 BE).
MAY, SHOULD, MUST, SHOULD NOT, MUST NOT: These terms (in all caps) are used as defined
in [RFC2119]. All statements of optional behavior use either MAY, SHOULD, or SHOULD NOT.
1.2 References
Links to a document in the Microsoft Open Specifications library point to the correct section in the
most recently published version of the referenced document. However, because individual documents
in the library are not updated at the same time, the section numbers in the documents may not
match. You can confirm the correct section numbering by checking the Errata.
We conduct frequent surveys of the normative references to assure their continued availability. If you
have any issue with finding a normative reference, please contact dochelp@microsoft.com. We will
assist you in finding the relevant information.
17 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
[MS-OXCFXICS] Microsoft Corporation, "Bulk Data Transfer Protocol".
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC
2119, March 1997, http://www.rfc-editor.org/rfc/rfc2119.txt
[MS-XWDVSEC] Microsoft Corporation, "Web Distributed Authoring and Versioning (WebDAV) Protocol
Security Descriptor Extensions".
1.3 Overview
A ROP input buffer is used by the client to send requests to the server. A ROP output buffer is used by
the server to send responses back to the client. These requests specify operations, such as the
following, that access and modify mailbox data on a server:
A client packages one or more ROP requests into a ROP input buffer and either makes a method call
on the EMSMDB interface, as described in [MS-OXCRPC] section 3.2, or uses a request type, as
described in [MS-OXCMAPIHTTP] section 3.1, passing the ROP input buffer as part of the payload. The
18 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
server then parses the ROP requests from the ROP input buffer. Each request is processed and a ROP
response is added to the ROP output buffer. Once the server has finished processing the ROP input
buffer, the method call returns the responses to the client, as described in [MS-OXCRPC] section 3.1
or as described in [MS-OXCMAPIHTTP] section 3.2.
A Server object refers to an object created during the processing of specific ROPs. Once created, a
Server object can then be used as a parameter for other ROPs until it is released. A Server object is
typically a view of data on the server, such as a Folder object or a Message object, but it could also
be an object used to control synchronization or change notifications.
A Server object is identified by a Server object handle, a 32-bit handle value. This handle is
assigned by the server when the Server object is created. A client uses a Server object handle to
specify a Server object to be used as input for a ROP request.
A ROP input buffer contains a list of ROP requests and a Server object handle table. A ROP output
buffer contains a list of ROP responses and a Server object handle table. Each ROP request contains
input values to use for an operation. Each ROP response contains output produced during the
processing of previous requests. The Server object handle table contains Server object handles that
are used as input or output for ROPs.
With few exceptions, a ROP request or ROP response does not directly specify a Server object handle
but instead contains an index into the Server object handle table. When the index is used for an input
parameter, it specifies the location of the Server object handle identifying the input Server object.
When the index is used for an output parameter, it specifies the entry in the Server object handle
table where the handle for the created Server object will be stored if the operation is successful. If the
operation is unsuccessful, the content of the entry in the Server object handle table is undefined.
The usage of an index allows a client to create a ROP input buffer consisting of ROP requests that
reference as an input parameter a Server object created earlier during the server's processing of a
previous ROP input buffer. In this way, fewer round-trip calls between the client and server are
necessary.
This protocol depends on the Wire Format Protocol, as described in [MS-OXCRPC], or on the MAPI
extensions to HTTP, as described in [MS-OXCMAPIHTTP].
This protocol provides details for implementing a ROP parsing layer. It is expected that this protocol is
to be implemented in its entirety in order to facilitate working with any of the other protocols built on
top of this protocol. Complete implementation is necessary to be able to parse ROPs in the ROP
input/output buffer, because there are no markers between ROP buffers in the remote procedure
call (RPC) buffer.
Several protocols can be considered alternatives to the ROP List and Encoding Protocol. These
alternatives include the Internet Message Access Protocol Version 4 (IMAP4), as described in [MS-
OXIMAP4], and Web Distributed Authoring and Versioning (WebDAV), as described in [MS-XWDVSEC].
For conceptual background information and overviews of the relationships and interactions between
this and other protocols, see [MS-OXPROTO].
19 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1.5 Prerequisites/Preconditions
This protocol assumes that a connection was already made using the EMSMDB RPC interface, as
specified in [MS-OXCRPC], or the EMSMDB HTTP interface, as specified in [MS-OXCMAPIHTTP]. The
connection process authenticates and exchanges version information between the server and client.
Successful communication between the client and server requires that the client is already configured
with information about the mailbox and server. Several ROPs make use of a distinguished name
(DN) as an input field to specify a mailbox or a server.
This protocol is used to view and modify mailbox and public folder data. It provides broad low-level
access to content on the server.
None.
None.
None.
20 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2 Messages
Unless otherwise specified, buffers and fields in this section are depicted in little-endian byte order.
2.1 Transport
The ROP input/output buffer, as specified in section 2.2.1, is sent as part of the payload of either the
EcDoRpcExt2 RPC method, as specified in [MS-OXCRPC] section 3.1.4.2, or the Execute request
type,<1> as specified in [MS-OXCMAPIHTTP] section 2.2.4.2.
The ROP input buffer, which is sent by the client, includes an array of ROP request buffers to be
processed by the server. The ROP output buffer, which is sent by the server, includes an array of ROP
response buffers. The ROP input and output buffers are transmitted between the client and the
server as part of the payload of either the EcDoRpcExt2 method, as specified in [MS-OXCRPC]
section 3.1.4.2, or the Execute request type,<2> as specified in [MS-OXCMAPIHTTP] section 2.2.4.2.
The ROP input buffer and ROP output buffer have the following structure.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
ServerObjectHandleTable (variable)
...
RopSize (2 bytes): An unsigned integer that specifies the size of both this field and the RopsList
field.
RopsList (variable): An array of ROP buffers. For a ROP input buffer, this field contains an array of
ROP request buffers. For a ROP output buffer, this field contains an array of ROP response buffers.
The format of each ROP buffer is specified in subsequent sections. The size of this field is 2 bytes
less than the value specified in the RopSize field.
Each ROP is identified by a one-byte value, which is contained in the RopId field of ROP request
buffers and ROP response buffers. The ROPs that a client is allowed to use are listed in the
following table. A RopId value that is specified as "Reserved" is not used in the communication
between the client and server. Therefore, the client MUST NOT use the reserved RopId values.
21 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
When the server encounters a RopId value that is associated with a reserved ROP, it SHOULD<3>
return an error for the RPC, as specified in [MS-OXCRPC] section 3.1.4.2, or for the Execute request
type<4> response, as specified in [MS-OXCMAPIHTTP] section 2.2.4.2.2.
0x00 Reserved
22 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId value ROP name Section
0x28 Reserved
0x3C Reserved
0x3D Reserved
23 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId value ROP name Section
24 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId value ROP name Section
0x62 Reserved
0x65 Reserved
0x6A Reserved
0x71 Reserved
0x7C Reserved
0x7D Reserved
25 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId value ROP name Section
0x83 Reserved
0x84 Reserved
0x85 Reserved
0x87 Reserved
0x88 Reserved
0x8A Reserved
0x8B Reserved
0x8C Reserved
0x8D Reserved
0x8E Reserved
0x8F Reserved
0x94 Reserved
0x95 Reserved
0x96 Reserved
0x97 Reserved
0x98 Reserved
0x99 Reserved
0x9A Reserved
0x9B Reserved
0x9C Reserved
0x9D Reserved
26 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId value ROP name Section
0x9E Reserved
0x9F Reserved
0xA0 Reserved
0xA1 Reserved
0xA2 Reserved
0xA3 Reserved
0xA4 Reserved
0xA5 Reserved
0xA6 Reserved
0xA7 Reserved
0xA8 Reserved
0xA9 Reserved
0xAA Reserved
0xAB Reserved
0xAC Reserved
0xAD Reserved
0xAE Reserved
0xAF Reserved
0xB0 Reserved
0xB1 Reserved
0xB2 Reserved
0xB3 Reserved
0xB4 Reserved
0xB5 Reserved
0xB6 Reserved
0xB7 Reserved
0xB8 Reserved
0xB9 Reserved
0xBA Reserved
0xBB Reserved
0xBC Reserved
0xBD Reserved
27 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId value ROP name Section
0xBE Reserved
0xBF Reserved
0xC0 Reserved
0xC1 Reserved
0xC2 Reserved
0xC3 Reserved
0xC4 Reserved
0xC5 Reserved
0xC6 Reserved
0xC7 Reserved
0xC8 Reserved
0xC9 Reserved
0xCA Reserved
0xCB Reserved
0xCC Reserved
0xCD Reserved
0xCE Reserved
0xCF Reserved
0xD0 Reserved
0xD1 Reserved
0xD2 Reserved
0xD3 Reserved
0xD4 Reserved
0xD5 Reserved
0xD6 Reserved
0xD7 Reserved
0xD8 Reserved
0xD9 Reserved
0xDA Reserved
0xDB Reserved
0xDC Reserved
0xDD Reserved
28 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId value ROP name Section
0xDE Reserved
0xDF Reserved
0xE0 Reserved
0xE1 Reserved
0xE2 Reserved
0xE3 Reserved
0xE4 Reserved
0xE5 Reserved
0xE6 Reserved
0xE7 Reserved
0xE8 Reserved
0xE9 Reserved
0xEA Reserved
0xEB Reserved
0xEC Reserved
0xED Reserved
0xEE Reserved
0xEF Reserved
0xF0 Reserved
0xF1 Reserved
0xF2 Reserved
0xF3 Reserved
0xF4 Reserved
0xF5 Reserved
0xF6 Reserved
0xF7 Reserved
0xF8 Reserved
0xFA Reserved
0xFB Reserved
0xFC Reserved
0xFD Reserved
29 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId value ROP name Section
The RopLogon ROP logs on to a mailbox or a public folder. For more details about this operation,
see [MS-OXCSTOR] section 2.2.1.1.
The following descriptions define valid fields for the RopLogon ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
OpenFlags
StoreState
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0xFE.
LogonId (1 byte): An unsigned integer that specifies the ID that the client requests to have
associated with the created logon. Any value is allowed, and the client does not have to use values
in a certain numeric order. If the client specifies an active LogonID, the current logon is released
and replaced with the new one.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored. For more
information about Server objects, see section 1.3.1.
LogonFlags (1 byte): A flags structure that contains flags that control the behavior of the logon.
The possible values are specified in [MS-OXCSTOR] section 2.2.1.1.1.
OpenFlags (4 bytes): A flags structure that contains more flags that control the behavior of the
logon. The possible values are specified in [MS-OXCSTOR] section 2.2.1.1.1.
StoreState (4 bytes): A flags structure. This field is not used and is ignored by the server. This field
MUST be set to 0x00000000.
EssdnSize (2 bytes): An unsigned integer that specifies the size of the Essdn field.
30 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
Essdn (variable): A null-terminated ASCII string that specifies which mailbox to log on to. The
number of characters (including the terminating null character) contained in this field is specified
by the EssdnSize field.
The following descriptions define valid fields for the RopLogon ROP success response buffer for
private mailboxes.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
...
...
...
...
...
... ResponseFlags
MailboxGuid
...
...
...
ReplId ReplGuid
...
...
...
31 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
... LogonTime
...
... GwartTime
...
... StoreState
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0xFE.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored. For more
information about Server objects, see section 1.3.1.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
LogonFlags (1 byte): A flags structure that contains flags that specify the type of logon. The
possible values are specified in [MS-OXCSTOR] section 2.2.1.1.3.
FolderIds (104 bytes): 13 64-bit identifiers that specify a set of special folders for a mailbox.
ResponseFlags (1 byte): A flags structure that contains flags that provide details about the state of
the mailbox. The possible values are specified in [MS-OXCSTOR] section 2.2.1.1.3.
MailboxGuid (16 bytes): A GUID that identifies the mailbox on which the logon was performed.
ReplGuid (16 bytes): A GUID that specifies the replica GUID that is associated with the replica ID,
which is specified in the ReplId field.
LogonTime (8 bytes): A LogonTime structure that specifies the time at which the logon occurred.
The format of this structure is specified in section 2.2.3.1.2.1.
GwartTime (8 bytes): An unsigned integer that contains a numeric value that tracks the currency of
the Gateway Address Routing Table (GWART). The server generates a new numeric value
with each change of the GWART. The client can use the value of this field in a comparison to
detect a change but does not interpret the value of this field.
StoreState (4 bytes): A flags structure. This field MUST be set to 0x00000000 by the server and
MUST be ignored by the client.
The following descriptions define valid fields for the LogonTime structure.
32 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
DayOfWeek (1 byte): An enumeration that specifies the current day of the week (Sunday = 0,
Monday = 1, and so on).
Day (1 byte): An unsigned integer that specifies the current day of the month.
Month (1 byte): An unsigned integer that specifies the current month (January = 1, February = 2,
and so on).
The following descriptions define valid fields for the RopLogon ROP success response buffer for
public folders.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
...
...
...
...
...
... ReplId
33 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
... ReplGuid
...
...
...
... PerUserGuid
...
...
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0xFE.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored. For more
information about Server objects, see section 1.3.1.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
LogonFlags (1 byte): A flags structure that contains flags that specify the type of logon. The
possible values are specified in [MS-OXCSTOR] section 2.2.1.1.4.
FolderIds (104 bytes): 13 64-bit identifiers that specify a set of special folders for a mailbox.
ReplGuid (16 bytes): A GUID that specifies the replica GUID associated with the replica ID that is
specified in the ReplId field.
PerUserGuid (16 bytes): This field is not used and is ignored by the client. The server SHOULD<5>
set this field to all zeroes.
The following descriptions define valid fields for the RopLogon ROP redirect response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
34 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
ServerName (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0xFE.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored. For more
information about Server objects, see section 1.3.1.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000478.
LogonFlags (1 byte): A flags structure that contains flags that specify the type of logon. The
possible values are specified in [MS-OXCSTOR] section 2.2.1.1.2.
ServerNameSize (1 byte): An unsigned integer that specifies the length of the ServerName field.
ServerName (variable): A null-terminated ASCII string that specifies a different server for the
client to connect to. The number of characters (including the terminating null character) contained
in this field is specified by the ServerNameSize field.
The following descriptions define valid fields for the RopLogon ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0xFE.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored. For more
information about Server objects, see section 1.3.1.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000 or 0x00000478.
The RopGetReceiveFolder ROP gets the Receive folder for incoming messages of a particular
message class. For more details about this operation, see [MS-OXCSTOR] section 2.2.1.2.
The following descriptions define valid fields for the RopGetReceiveFolder ROP request buffer.
35 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x27.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
MessageClass (variable): A null-terminated ASCII string that specifies the message class to find
the Receive folder for.
The following descriptions define valid fields for the RopGetReceiveFolder ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... FolderId
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x27.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
ExplicitMessageClass (variable): A null-terminated ASCII string that specifies the message class
that is actually configured for delivery to the folder.
The following descriptions define valid fields for the RopGetReceiveFolder ROP failure response
buffer.
36 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x27.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopSetReceiveFolder ROP sets the Receive folder for incoming messages of a particular
message class. For more details about this operation, see [MS-OXCSTOR] section 2.2.1.3.
The following descriptions define valid fields for the RopSetReceiveFolder ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x26.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
MessageClass (variable): A null-terminated ASCII string that specifies which message class to
set the Receive folder for.
The following descriptions define valid fields for the RopSetReceiveFolder ROP response buffer.
37 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x26.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopGetReceiveFolderTable ROP gets the table of all folders that were established as Receive
folders. For more details about this operation, see [MS-OXCSTOR] section 2.2.1.4.
The following descriptions define valid fields for the RopGetReceiveFolderTable ROP request
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x68.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopGetReceiveFolderTable ROP success
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... RowCount
...
38 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x68.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
RowCount (4 bytes): An unsigned integer that specifies the number of row structures contained in
the Rows field.
Rows (variable): An array of row structures. This field contains the rows of the Receive folder
table. Each row is returned in either a StandardPropertyRow structure, as specified in[MS-
OXCDATA] section 2.8.1.1, or a FlaggedPropertyRow structure, as specified in [MS-OXCDATA]
section 2.8.1.2. The number of row structures contained in this field is specified by the RowCount
field. The ValueArray field of either the StandardPropertyRow structure or the
FlaggedPropertyRow structure MUST include only the PidTagFolderId ([MS-OXCFOLD] section
2.2.2.2.1.6), PidTagMessageClass ([MS-OXCMSG] section 2.2.1.3), and
PidTagLastModificationTime ([MS-OXCMSG] section 2.2.2.2) properties, in that order, and no
other properties.
The following descriptions define valid fields for the RopGetReceiveFolderTable ROP failure
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x68.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopGetStoreState ROP gets the current state of the mailbox for the logged on user. For more
details about this operation, see [MS-OXCSTOR] section 2.2.1.5.
The following descriptions define valid fields for the RopGetStoreStage ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
39 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x7B.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopGetStoreState ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... StoreState
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x7B.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
StoreState (4 bytes): A flags structure that contains flags that indicate the state of the mailbox
for the logged on user. The possible values are specified in [MS-OXCSTOR] section 2.2.1.5.2.
The following descriptions define valid fields for the RopGetStoreState ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x7B.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
40 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.3.6 RopGetOwningServers ROP
The RopGetOwningServers ROP gets the list of servers that host replicas (1) of a given public
folder. For more details about this operation, see [MS-OXCSTOR] section 2.2.1.6.
The following descriptions define valid fields for the RopGetOwningServers ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x42.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
FolderId (8 bytes): An identifier that specifies the folder for which to get owning servers.
The following descriptions define valid fields for the RopGetOwningServers ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... OwningServersCount
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x42.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
41 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
OwningServersCount (2 bytes): An unsigned integer that specifies the number of strings in the
OwningServers field.
CheapServersCount (2 bytes): An unsigned integer that specifies the number of strings in the
OwningServers field that refer to lowest-cost servers.
OwningServers (variable): A list of null-terminated ASCII strings that specify which servers have
replicas (1) of this folder. The number of strings contained in this field is specified by the
OwningServersCount field.
The following descriptions define valid fields for the RopGetOwningServers ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x42.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopPublicFolderIsGhosted ROP determines whether a public folder is ghosted. For more
details about this operation, see [MS-OXCSTOR] section 2.2.1.7.
The following descriptions define valid fields for the RopPublicFolderIsGhosted ROP request
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x45.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
42 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopPublicFolderIsGhosted ROP success
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Servers (optional)
... CheapServersCount (optional)
(variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x45.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
IsGhosted (1 byte): A Boolean that specifies whether the folder is a ghosted folder.
ServersCount (2 bytes): An unsigned integer that is present if IsGhosted is nonzero and is not
present if IsGhosted is zero. This value specifies the number of strings in the Servers field.
CheapServersCount (2 bytes): An unsigned integer that is present if the value of the IsGhosted
field is nonzero and is not present if the value of the IsGhosted field is zero. This value specifies
the number of strings in the Servers field that refer to a lowest-cost server.
Servers (optional) (variable): A list of null-terminated ASCII strings that specify which servers
have replicas (1) of this folder. This field is present if IsGhosted is nonzero and is not present if
IsGhosted is zero.
The following descriptions define valid fields for the RopPublicFolderIsGhosted ROP failure
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
43 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x45.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value of the
InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The following descriptions define valid fields for the RopLongTermIdFromId ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x43.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
ObjectId (8 bytes): An identifier that specifies the short-term ID to be converted to a long-term ID.
The following descriptions define valid fields for the RopLongTermIdFromId ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... LongTermId
...
44 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
...
...
...
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x43.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value of the
InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
LongTermId (24 bytes): A LongTermID structure that specifies the long-term ID that was
converted from the short-term ID, which is specified in the ObjectId field of the request. The
format of the LongTermID structure is specified in [MS-OXCDATA] section 2.2.1.3.1.
The following descriptions define valid fields for the RopLongTermIdFromId ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x43.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopIDFromLongTermId ROP converts a long-term ID into a short-term ID. For more details
about this operation, see [MS-OXCSTOR] section 2.2.1.9.
The following descriptions define valid fields for the RopIdFromLongTermId ROP request buffer.
45 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
...
...
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x44.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
LongTermId (24 bytes): A LongTermID structure that specifies the long-term ID to be converted
to a short-term ID. The format of the LongTermID structure is specified in [MS-OXCDATA]
section 2.2.1.3.1.
The following descriptions define valid fields for the RopIdFromLongTermId ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... ObjectId
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x44.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
46 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
ObjectId (8 bytes): An identifier that specifies the short-term ID that was converted from the long-
term ID, which is specified in the LongTermId field of the request.
The following descriptions define valid fields for the RopIdFromLongTermId ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x44.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopGetPerUserLongTermIds ROP gets the long-term ID of a public folder that is identified
by the per-user GUID of the logged on user. For more details about this operation, see [MS-
OXCSTOR] section 2.2.1.10.
The following descriptions define valid fields for the RopGetPerUserLongTermIds ROP request
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x60.
47 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
DatabaseGuid (16 bytes): A GUID that specifies which database the client is querying data for.
The following descriptions define valid fields for the RopGetPerUserLongTermIds ROP success
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... LongTermIdCount
LongTermIds (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x60.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
LongTermIdCount (2 bytes): An unsigned integer that specifies the number of structures in the
LongTermIds field.
LongTermIds (variable): An array of LongTermID structures that specifies which folders the user
has per-user information about. The format of these structures is specified in [MS-OXCDATA]
section 2.2.1.3.1.
The following descriptions define valid fields for the RopGetPerUserLongTermIds ROP failure
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x60.
48 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopGetPerUserGuid ROP gets the GUID of a public folder's per-user information. For more
details about this operation, see [MS-OXCSTOR] section 2.2.1.11.
The following descriptions define valid fields for the RopGetPerUserGuid ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
...
...
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x61.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
LongTermId (24 bytes): A LongTermID structure that specifies the public folder. The format of
the LongTermID structure is specified in [MS-OXCDATA] section 2.2.1.3.1.
The following descriptions define valid fields for the RopGetPerUserGuid ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
49 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
... DatabaseGuid
...
...
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x61.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
DatabaseGuid (16 bytes): A GUID that specifies the database for which per-user information was
obtained.
The following descriptions define valid fields for the RopGetPerUserGuid ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x61.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopReadPerUserInformation ROP gets per-user information for a public folder. For more
details about this operation, see [MS-OXCSTOR] section 2.2.1.12.
The following descriptions define valid fields for the RopReadPerUserInformation ROP request
buffer.
50 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
...
...
...
... Reserved
DataOffset
MaxDataSize
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x63.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
FolderId (24 bytes): A LongTermID structure that specifies the folder for which to get per-user
information. The format of the LongTermID structure is specified in [MS-OXCDATA] section
2.2.1.3.1.
Reserved (1 byte): Reserved. This field is not used and is ignored by the server. This field MUST be
set to 0x00.
DataOffset (4 bytes): An unsigned integer that specifies the location at which to start reading
within the per-user information stream.
MaxDataSize (2 bytes): An unsigned integer that specifies the maximum number of bytes of per-
user information to be retrieved.
The following descriptions define valid fields for the RopReadPerUserInformation ROP success
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
51 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
... HasFinished DataSize
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x63.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
HasFinished (1 byte): A Boolean that specifies whether this operation reached the end of the per-
user information stream.
DataSize (2 bytes): An unsigned integer that specifies the size of the Data field.
Data (variable): An array of bytes. This field contains the per-user data that is returned.
The following descriptions define valid fields for the RopReadPerUserInformation ROP failure
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x63.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopWritePerUserInformation ROP sets per-user information for a public folder. For details
about this operation, see [MS-OXCSTOR] section 2.2.1.13.
The following descriptions define valid fields for the RopWritePerUserInformation ROP request
buffer.
52 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
...
...
...
... HasFinished
DataOffset
...
ReplGuid (optional)
...
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x64.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
FolderId (24 bytes): A LongTermID structure that specifies the folder to set per-user information
for. The format of the LongTermID structure is specified in [MS-OXCDATA] section 2.2.1.3.1.
HasFinished (1 byte): A Boolean that specifies whether this operation specifies the end of the per-
user information stream.
DataOffset (4 bytes): An unsigned integer that specifies the location in the per-user information
stream to start writing.
DataSize (2 bytes): An unsigned integer that specifies the size of the Data field in bytes.
53 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
Data (variable): An array of bytes that is the per-user data to write. The size of this field, in bytes,
is specified by the DataSize field.
ReplGuid (16 bytes): A GUID that is present when the DataOffset field is 0x00000000 and the
logon associated with the LogonId field was created with the Private flag set in the RopLogon
ROP request buffer, as specified in [MS-OXCSTOR] section 2.2.1.1.1, and is not present otherwise.
The following descriptions define valid fields for the RopWritePerUserInformation ROP response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x64.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopOpenFolder ROP opens an existing folder in a mailbox. For more details about this
operation, see [MS-OXCFOLD] section 2.2.1.1.
The following descriptions define valid fields for the RopOpenFolder ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
FolderId
...
OpenModeFlags
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x02.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
54 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
OpenModeFlags (1 byte): An 8-bit flags structure that contains flags that are used to control how
the folder is opened. The possible flags values are specified in [MS-OXCFOLD] section 2.2.1.1.1.
The following descriptions define valid fields for the RopOpenFolder ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Servers (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x02.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
HasRules (1 byte): A Boolean that indicates whether the folder has rules associated with it.
IsGhosted (1 byte): A Boolean that specifies whether the folder is a ghosted folder.
ServerCount (2 bytes): An unsigned integer that is present if IsGhosted is nonzero and is not
present if IsGhosted is zero. This value specifies the number of strings in the Servers field.
Servers (variable): A list of null-terminated ASCII strings that specify which servers have
replicas (2) of this folder. This field is present if IsGhosted is nonzero and is not present if
IsGhosted is zero. The number of strings contained in this field is specified by the ServerCount
field.
The following descriptions define valid fields for the RopOpenFolder ROP failure response buffer.
55 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x02.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopCreateFolder ROP creates a new subfolder. For more details about this operation, see [MS-
OXCFOLD] section 2.2.1.2.
The following descriptions define valid fields for the RopCreateFolder ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
DisplayName (variable)
...
Comment (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x1C.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
FolderType (1 byte): An enumeration that specifies what type of folder to create. The possible
values for this enumeration are specified in [MS-OXCFOLD] section 2.2.1.2.1.
56 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
UseUnicodeStrings (1 byte): A Boolean that specifies whether the DisplayName field and the
Comment field contain Unicode characters or multibyte characters.
OpenExisting (1 byte): A Boolean that specifies whether this operation opens a Folder object or
fails when the Folder object already exists.
DisplayName (variable): A null-terminated multibyte string that specifies the name of the created
folder. If the value of the UseUnicodeStrings field is nonzero, the string is composed of Unicode
characters. If the value of the UseUnicodeStrings field is zero, the string is composed of
multibyte characters.
Comment (variable): A null-terminated multibyte string that specifies the folder comment that is
associated with the created folder. If the value of the UseUnicodeStrings field is nonzero, the
string is composed of Unicode characters. If the value of the UseUnicodeStrings field is zero, the
string is composed of multibyte characters.
The following descriptions define valid fields for the RopCreateFolder ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... FolderId
...
CheapServerCount
IsGhosted (optional) ServerCount (optional)
(optional)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x1C.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
IsExistingFolder (1 byte): A Boolean that indicates whether an existing folder was opened or a new
folder was created.
HasRules (1 byte): A Boolean that indicates whether the folder has rules associated with it. This
field is present if the IsExistingFolder field is nonzero and is not present otherwise.
57 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
IsGhosted (1 byte): A Boolean that indicates whether the server is an active replica of this folder.
This field is present if the value of the IsExistingFolder field is nonzero and is not present
otherwise.
ServerCount (2 bytes): An unsigned integer that is present if the values of both the
IsExistingFolder and the IsGhosted fields are nonzero and is not present otherwise. This value
specifies the number of strings in the Servers field.
CheapServerCount (2 bytes): An unsigned integer that is present if the values of both the
IsExistingFolder and the IsGhosted fields are nonzero and is not present otherwise. This value
specifies the number of values in the Servers field that refer to lowest-cost servers.
Servers (variable): A list of null-terminated ASCII strings that is present if the values of both the
IsExistingFolder and the IsGhosted fields are nonzero and is not present otherwise. The
number of strings contained in this field is specified by the ServersCount field. These strings
specify which servers have replicas (2) of this folder.
The following descriptions define valid fields for the RopCreateFolder ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x1C.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopDeleteFolder ROP deletes a subfolder. For more details about this operation, see [MS-
OXCFOLD] section 2.2.1.3.
The following descriptions define valid fields for the RopDeleteFolder ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
FolderId
...
58 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x1D.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
DeleteFolderFlags (1 byte): A flags structure that contains flags that control how to delete the
folder. The possible flags values are specified in [MS-OXCFOLD] section 2.2.1.3.1.
The following descriptions define valid fields for the RopDeleteFolder ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PartialCompletion
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x1D.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
PartialCompletion (1 byte): A Boolean that specifies whether the operation was partially
completed.
The RopSetSearchCriteria ROP sets the search criteria for a search folder. For more details
about this operation, see [MS-OXCFOLD] section 2.2.1.4.
The following descriptions define valid fields for the RopSetSearchCriteria ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
59 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
...
SearchFlags
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x30.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
FolderIdCount (2 bytes): An unsigned integer that specifies the number of identifiers in the
FolderIds field.
FolderIds (variable): An array of 64-bit identifiers that specifies which folders are searched. The
number of identifiers contained in this field is specified by the FolderIdCount field.
SearchFlags (4 bytes): A flags structure that contains flags that control the search for a search
folder.
The following descriptions define valid fields for the RopSetSearchCriteria ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x30.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopGetSearchCriteria ROP gets the search criteria for a search folder. For more details about
this operation, see [MS-OXCFOLD] section 2.2.1.5.
The following descriptions define valid fields for the RopGetSearchCriteria ROP request buffer.
60 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
IncludeRestriction IncludeFolders
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x31.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
UseUnicode (1 byte): A Boolean that specifies whether the client requests the restriction data
(returned in the RestrictionData field of the response) to be specified with Unicode strings or
with ASCII strings.
IncludeRestriction (1 byte): A Boolean that specifies whether the server includes the restriction
information in the response.
IncludeFolders (1 byte): A Boolean that specifies whether the server includes the folders list in the
response.
The following descriptions define valid fields for the RopGetSearchCriteria ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... RestrictionDataSize
RestrictionData (variable)
...
...
SearchFlags
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x31.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
61 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
LogonId (1 byte): An unsigned integer that MUST be set to the value of the LogonId field in the
request.
FolderIdCount (2 bytes): An unsigned integer that specifies the number of identifiers in the
FolderIds field.
FolderIds (variable): An array of 64-bit identifiers that specifies which folders are searched. The
number of identifiers contained in this field is specified by the FolderIdCount field.
SearchFlags (4 bytes): A flags structure that contains flags that control the search for a search
folder. The possible values for this field are specified in [MS-OXCFOLD] section 2.2.1.5.2.
The following descriptions define valid fields for the RopGetSearchCriteria ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x31.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopMoveCopyMessages ROP either moves or copies messages from a source folder to a
destination folder. For more details about this operation, see [MS-OXCFOLD] section 2.2.1.6.
The following descriptions define valid fields for the RopMoveCopyMessages ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
62 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
MessageIdCount MessageIds (variable)
...
WantAsynchronous WantCopy
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x33.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
SourceHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the source Server object is stored. For more
information about Server objects, see section 1.3.1.
DestHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the destination Server object is stored.
MessageIdCount (2 bytes): An unsigned integer that specifies the size of the MessageIds field.
MessageIds (variable): An array of 64-bit identifiers that specifies which messages to move or
copy. The number of identifiers contained in this field is specified by the MessageIdCount field.
WantCopy (1 byte): A Boolean that specifies whether the operation is a copy or a move.
The following descriptions define valid fields for the RopMoveCopyMessages ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PartialCompletion
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x33.
SourceHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the SourceHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000503.
PartialCompletion (1 byte): A Boolean that indicates whether the operation was only partially
completed.
The following descriptions define valid fields for the RopMoveCopyMessages ROP null destination
failure response buffer.
63 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... DestHandleIndex
... PartialCompletion
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x33.
SourceHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the SourceHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000503.
DestHandleIndex (4 bytes): An unsigned integer index that MUST be set to the value specified in
the DestHandleIndex field in the request.
PartialCompletion (1 byte): A Boolean that indicates whether the operation was only partially
completed.
The RopMoveFolder ROP moves a folder. For more details about this operation, see [MS-OXCFOLD]
section 2.2.1.7.
The following descriptions define valid fields for the RopMoveFolder ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x35.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
SourceHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the source Server object is stored. For more
information about Server objects, see section 1.3.1.
64 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
DestHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the destination Server object is stored.
UseUnicode (1 byte): A Boolean that specifies whether the NewFolderName field contains
Unicode characters or multibyte characters.
NewFolderName (variable): A null-terminated multibyte string that specifies the name for the new
moved folder. If the value of the UseUnicode field is nonzero, the string is composed of Unicode
characters. Otherwise, the string is composed of multibyte characters.
The following descriptions define valid fields for the RopMoveFolder ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PartialCompletion
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x35.
SourceHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the SourceHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000503.
PartialCompletion (1 byte): A Boolean that indicates whether the operation was only partially
completed.
The following descriptions define valid fields for the RopMoveFolder ROP null destination failure
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... DestHandleIndex
... PartialCompletion
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x35.
65 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
SourceHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the SourceHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000503.
DestHandleIndex (4 bytes): An unsigned integer index that MUST be set to the value specified in
the DestHandleIndex field in the request.
PartialCompletion (1 byte): A Boolean that indicates whether the operation was only partially
completed.
The RopCopyFolder ROP copies a folder. For more details about this operation, see [MS-OXCFOLD]
section 2.2.1.8.
The following descriptions define valid fields for the RopCopyFolder ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
NewFolderName
...
(variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x36.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
SourceHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the source Server object is stored. For more
information about Server objects, see section 1.3.1.
DestHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the destination Server object is stored.
UseUnicode (1 byte): A Boolean that specifies whether the NewFolderName field contains
Unicode characters or multibyte characters.
66 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
NewFolderName (variable): A null-terminated multibyte string that specifies the name for the new
copied folder. If the value of the UseUnicode field is nonzero, the string is composed of Unicode
characters. Otherwise, the string is composed of multibyte characters.
The following descriptions define valid fields for the RopCopyFolder ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PartialCompletion
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x36.
SourceHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the SourceHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000503.
PartialCompletion (1 byte): A Boolean that indicates whether the operation was only partially
completed.
The following descriptions define valid fields for the RopCopyFolder ROP null destination failure
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... DestHandleIndex
... PartialCompletion
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x36.
SourceHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the SourceHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000503.
DestHandleIndex (4 bytes): An unsigned integer index that MUST be set to the value specified in
the DestHandleIndex field in the request.
PartialCompletion (1 byte): A Boolean that indicates whether the operation was only partially
completed.
67 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.4.9 RopEmptyFolder ROP
The RopEmptyFolder ROP deletes all messages and subfolders from a folder. For more details about
this operation, see [MS-OXCFOLD] section 2.2.1.9.
The following descriptions define valid fields for the RopEmptyFolder ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
WantDeleteAssociated
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x58.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
WantDeleteAssociated (1 byte): A Boolean that specifies whether the operation also deletes
folder associated information (FAI) messages.
The following descriptions define valid fields for the RopEmptyFolder ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PartialCompletion
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x58.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
PartialCompletion (1 byte): A Boolean that indicates whether the operation was only partially
completed.
68 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.4.10 RopHardDeleteMessagesAndSubfolders ROP
The following descriptions define valid fields for the RopHardDeleteMessagesAndSubfolders ROP
request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
WantDeleteAssociated
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x92.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
WantDeleteAssociated (1 byte): A Boolean that specifies whether to also delete FAI messages.
The following descriptions define valid fields for the RopHardDeleteMessagesAndSubfolders ROP
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PartialCompletion
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x92.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
PartialCompletion (1 byte): A Boolean that indicates whether the operation was only partially
completed.
69 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.4.11 RopDeleteMessages ROP
The RopDeleteMessages ROP deletes one or more messages in a folder. For more details about this
operation, see [MS-OXCFOLD] section 2.2.1.11.
The following descriptions define valid fields for the RopDeleteMessages ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x1E.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
NotifyNonRead (1 byte): A Boolean that specifies whether the server sends a non-read receipt to
the message sender when a message is deleted.
MessageIdCount (2 bytes): An unsigned integer that specifies the number of identifiers in the
MessageIds field.
MessageIds (variable): An array of 64-bit identifiers that specifies the messages to be deleted. The
number of identifiers contained in this field is specified by the MessageIdCount field.
The following descriptions define valid fields for the RopDeleteMessages ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PartialCompletion
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x1E.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
70 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
PartialCompletion (1 byte): A Boolean that specifies whether this operation partially completed.
The RopHardDeleteMessages ROP hard deletes messages in a folder. For more details about this
operation, see [MS-OXCFOLD] section 2.2.1.12.
The following descriptions define valid fields for the RopHardDeleteMessages ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x91.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
NotifyNonRead (1 byte): A Boolean that specifies whether the server sends a non-read receipt to
the message-sender when a message is deleted.
MessageIdCount (2 bytes): An unsigned integer that specifies the number of identifiers in the
MessageIds field.
MessageIds (variable): An array of 64-bit identifiers that specifies the messages to be hard
deleted. The number of identifiers contained in this field is specified by the MessageIdCount
field.
The following descriptions define valid fields for the RopHardDeleteMessages ROP response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PartialCompletion
71 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x91.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
PartialCompletion (1 byte): A Boolean that indicates whether the operation was only partially
completed.
The RopGetHierarchyTable ROP gets the subfolder hierarchy table for a folder. For more details
about this operation, see [MS-OXCFOLD] section 2.2.1.13.
The following descriptions define valid fields for the RopGetHierarchyTable ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
TableFlags
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x04.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
TableFlags (1 byte): A flags structure. The possible values are specified in [MS-OXCFOLD] section
2.2.1.13.1. These flags control the type of table.
The following descriptions define valid fields for the RopGetHierarchyTable ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... RowCount
...
72 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x04.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
RowCount (4 bytes): An unsigned integer that represents the number of rows in the hierarchy
table.
The following descriptions define valid fields for the RopGetHierarchyTable ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x04.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopGetContentsTable ROP gets the contents table of a container. For more details about this
operation, see [MS-OXCFOLD] section 2.2.1.14.
The following descriptions define valid fields for the RopGetContentsTable ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
TableFlags
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x05.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
73 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
TableFlags (1 byte): A flags structure that contains flags control the type of table. The possible
values are specified in [MS-OXCFOLD] section 2.2.1.14.1.
The following descriptions define valid fields for the RopGetContentsTable ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... RowCount
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x05.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
RowCount (4 bytes): An unsigned integer that represents the number of rows in the contents
table.
The following descriptions define valid fields for the RopGetContentsTable ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x05.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
74 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.5 Table ROPs
The RopSetColumns ROP sets the properties visible on a table. For more details about this
operation, see [MS-OXCTABL] section 2.2.2.2.
The following descriptions define valid fields for the RopSetColumns ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x12.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
SetColumnsFlags (1 byte): A flags structure that contains flags that control this operation. The
possible values are specified in [MS-OXCTABL] section 2.2.2.2.1.
PropertyTagCount (2 bytes): An unsigned integer that specifies the number of tags present in the
PropertyTags field.
PropertyTags (variable): An array of PropertyTag structures that specifies the property values
that are visible in table rows. The number of structures contained in this field is specified by the
PropertyTagCount field. The format of the PropertyTag structure is specified in [MS-OXCDATA]
section 2.9.
The following descriptions define valid fields for the RopSetColumns ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... TableStatus
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x12.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
75 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
TableStatus (1 byte): An enumeration that specifies the status of the table. The possible values for
this enumeration are specified in [MS-OXCTABL] section 2.2.2.1.3.
The following descriptions define valid fields for the RopSetColumns ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x12.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopSortTable ROP defines the order of rows of a table based on sort criteria. For more details
about this operation, see [MS-OXCTABL] section 2.2.2.3.
The following descriptions define valid fields for the RopSortTable ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
SortOrderCount CategoryCount
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x13.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
76 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
SortTableFlags (1 byte): A flags structure that contains flags that control this operation. The
possible values are specified in [MS-OXCTABL] section 2.2.2.3.1.
SortOrderCount (2 bytes): An unsigned integer that specifies how many SortOrder structures are
present in the SortOrders field. The format of the SortOrder structure is specified in [MS-
OXCDATA] section 2.13.1.
CategoryCount (2 bytes): An unsigned integer that specifies the number of category SortOrder
structures in the SortOrders field.
ExpandedCount (2 bytes): An unsigned integer that specifies the number of expanded categories
in the SortOrders field.
SortOrders (variable): An array of SortOrder structures that specifies the sort order for the rows
in the table. The number of structures contained in this field is specified by the SortOrderCount
field.
The following descriptions define valid fields for the RopSortTable ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... TableStatus
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x13.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
TableStatus (1 byte): An enumeration that specifies the status of the table. The possible values for
this enumeration are specified in [MS-OXCTABL] section 2.2.2.1.3.
The following descriptions define valid fields for the RopSortTable ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x13.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
77 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopRestrict ROP establishes a filter for a table. For more details about this operation, see [MS-
OXCTABL] section 2.2.2.4.
The following descriptions define valid fields for the RopRestrict ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x14.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
RestrictFlags (1 byte): A flags structure that contains flags that control this operation. The
possible values are specified in [MS-OXCTABL] section 2.2.2.4.1.
The following descriptions define valid fields for the RopRestrict ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... TableStatus
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x14.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
78 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
TableStatus (1 byte): An enumeration that specifies the status of the table. The possible values for
this enumeration are specified in [MS-OXCTABL] section 2.2.2.1.3.
The following descriptions define valid fields for the RopRestrict ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x14.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopQueryRows ROP retrieves rows from a table. For more details about this operation, see
[MS-OXCTABL] section 2.2.2.5.
The following descriptions define valid fields for the RopQueryRows ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
ForwardRead RowCount
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x15.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
QueryRowsFlags (1 byte): A flags structure that contains flags that control this operation. The
possible values are specified in [MS-OXCTABL] section 2.2.2.5.1.
79 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RowCount (2 bytes): An unsigned integer that specifies the number of requested rows.
The following descriptions define valid fields for the RopQueryRows ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x15.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
Origin (1 byte): An enumeration that specifies current location of the cursor. The possible values for
this enumeration are specified in [MS-OXCTABL] section 2.2.2.5.2.
RowCount (2 bytes): An unsigned integer that specifies the number of structures in the RowData
field.
RowData (variable): A list of PropertyRow structures. The number of structures contained in this
field is specified by the RowCount field. The format of the PropertyRow structure is specified in
[MS-OXCDATA] section 2.8. The columns used for these rows were those previously set on this
table by a RopSetColumns ROP request (section 2.2.5.1).
The following descriptions define valid fields for the RopQueryRows ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x15.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
80 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.5.5 RopAbort ROP
The RopAbort ROP aborts an asynchronous table operation in progress. For more details about this
operation, see [MS-OXCTABL] section 2.2.2.6.
The following descriptions define valid fields for the RopAbort ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x38.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopAbort ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... TableStatus
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x38.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
TableStatus (1 byte): An enumeration that specifies the status of the table. The possible values for
this enumeration are specified in [MS-OXCTABL] section 2.2.2.1.3.
The following descriptions define valid fields for the RopAbort ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
81 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x38.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopGetStatus ROP gets the status of a table. For more details about this operation, see [MS-
OXCTABL] section 2.2.2.7.
The following descriptions define valid fields for the RopGetStatus ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x16.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopGetStatus ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... TableStatus
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x16.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
82 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
TableStatus (1 byte): An enumeration that specifies the status of the table. The possible values for
this enumeration are specified in [MS-OXCTABL] section 2.2.2.1.3.
The following descriptions define valid fields for the RopGetStatus ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x16.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopQueryPosition ROP gets the cursor position. For more details about this operation, see [MS-
OXCTABL] section 2.2.2.8.
The following descriptions define valid fields for the RopQueryPosition ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x17.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopQueryPosition ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
83 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
... Numerator
... Denominator
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x17.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
Numerator (4 bytes): An unsigned integer that represents the numerator of the fraction identifying
the table position.
Denominator (4 bytes): An unsigned integer that represents the denominator of the fraction
identifying the table position.
The following descriptions define valid fields for the RopQueryPosition ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x17.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopSeekRow ROP moves the cursor to a specific position in a table. For more details about this
operation, see [MS-OXCTABL] section 2.2.2.9.
The following descriptions define valid fields for the RopSeekRow ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
84 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RowCount
WantRowMovedCount
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x18.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
Origin (1 byte): An enumeration that specifies the origin of this seek operation. The possible values
for this enumeration are specified in [MS-OXCTABL] section 2.2.2.5.2.
RowCount (4 bytes): A signed integer that specifies the direction and the number of rows to seek.
WantRowMovedCount (1 byte): A Boolean that specifies whether the server returns the actual
number of rows moved in the response.
The following descriptions define valid fields for the RopSeekRow ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x18.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
HasSoughtLess (1 byte): A Boolean that specifies whether the full number of rows sought past was
less than the number that was requested.
RowsSought (4 bytes): A signed integer that specifies the direction and number of rows sought.
The following descriptions define valid fields for the RopSeekRow ROP failure response buffer.
85 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x18.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopSeekRowBookmark ROP moves the cursor to a location specified relative to a user-defined
bookmark. For more details about this operation, see [MS-OXCTABL] section 2.2.2.10.
The following descriptions define valid fields for the RopSeekRowBookmark ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RowCount
WantRowMovedCount
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x19.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
BookmarkSize (2 bytes): An unsigned integer that specifies the size of the Bookmark field.
Bookmark (variable): An array of bytes that specifies the origin for the seek operation. The size of
this field, in bytes, is specified by the BookmarkSize field.
RowCount (4 bytes): A signed integer that specifies the direction and the number of rows to seek.
86 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
WantRowMovedCount (1 byte): A Boolean that specifies whether the server returns the actual
number of rows sought in the response.
The following descriptions define valid fields for the RopSeekRowBookmark ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RowsSought
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x19.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
RowNoLongerVisible (1 byte): A Boolean that specifies whether the bookmark target is no longer
visible.
HasSoughtLess (1 byte): A Boolean that specifies whether the full number of rows sought past was
less than the number that was requested.
RowsSought (4 bytes): An unsigned integer that specifies the direction and number of rows
sought.
The following descriptions define valid fields for the RopSeekRowBookmark ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x19.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
87 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.5.10 RopSeekRowFractional ROP
The RopSeekRowFractional ROP moves the cursor to an approximate position in a table. For more
details about this operation, see [MS-OXCTABL] section 2.2.2.11.
The following descriptions define valid fields for the RopSeekRowFractional ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... Denominator
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x1A.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
Numerator (4 bytes): An unsigned integer that represents the numerator of the fraction identifying
the table position to seek to.
Denominator (4 bytes): An unsigned integer that represents the denominator of the fraction
identifying the table position to seek to.
The following descriptions define valid fields for the RopSeekRowFractional ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x1A.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopCreateBookmark ROP marks the current cursor position in a table. For more details about
this operation, see [MS-OXCTABL] section 2.2.2.12.
88 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.5.11.1 RopCreateBookmark ROP Request Buffer
The following descriptions define valid fields for the RopCreateBookmark ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x1B.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopCreateBookmark ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... BookmarkSize
Bookmark (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x1B.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
BookmarkSize (2 bytes): An unsigned integer that specifies the size of the Bookmark field.
Bookmark (variable): An array of bytes that specifies the bookmark created. The size of this field,
in bytes, is specified by the BookmarkSize field.
The following descriptions define valid fields for the RopCreateBookmark ROP failure response
buffer.
89 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x1B.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopQueryColumnsAll ROP gets a list of columns in a table. For more details about this
operation, see [MS-OXCTABL] section 2.2.2.13.
The following descriptions define valid fields for the RopQueryColumnsAll ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x37.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopQueryColumnsAll ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PropertyTagCount
PropertyTags (variable)
...
90 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x37.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
PropertyTagCount (2 bytes): An unsigned integer that specifies how many tags are present in the
PropertyTags field.
PropertyTags (variable): An array of PropertyTag structures that specifies the columns of the
table. The number of structures contained in this field is specified by the PropertyTagCount field.
The format of the PropertyTag structure is specified in [MS-OXCDATA] section 2.9.
The following descriptions define valid fields for the RopQueryColumnsAll ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x37.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopFindRow ROP moves the cursor to a row in a table that matches specific search criteria.
For more details about this operation, see [MS-OXCTABL] section 2.2.2.14.
The following descriptions define valid fields for the RopFindRow ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
91 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
Origin BookmarkSize Bookmark (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x4F.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
FindRowFlags (1 byte): A flags structure that contains flags that control this operation. The
possible values are specified in [MS-OXCTABL] section 2.2.2.14.1.
Origin (1 byte): An enumeration that specifies where this operation begins its search. The possible
values for this enumeration are specified in [MS-OXCTABL] section 2.2.2.5.2.
BookmarkSize (2 bytes): An unsigned integer that specifies the size of the Bookmark field.
Bookmark (variable): An array of bytes that specifies the bookmark to use as the origin. The size
of this field, in bytes, is specified by the BookmarkSize field.
The following descriptions define valid fields for the RopFindRow ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RowData (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x4F.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
92 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RowNoLongerVisible (1 byte): A Boolean that specifies whether the bookmark target is no longer
visible.
HasRowData (1 byte): A Boolean that indicates whether the RowData field is present.
RowData (variable): A PropertyRow structure that is present only when the HasRowData field is
set to a nonzero value. The format of the PropertyRow structure is specified in [MS-OXCDATA]
section 2.8. The columns used for these rows were those previously set on this table by a
RopSetColumns ROP request (section 2.2.5.1).
The following descriptions define valid fields for the RopFindRow ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x4F.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopFreeBookmark ROP releases a bookmark. For more details about this operation, see [MS-
OXCTABL] section 2.2.2.15.
The following descriptions define valid fields for the RopFreeBookmark ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x89.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
93 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
BookmarkSize (2 bytes): An unsigned integer that specifies the size of the Bookmark field.
Bookmark (variable): An array of bytes that specifies the bookmark to be freed. The size of this
field, in bytes, is specified by the BookmarkSize field.
The following descriptions define valid fields for the RopFreeBookmark ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x89.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopResetTable ROP resets a table to its original state. For more details about this operation,
see [MS-OXCTABL] section 2.2.2.16.
The following descriptions define valid fields for the RopResetTable ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x81.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopResetTable ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
94 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x81.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopExpandRow ROP expands a categorized row. For more details about this operation, see
[MS-OXCTABL] section 2.2.2.17.
The following descriptions define valid fields for the RopExpandRow ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... CategoryId
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x59.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
MaxRowCount (2 bytes): An unsigned integer that specifies the maximum number of expanded
rows to return data for.
The following descriptions define valid fields for the RopExpandRow ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... ExpandedRowCount
95 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
... RowCount
RowData (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x59.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
ExpandedRowCount (4 bytes): An unsigned integer that specifies the total number of rows
available in the expanded category.
RowCount (2 bytes): An unsigned integer that specifies the number of structures present in the
RowData field.
RowData (variable): A list of PropertyRow structures. The number of structures contained in this
field is specified by the RowCount field. The format of the PropertyRow structure is specified in
[MS-OXCDATA] section 2.8.1. The columns used for these rows were those previously set on this
table by a RopSetColumns ROP request (section 2.2.5.1).
The following descriptions define valid fields for the RopExpandRow ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x59.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopCollapseRow ROP collapses a categorized row. For more details about this operation, see
[MS-OXCTABL] section 2.2.2.18.
The following descriptions define valid fields for the RopCollapseRow ROP request buffer.
96 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x5A.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopCollapseRow ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... CollapsedRowCount
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x5A.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
CollapsedRowCount (4 bytes): An unsigned integer that specifies the total number of rows in the
collapsed category.
The following descriptions define valid fields for the RopCollapseRow ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
97 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x5A.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopGetCollapseState ROP gets the current collapse state of rows in a categorized table. For
more details about this operation, see [MS-OXCTABL] section 2.2.2.19.
The following descriptions define valid fields for the RopGetCollapseState ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
... RowInstanceNumber
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x6B.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
RowId (8 bytes): An identifier that specifies the row to be preserved as the cursor. The cursor is
returned as part of the collapse state in the CollapseState field of the response.
RowInstanceNumber (4 bytes): An unsigned integer that specifies the instance number of the row
that is to be preserved as the cursor.
The following descriptions define valid fields for the RopGetCollapseState ROP success response
buffer.
98 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... CollapseStateSize
CollapseState (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x6B.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
CollapseStateSize (2 bytes): An unsigned integer that specifies the size of the CollapseState
field.
CollapseState (variable): An array of bytes that specifies a collapse state for a categorized table.
The size of this field, in bytes, is specified by the CollapseStateSize field.
The following descriptions define valid fields for the RopGetCollapseState ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x6B.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopSetCollapseState ROP restores the collapse state of rows in a categorized table. For more
details about this operation, see [MS-OXCTABL] section 2.2.2.20.
The following descriptions define valid fields for the RopSetCollapseState ROP request buffer.
99 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x6C.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
CollapseStateSize (2 bytes): An unsigned integer that specifies the size of the CollapseState
field.
CollapseState (variable): An array of bytes that specifies a collapse state for a categorized table.
The size of this field, in bytes, is specified by the CollapseStateSize field.
The following descriptions define valid fields for the RopSetCollapseState ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... BookmarkSize
Bookmark (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x6C.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
BookmarkSize (2 bytes): An unsigned integer that specifies the size of the Bookmark field.
Bookmark (variable): An array of bytes that specifies the current cursor position. The size of this
field, in bytes, is specified by the BookmarkSize field.
100 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
The following descriptions define valid fields for the RopSetCollapseState ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x6C.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopOpenMessage ROP opens an existing message in a mailbox. For more details about this
operation, see [MS-OXCMSG] section 2.2.3.1.
The following descriptions define valid fields for the RopOpenMessage ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
CodePageId FolderId
...
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x03.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
101 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
CodePageId (2 bytes): An identifier that specifies which code page will be used for string values
associated with the message.
FolderId (8 bytes): An identifier that identifies the parent folder of the message to be opened.
OpenModeFlags (1 byte): A flags structure that contains flags that control the access to the
message. The possible values are specified in [MS-OXCMSG] section 2.2.3.1.1.
The following descriptions define valid fields for the RopOpenMessage ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
NormalizedSubject (variable)
...
RecipientCount ColumnCount
RecipientColumns (variable)
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x03.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
HasNamedProperties (1 byte): A Boolean that specifies whether the message has named
properties.
SubjectPrefix (variable): A TypedString structure that specifies the subject prefix of the message.
The format of the TypedString structure is specified in [MS-OXCDATA] section 2.11.7.
102 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
NormalizedSubject (variable): A TypedString structure that specifies the normalized subject of
the message.
RecipientCount (2 bytes): An unsigned integer that specifies the number of recipients (1) on the
message.
ColumnCount (2 bytes): An unsigned integer that specifies the number of structures in the
RecipientColumns field.
RowCount (1 byte): An unsigned integer that specifies the number of structures in the
RecipientRows field.
The following descriptions define valid fields for the OpenRecipientRow structure.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RecipientType (1 byte): An enumeration that specifies the type of recipient (2). The possible
values for this enumeration are specified in [MS-OXCMSG] section 2.2.3.1.2.
CodePageId (2 bytes): An identifier that specifies the code page for the recipient (2).
Reserved (2 bytes): Reserved. The server MUST set this field to 0x0000.
RecipientRowSize (2 bytes): An unsigned integer that specifies the size of the RecipientRow
field.
The following descriptions define valid fields for the RopOpenMessage ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
103 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x03.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopCreateMessage ROP creates a Message object in a mailbox. For more details about this
operation, see [MS-OXCMSG] section 2.2.3.2.
The following descriptions define valid fields for the RopCreateMessage ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
CodePageId FolderId
...
... AssociatedFlag
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x06.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
CodePageId (2 bytes): An identifier that specifies the code page for the message.
AssociatedFlag (1 byte): A Boolean that specifies whether the message is an FAI message.
The following descriptions define valid fields for the RopCreateMessage ROP success response
buffer.
104 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x06.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex specified in field the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
HasMessageId (1 byte): A Boolean that specifies whether the MessageId field is present.
MessageId (8 bytes): An identifier that is present if HasMessageId is nonzero and is not present if
it is zero. This value is an identifier that is associated with the created message.
The following descriptions define valid fields for the RopCreateMessage ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x06.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopSaveChangesMessage ROP commits the changes made to a message. For more details
about this operation, see [MS-OXCMSG] section 2.2.3.3.
The following descriptions define valid fields for the RopSaveChangesMessage ROP request
buffer.
105 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
SaveFlags
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0C.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
ResponseHandleIndex (1 byte): An unsigned integer index that specifies the location in the
Server object handle table that is referenced in the response. For more information about
Server objects, see section 1.3.1.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored.
SaveFlags (1 byte): A flags structure that contains flags that specify how the save operation
behaves. The possible values are specified in [MS-OXCMSG] section 2.2.3.3.1.
The following descriptions define valid fields for the RopSaveChangesMessage ROP success
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0C.
ResponseHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified
in the ResponseHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
The following descriptions define valid fields for the RopSaveChangesMessage ROP failure response
buffer.
106 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0C.
ResponseHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified
in the ResponseHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopRemoveAllRecipients ROP deletes all recipients (1) from a message. For more details
about this operation, see [MS-OXCMSG] section 2.2.3.4.
The following descriptions define valid fields for the RopRemoveAllRecipients ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0D.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
Reserved (4 bytes): Reserved. The client SHOULD set this field to 0x00000000. The server MUST
ignore this field, regardless of its value.
The following descriptions define valid fields for the RopRemoveAllRecipients ROP response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
107 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0D.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopModifyRecipients ROP adds or modifies recipients (1) on a message. For more details
about this operation, see [MS-OXCMSG] section 2.2.3.5.
The following descriptions define valid fields for the RopModifyRecipients ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0E.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
ColumnCount (2 bytes): An unsigned integer that specifies the number of structures in the
RecipientColumns field.
RowCount (2 bytes): An unsigned integer that specifies the number of rows in the RecipientRows
field.
108 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.6.5.1.1 ModifyRecipientRow Structure
The following descriptions define valid fields for the ModifyRecipientRow structure.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RowId
...
RowId (4 bytes): An unsigned integer that specifies the ID of the recipient (1).
RecipientType (1 byte): An enumeration that specifies the type of recipient (1). The possible values
for this enumeration are specified in [MS-OXCMSG] section 2.2.3.1.2.
RecipientRowSize (2 bytes): An unsigned integer that specifies the size of the RecipientRow
field.
The following descriptions define valid fields for the RopModifyRecipients ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0E.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopReadRecipients ROP gets recipient (2) details from a message. For more details about
this operation, see [MS-OXCMSG] section 2.2.3.6.
The following descriptions define valid fields for the RopReadRecipients ROP request buffer.
109 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... Reserved
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0F.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
RowId (4 bytes): An unsigned integer that specifies the starting index for the recipients (2) to be
retrieved.
Reserved (2 bytes): Reserved. This field MUST be set to 0x0000. Server behavior is undefined if
this field is not set to 0x0000.
The following descriptions define valid fields for the RopReadRecipients ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0F.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
RowCount (1 byte): An unsigned integer that specifies the number of structures in the
RecipientRows field.
110 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
The following descriptions define valid fields for the ReadRecipientRow structure.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RowId
...
RowId (4 bytes): An unsigned integer that specifies the row ID of the recipient (2).
RecipientType (1 byte): An enumeration that specifies the type of recipient (2). The possible values
for this enumeration are specified in [MS-OXCMSG] section 2.2.3.1.2.
CodePageId (2 bytes): An identifier that specifies the code page for the recipient (2).
Reserved (2 bytes): Reserved. The server MUST set this field to 0x0000.
RecipientRowSize (2 bytes): An unsigned integer that specifies the size of the RecipientRow
field.
The following descriptions define valid fields for the RopReadRecipients ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0F.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopReloadCachedInformation ROP gets message and recipient (2) information from a
message. For more details about this operation, see [MS-OXCMSG] section 2.2.3.7.
111 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
The following descriptions define valid fields for the RopReloadCachedInformation ROP request
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x10.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
Reserved (2 bytes): Reserved. This field MUST be set to 0x0000. Server behavior is undefined if
this field is not set to 0x0000.
The following descriptions define valid fields for the RopReloadCachedInformation ROP success
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
NormalizedSubject (variable)
...
RecipientCount ColumnCount
RecipientColumns (variable)
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x10.
112 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex specified field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
HasNamedProperties (1 byte): A Boolean that specifies whether the message has named
properties.
SubjectPrefix (variable): A TypedString structure that specifies the subject prefix of the message.
The format of the TypedString structure is specified in [MS-OXCDATA] section 2.11.7.
RecipientCount (2 bytes): An unsigned integer that specifies the number of recipients (2) on the
message.
ColumnCount (2 bytes): An unsigned integer that specifies the number of structures in the
RecipientColumns field.
RowCount (1 byte): An unsigned integer that specifies the number of rows in the RecipientRows
field.
The following descriptions define valid fields for the RopReloadCachedInformation ROP failure
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x10.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopSetMessageStatus ROP sets the status of a message in a folder. For more details about this
operation, see [MS-OXCMSG] section 2.2.3.8.
113 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.6.8.1 RopSetMessageStatus ROP Request Buffer
The following descriptions define valid fields for the RopSetMessageStatus ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
... MessageStatusFlags
... MessageStatusMask
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x20.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
MessageId (8 bytes): An identifier that specifies the message for which the status will be changed.
MessageStatusFlags (4 bytes): A flags structure that contains status flags to set on the message.
The possible values are specified in [MS-OXCMSG] section 2.2.3.8.1.
The following descriptions define valid fields for the RopSetMessageStatus ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... MessageStatusFlags
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x20.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
114 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
MessageStatusFlags (4 bytes): A flags structure that contains the status flags that were set on
the message before this operation. The possible values are specified in [MS-OXCMSG] section
2.2.3.8.2.
The following descriptions define valid fields for the RopSetMessageStatus ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x20.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopGetMessageStatus ROP returns the status of a message in a folder. For more details about
this operation, see [MS-OXCMSG] section 2.2.3.9.
The following descriptions define valid fields for the RopGetMessageStatus ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x1F.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
MessageId (8 bytes): An identifier that specifies the message for which the status will be returned.
115 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.6.9.2 RopGetMessageStatus ROP Response Buffers
The response buffers for this ROP are the same as those for the RopSetMessageStatus ROP, as
specified in sections 2.2.6.8.2 and 2.2.6.8.3. The value of the RopId field for RopGetMessageStatus
responses MUST be 0x20, which is the same as that for the RopSetMessageStatus responses.
The RopSetReadFlags ROP sets the read flag for messages in a folder. For more details about this
operation, see [MS-OXCMSG] section 2.2.3.10.
The following descriptions define valid fields for the RopSetReadFlags ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x66.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
ReadFlags (1 byte): A flags structure that contains flags that specify the flags to set. The possible
values for these flags are specified in [MS-OXCMSG] section 2.2.3.10.1.
MessageIdCount (2 bytes): An unsigned integer that specifies the number of identifiers in the
MessageIds field.
MessageIds (variable): An array of 64-bit identifiers that specify the messages that are to have
their read flags changed. The number of identifiers contained in this field is specified by the
MessageIdCount field.
The following descriptions define valid fields for the RopSetReadFlags ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PartialCompletion
116 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x66.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
PartialCompletion (1 byte): A Boolean that indicates whether the operation was only partially
completed. The operation is partially completed if the server was unable to modify one or more of
the Message objects that are specified in the MessageIds field of the request.
The RopSetMessageReadFlag ROP sets or clears the message read flag. For more details about this
operation, see [MS-OXCMSG] section 2.2.3.11.
The following descriptions define valid fields for the RopSetMessageReadFlag ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
...
...
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x11.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
ResponseHandleIndex (1 byte): An unsigned integer index that specifies the location in the
Server object handle table that is referenced in the response. For more information about
Server objects, see section 1.3.1.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored.
ReadFlags (1 byte): A flags structure. The possible values for these flags are specified in [MS-
OXCMSG] section 2.2.3.11.1.
117 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
ClientData (24 bytes): An array of bytes that is present when the logon associated with LogonId
was created with the Private flag, as specified in [MS-OXCSTOR] section 2.2.1.1.1, unset and is
not present otherwise. This value specifies the information that is returned to the client in a
successful response.
The following descriptions define valid fields for the RopSetMessageReadFlag ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
ClientData (optional)
...
...
...
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x11.
ResponseHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified
in the ResponseHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
ReadStatusChanged (1 byte): A Boolean that specifies whether the read status of a public
folder's message has changed.
LogonId (1 byte): An unsigned integer index that is present when the value in the
ReadStatusChanged field is nonzero and is not present otherwise. This field MUST be set to the
value of the LogonId field in the request.
ClientData (24 bytes): An array of bytes that is present when the value in the
ReadStatusChanged field is nonzero and is not present otherwise. This field MUST be set to the
value of the ClientData field in the request.
The following descriptions define valid fields for the RopSetMessageReadFlag ROP failure response
buffer.
118 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x11.
ResponseHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified
in the ResponseHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopOpenAttachment ROP opens an attachment to a message. For more details about this
operation, see [MS-OXCMSG] section 2.2.3.12.
The following descriptions define valid fields for the RopOpenAttachment ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
OpenAttachmentFlags AttachmentID
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x22.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
OpenAttachmentFlags (1 byte): A flags structure that contains flags for opening attachments. The
possible values for these flags are specified in [MS-OXCMSG] section 2.2.3.12.1.
AttachmentID (4 bytes): An unsigned integer index that identifies the attachment to be opened.
The value of this field is equivalent to the value of the PidTagAttachNumber property ([MS-
OXCMSG] section 2.2.2.6).
The following descriptions define valid fields for the RopOpenAttachment ROP response buffer.
119 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x22.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopCreateAttachment ROP creates a new attachment on a message. For more details about
this operation, see [MS-OXCMSG] section 2.2.3.13.
The following descriptions define valid fields for the RopCreateAttachment ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x23.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
The following descriptions define valid fields for the RopCreateAttachment ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... AttachmentID
...
120 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x23.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
AttachmentID (4 bytes): An unsigned integer identifier that refers to the attachment created. The
value of this field is equivalent to the value of the PidTagAttachNumber property ([MS-
OXCMSG] section 2.2.2.6).
The following descriptions define valid fields for the RopCreateAttachment ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x23.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopDeleteAttachment ROP deletes an attachment on a message. For more details about this
operation, see [MS-OXCMSG] section 2.2.3.14.
The following descriptions define valid fields for the RopDeleteAttachment ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x24.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
121 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
AttachmentID (4 bytes): An unsigned integer that identifies the attachment to be deleted. The
value of this field is equivalent to the PidTagAttachNumber property ([MS-OXCMSG] section
2.2.2.6).
The following descriptions define valid fields for the RopDeleteAttachment ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x24.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopSaveChangesAttachment ROP commits the changes made to an attachment. For more
details about this operation, see [MS-OXCMSG] section 2.2.3.15.
The following descriptions define valid fields for the RopSaveChangesAttachment ROP request
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
SaveFlags
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x25.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
ResponseHandleIndex (1 byte): An unsigned integer index that specifies the location in the
Server object handle table that is referenced in the response. For more information about
Server objects, see section 1.3.1.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored.
122 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
SaveFlags (1 byte): A flags structure that contains flags that specify how the save operation
behaves. The possible values for these flags are specified in [MS-OXCMSG] section 2.2.3.3.1.
The following descriptions define valid fields for the RopSaveChangesAttachment ROP response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x25.
ResponseHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified
in the ResponseHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopOpenEmbeddedMessage ROP opens an attachment as a message. For more details about
this operation, see [MS-OXCMSG] section 2.2.3.16.
The following descriptions define valid fields for the RopOpenEmbeddedMessage ROP request
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
CodePageId OpenModeFlags
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x46.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
CodePageId (2 bytes): An identifier that specifies which code page is used for string values
associated with the message.
123 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
OpenModeFlags (1 byte): A flags structure that contains flags that control the access to the
message. The possible values are specified in [MS-OXCMSG] section 2.2.3.16.1.
The following descriptions define valid fields for the RopOpenEmbeddedMessage ROP success
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
... HasNamedProperties
SubjectPrefix (variable)
...
NormalizedSubject (variable)
...
RecipientCount ColumnCount
RecipientColumns (variable)
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x46.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
MessageId (8 bytes): An identifier that specifies the ID of the Embedded Message object.
HasNamedProperties (1 byte): A Boolean that specifies whether the message has named
properties.
124 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
SubjectPrefix (variable): A TypedString structure that specifies the subject prefix of the message.
The format of the TypedString structure is specified in [MS-OXCDATA] section 2.11.7.
RecipientCount (2 bytes): An unsigned integer that specifies the number of recipients (2) on the
message.
ColumnCount (2 bytes): An unsigned integer that specifies the number of structures in the
RecipientColumns field.
RowCount (1 byte): An unsigned integer that specifies the number of rows in the RecipientRows
field.
The following descriptions define valid fields for the RopOpenEmbeddedMessage ROP failure
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x46.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopGetAttachmentTable ROP gets the attachment table of a message. For more details about
this operation, see [MS-OXCMSG] section 2.2.3.17.
The following descriptions define valid fields for the RopGetAttachmentTable ROP request buffer.
125 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
TableFlags
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x21.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
TableFlags (1 byte): A flags structure that contains flags that control the type of table. The
possible values are specified in [MS-OXCMSG] section 2.2.3.17.1.
The following descriptions define valid fields for the RopGetAttachmentTable ROP response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x21.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopGetValidAttachments ROP gets the valid attachment identifiers of a message. For more
details about this operation, see [MS-OXCMSG] section 2.2.3.18.
The following descriptions define valid fields for the RopGetValidAttachments ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
126 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x52.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopGetValidAttachments ROP success
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... AttachmentIdCount
AttachmentIdArray (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x52.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
AttachmentIdCount (2 bytes): An unsigned integer that specifies the number of integers in the
AttachmentIdArray field.
AttachmentIdArray (variable): An array of 32-bit integers that represent the valid attachment
identifiers of the message. The number of integer values contained in this field is specified by the
AttachmentIdCount field.
The following descriptions define valid fields for the RopGetValidAttachments ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x52.
127 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopSubmitMessage ROP submits a message for sending. For more details about this operation,
see [MS-OXOMSG] section 2.2.4.1.
The following descriptions define valid fields for the RopSubmitMessage ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x32.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
SubmitFlags (1 byte): A flags structure that contains flags that specify special behavior for
submitting the message. The possible values are specified in [MS-OXOMSG] section 2.2.4.1.1.
The following descriptions define valid fields for the RopSubmitMessage ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x32.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
128 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.7.2 RopAbortSubmit ROP
The RopAbortSubmit ROP aborts a previous message submission. For more details about this
operation, see [MS-OXOMSG] section 2.2.4.2.
The following descriptions define valid fields for the RopAbortSubmit ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
... MessageId
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x34.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
FolderId (8 bytes): An identifier that identifies the folder in which the submitted message is
located.
The following descriptions define valid fields for the RopAbortSubmit ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x34.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
129 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.7.3 RopGetAddressTypes ROP
The RopGetAddressTypes ROP returns the type of recipient (2) handled by a transport provider.
For more details about this operation, see [MS-OXOMSG] section 2.2.4.3.
The following descriptions define valid fields for the RopGetAddressTypes ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x49.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopGetAddressTypes ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... AddressTypeCount
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x49.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
AddressTypeCount (2 bytes): An unsigned integer that specifies the number of strings in the
AddressTypes field.
AddressTypeSize (2 bytes): An unsigned integer that specifies the length of the AddressTypes
field.
130 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
AddressTypes (variable): A list of null-terminated ASCII strings. The number of strings contained
in this field is specified by the AddressTypeCount field. The size of this field, in bytes, is
specified by the AddressTypeSize field.
The following descriptions define valid fields for the RopGetAddressTypes ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x49.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopSetSpooler ROP informs the server that the client intends to act as a mail spooler. For more
details about this operation, see [MS-OXOMSG] section 2.2.5.1.
The following descriptions define valid fields for the RopSetSpooler ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x47.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopSetSpooler ROP response buffer.
131 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x47.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopSpoolerLockMessage ROP locks the specified message for spooling. For more details about
this operation, see [MS-OXOMSG] section 2.2.5.3.
The following descriptions define valid fields for the RopSpoolerLockMessage ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
... LockState
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x48.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
MessageId (8 bytes): An identifier that specifies the message for which the status will be changed.
LockState (1 byte): An enumeration. The possible values for this enumeration are specified in [MS-
OXOMSG] section 2.2.5.3.1.
The following descriptions define valid fields for the RopSpoolerLockMessage ROP response
buffer.
132 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x48.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopTransportSend ROP sends the specified Message object out for message delivery. For
more details about this operation, see [MS-OXOMSG] section 2.2.5.4.
The following descriptions define valid fields for the RopTransportSend ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x4A.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopTransportSend ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
PropertyValueCount
... NoPropertiesReturned
(optional)
...
133 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x4A.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
NoPropertiesReturned (1 byte): A Boolean that specifies whether property values are returned.
The following descriptions define valid fields for the RopTransportSend ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x4A.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopTransportNewMail ROP informs the server of new mail. For more details about this
operation, see [MS-OXOMSG] section 2.2.5.5.
The following descriptions define valid fields for the RopTransportNewMail ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
... FolderId
134 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
...
...
MessageFlags
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x51.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
FolderId (8 bytes): An identifier that specifies the folder of the new Message object.
MessageClass (variable): A null-terminated ASCII string that specifies the message class of the
new Message object.
MessageFlags (4 bytes): A flags structure that contains the message flags of the new Message
object. The possible values are specified in [MS-OXOMSG] section 2.2.5.5.1.
The following descriptions define valid fields for the RopTransportNewMail ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x51.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The following descriptions define valid fields for the RopGetTransportFolder ROP request buffer.
135 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x6D.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopGetTransportFolder ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... FolderId
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x6D.
InputHandleIndex (1 byte): An unsigned integer that MUST be set to the value specified in the
InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The following descriptions define valid fields for the RopGetTransportFolder ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x6D.
136 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
InputHandleIndex (1 byte): An unsigned integer that MUST be set to the InputHandleIndex
specified in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopOptionsData ROP retrieves the options data that is associated with an address type.<6>
For more details about this operation, see [MS-OXOMSG] section 2.2.4.4.
The following descriptions define valid fields for the RopOptionsData ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
WantWin32
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x6F.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
AddressType (variable): A null-terminated ASCII string that specifies the address type that
options are to be returned for.
WantWin32 (1 byte): A Boolean that specifies whether the help file data is to be returned in a
format that is suited for 32-bit machines.
The following descriptions define valid fields for the RopOptionsData ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
137 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
HelpFileSize HelpFile (variable)
...
HelpFileName (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x6F.
InputHandleIndex (1 byte): An unsigned integer that MUST be set to the value specified in the
InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
OptionsInfoSize (2 bytes): An unsigned integer that specifies the size of the OptionsInfo field.
OptionsInfo (variable): An array of bytes that contains opaque data from the server. Clients
SHOULD ignore this field. Servers SHOULD return this field as an empty array.<7> The size of this
field, in bytes, is specified by the OptionsInfoSize field.
HelpFileSize (2 bytes): An unsigned integer that specifies the size of the HelpFile field.
HelpFile (variable): An array of bytes that contains the help file associated with the specified
address type. The size of this field, in bytes, is specified by the HelpFileSize field. This field is
present only when the value of the HelpFileSize field is nonzero.
HelpFileName (variable): A null-terminated multibyte string that specifies the name of the help file
that is associated with the specified address type. The string is composed of multibyte characters.
This field is present if HelpFileSize is nonzero and is not present otherwise.
The following descriptions define valid fields for the RopOptionsData ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x6F.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field SHOULD be set to a value other than 0x00000000.<8>
138 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.8 Property ROPs
The RopGetPropertyIdsFromNames ROP gets property IDs for specified property names. For
more details about this operation, see [MS-OXCPRPT] section 2.2.12.
The following descriptions define valid fields for the RopGetPropertyIdsFromNames ROP request
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x56.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
Flags (1 byte): A flags structure that contains flags that control the behavior of this operation. The
possible values are specified in [MS-OXCPRPT] section 2.2.12.1.
PropertyNameCount (2 bytes): An unsigned integer that specifies the number of structures in the
PropertyNames field.
PropertyNames (variable): A list of PropertyName structures that specifies the property names
requested. The number of structures contained in this field is specified by the
PropertyNameCount field. The format of the PropertyName structure is specified in [MS-
OXCPRPT] section 2.2.12.1.
The following descriptions define valid fields for the RopGetPropertyIdsFromNames ROP success
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PropertyIdCount
PropertyIds (variable)
139 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x56.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
PropertyIdCount (2 bytes): An unsigned integer that specifies the number of integers contained in
the PropertyIds field.
PropertyIds (variable): An array of unsigned 16-bit integers. Each integer in the array is the
property ID associated with a property name. The number of integers in the array is specified
by the PropertyIdCount field.
The following descriptions define valid fields for the RopGetPropertyIdsFromNames ROP failure
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x56.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopGetNamesFromPropertyIds ROP gets property names for specified property IDs. For
more details about this operation, see [MS-OXCPRPT] section 2.2.13.
The following descriptions define valid fields for the RopGetNamesFromPropertyIds ROP request
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
140 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x55.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
PropertyIdCount (2 bytes): An unsigned integer that specifies the number of integers contained in
the PropertyIds field.
PropertyIds (variable): An array of unsigned 16-bit integers. Each integer in the array is the
property ID associated with a property name to be returned in the response. The number of
integers in the array is specified by the PropertyIdCount field.
The following descriptions define valid fields for the RopGetNamesFromPropertyIds ROP success
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PropertyNameCount
PropertyNames (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x55.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
PropertyNameCount (2 bytes): An unsigned integer that specifies the number of structures in the
PropertyNames field.
PropertyNames (variable): A list of PropertyName structures that specifies the property names
for the property IDs requested. The number of structures contained in this field is specified by
the PropertyNameCount field. The format of the PropertyName structure is specified in [MS-
OXCDATA] section 2.6.1.
The following descriptions define valid fields for the RopGetNamesFromPropertyIds ROP failure
response buffer.
141 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x55.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopGetPropertiesSpecific ROP gets property values for specified property tags. For more
details about this operation, see [MS-OXCPRPT] section 2.2.2.
The following descriptions define valid fields for the RopGetPropertiesSpecific ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x07.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
PropertySizeLimit (2 bytes): An unsigned integer that specifies the maximum size allowed for a
property value returned.
WantUnicode (2 bytes): A Boolean that specifies whether to return string properties in multibyte
Unicode.
PropertyTagCount (2 bytes): An unsigned integer that specifies the number of tags present in the
PropertyTags field.
142 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
PropertyTags (variable): An array of PropertyTag structures that specifies the properties
requested. The number of structures contained in this field is specified by the PropertyTagCount
field. The format of the PropertyTag structure is specified in [MS-OXCDATA] section 2.9.
The following descriptions define valid fields for the RopGetPropertiesSpecific ROP success
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x07.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
The following descriptions define valid fields for the RopGetPropertiesSpecific ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x07.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
143 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.8.4 RopGetPropertiesAll ROP
The RopGetPropertiesAll ROP gets all the property values for an object. For more details about this
operation, see [MS-OXCPRPT] section 2.2.3.
The following descriptions define valid fields for the RopGetPropertiesAll ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... WantUnicode
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x08.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
PropertySizeLimit (2 bytes): An unsigned integer that specifies the maximum size allowed for a
property value returned.
WantUnicode (2 bytes): A Boolean that specifies whether to return string properties in multibyte
Unicode.
The following descriptions define valid fields for the RopGetPropertiesAll ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PropertyValueCount
PropertyValues (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x08.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
144 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
PropertyValueCount (2 bytes): An unsigned integer that specifies the number of structures
present in the PropertyValues field.
The following descriptions define valid fields for the RopGetPropertiesAll ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x08.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopGetPropertiesList ROP gets the list of property tags for an object. For more details about
this operation, see [MS-OXCPRPT] section 2.2.4.
The following descriptions define valid fields for the RopGetPropertiesList ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x09.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopGetPropertiesList ROP success response
buffer.
145 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PropertyTagCount
PropertyTags (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x09.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
PropertyTagCount (2 bytes): An unsigned integer that specifies the number of property tags in
the PropertyTags field.
PropertyTags (variable): An array of PropertyTag structures that lists the property tags on the
object. The number of structures contained in this field is specified by the PropertyTagCount
field. The format of the PropertyTag structure is specified in [MS-OXCDATA] section 2.9.
The following descriptions define valid fields for the RopGetPropertiesList ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x09.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopSetProperties ROP sets property values for an object. For more details about this operation,
see [MS-OXCPRPT] section 2.2.5.
146 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
The following descriptions define valid fields for the RopSetProperties ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0A.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
PropertyValueSize (2 bytes): An unsigned integer that specifies the number of bytes used for the
PropertyValueCount field and the PropertyValues field.
The following descriptions define valid fields for the RopSetProperties ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PropertyProblemCount
PropertyProblems (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0A.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
147 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
PropertyProblemCount (2 bytes): An unsigned integer that specifies the number of
PropertyProblem structures in the PropertyProblems field.
The following descriptions define valid fields for the RopSetProperties ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0A.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopSetPropertiesNoReplicate ROP sets property values for an object without invoking
replication. For more details about this operation, see [MS-OXCPRPT] section 2.2.6.
The following descriptions define valid fields for the RopSetPropertiesNoReplicate ROP request
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x79.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
148 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
PropertyValueSize (2 bytes): An unsigned integer that specifies the number of bytes used for the
PropertyValueCount field and the PropertyValues field.
PropertyValueCount (2 bytes): An unsigned integer that specifies the number of structures listed
in the PropertyValues field.
The following descriptions define valid fields for the RopSetPropertiesNoReplicate ROP success
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PropertyProblemCount
PropertyProblems (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x79.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
The following descriptions define valid fields for the RopSetPropertiesNoReplicate ROP failure
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
149 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x79.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopDeleteProperties ROP deletes property values for an object. For more details about this
operation, see [MS-OXCPRPT] section 2.2.7.
The following descriptions define valid fields for the RopDeleteProperties ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0B.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
PropertyTags (variable): An array of PropertyTag structures that specifies the property values to
be deleted from the object. The number of structures contained in this field is specified by the
PropertyTagCount field. The format of the PropertyTag structure is specified in [MS-OXCDATA]
section 2.9.
The following descriptions define valid fields for the RopDeleteProperties ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PropertyProblemCount
150 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
PropertyProblems (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0B.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
The following descriptions define valid fields for the RopDeleteProperties ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x0B.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopDeletePropertiesNoReplicate ROP deletes property values from an object without invoking
replication. For more details about this operation, see [MS-OXCPRPT] section 2.2.8.
The following descriptions define valid fields for the RopDeletePropertiesNoReplicate ROP request
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
151 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
... PropertyTags (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x7A.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
PropertyTags (variable): An array of PropertyTag structures that specifies the property values to
be deleted from the object. The number of structures contained in this field is specified by the
PropertyTagCount field. The format of the PropertyTag structure is specified in [MS-OXCDATA]
section 2.9.
The following descriptions define valid fields for the RopDeletePropertiesNoReplicate ROP success
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PropertyProblemCount
PropertyProblems (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x7A.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
152 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
The following descriptions define valid fields for the RopDeletePropertiesNoReplicate ROP failure
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x7A.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopQueryNamedProperties ROP retrieves all the named properties for an object. For more
details about this operation, see [MS-OXCPRPT] section 2.2.9.
The following descriptions define valid fields for the RopQueryNamedProperties ROP request
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x5F.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
153 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
QueryFlags (1 byte): A flags structure that contains flags control how this ROP behaves. The
possible values are specified in [MS-OXCPRPT] section 2.2.9.1.
HasGuid (1 byte): A Boolean that specifies whether the PropertyGuid field is present.
PropertyGuid (16 bytes): A GUID that is present if HasGuid is nonzero and is not present if the
value of the HasGuid field is zero. This value specifies the subset of named properties to be
returned.
The following descriptions define valid fields for the RopQueryNamedProperties ROP success
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... IdCount
PropertyIds (variable)
...
PropertyNames (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x5F.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000 or 0x00040380.
IdCount (2 bytes): An unsigned integer that specifies the number of elements contained in the
PropertyIds and PropertyNames fields.
PropertyIds (variable): An array of unsigned 16-bit integers. Each integer in the array is the
property ID associated with a property name. The number of integers in the array is specified
by the IdCount field.
PropertyNames (variable): A list of PropertyName structures that specifies the property names
for the property IDs specified in the PropertyIds field. The number of structures contained in this
field is specified by the IdCount field. The format of the PropertyName structure is specified in
[MS-OXCDATA] section 2.6.1.
The following descriptions define valid fields for the RopQueryNamedProperties ROP failure
response buffer.
154 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x5F.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000 or 0x00040380.
The RopCopyProperties ROP copies property values from one object to another. For more details
about this operation, see [MS-OXCPRPT] section 2.2.10.
The following descriptions define valid fields for the RopCopyProperties ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
PropertyTags (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x67.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
SourceHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the source Server object is stored. For more
information about Server objects, see section 1.3.1.
DestHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the destination Server object is stored.
CopyFlags (1 byte): A flags structure that contains flags that control the operation behavior. The
possible values are specified in [MS-OXCPRPT] section 2.2.10.1.
155 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
PropertyTagCount (2 bytes): An unsigned integer that specifies how many tags are present in the
PropertyTags field.
PropertyTags (variable): An array of PropertyTag structures that specifies the properties to copy.
The number of structures contained in this field is specified by the PropertyTagCount field. The
format of the PropertyTag structure is specified in [MS-OXCDATA] section 2.9.
The following descriptions define valid fields for the RopCopyProperties ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PropertyProblemCount
PropertyProblems (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x67.
SourceHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the SourceHandleIndex field specified in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
The following descriptions define valid fields for the RopCopyProperties ROP null destination failure
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... DestHandleIndex
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x67.
156 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
SourceHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the SourceHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000503.
DestHandleIndex (4 bytes): An unsigned integer index that MUST be set to the value specified in
the DestHandleIndex field in the request.
The following descriptions define valid fields for the RopCopyProperties ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x67.
SourceHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the SourceHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000 or 0x00000503.
The RopCopyTo ROP copies properties from one Server object to another. For more details about
this operation, see [MS-OXCPRPT] section 2.2.11.
The following descriptions define valid fields for the RopCopyTo ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x39.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
157 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
SourceHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the source Server object is stored. For more
information about Server objects, see section 1.3.1.
DestHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the destination Server object is stored.
CopyFlags (1 byte): A flags structure that contains flags that control the operation behavior. The
possible values are specified in [MS-OXCPRPT] section 2.2.11.1.
ExcludedTagCount (2 bytes): An unsigned integer that specifies how many tags are present in the
ExcludedTags field.
The following descriptions define valid fields for the RopCopyTo ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... PropertyProblemCount
PropertyProblems (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x39.
SourceHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the SourceHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
158 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
The following descriptions define valid fields for the RopCopyTo ROP null destination failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... DestHandleIndex
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x39.
SourceHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the SourceHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000503.
The following descriptions define valid fields for the RopCopyTo ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x39.
SourceHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the SourceHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000 or 0x00000503.
The RopProgress ROP gets the status of an asynchronous operation. For more details about this
operation, see [MS-OXCPRPT] section 2.2.23.
The following descriptions define valid fields for the RopProgress ROP request buffer.
159 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x50.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopProgress ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... TotalTaskCount
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x50.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
TotalTaskCount (4 bytes): An unsigned integer that specifies the total number of tasks.
The following descriptions define valid fields for the RopProgress ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
160 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x50.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopOpenStream ROP opens a property for streaming access. For more details about this
operation, see [MS-OXCPRPT] section 2.2.14.
The following descriptions define valid fields for the RopOpenStream ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
PropertyTag
OpenModeFlags
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x2B.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
PropertyTag (4 bytes): A PropertyTag structure that specifies the property of the object to
stream. The format of the PropertyTag structure is specified in [MS-OXCDATA] section 2.9.
OpenModeFlags (1 byte): A flags structure that contains flags that control how the stream is
opened. The possible values are specified in [MS-OXCPRPT] section 2.2.14.1.
The following descriptions define valid fields for the RopOpenStream ROP success response buffer.
161 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... StreamSize
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x2B.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
StreamSize (4 bytes): An unsigned integer that indicates the size of the stream opened.
The following descriptions define valid fields for the RopOpenStream ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x2B.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopReadStream ROP reads bytes from a stream. For more details about this operation, see
[MS-OXCPRPT] section 2.2.15.
The following descriptions define valid fields for the RopReadStream ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
162 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
... MaximumByteCount (optional)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x2C.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
ByteCount (2 bytes): An unsigned integer that specifies the maximum number of bytes to read if
the value is not equal to 0xBABE.
MaximumByteCount (4 bytes): An unsigned integer that specifies the maximum number of bytes
to read if the value of the ByteCount field is equal to 0xBABE.<9> The MaximumByteCount
field is present when the ByteCount field is equal to 0xBABE and is not present otherwise. If the
value of the MaximumByteCount field is greater than 0x80000000, then the RPC SHOULD fail
with error code 0x000004B6.
The following descriptions define valid fields for the RopReadStream ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... DataSize
Data (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x2C.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
DataSize (2 bytes): An unsigned integer that specifies the size, in bytes, of the Data field. The
maximum size is specified in the request buffer by one of the following:
The ByteCount field, when the value of the ByteCount field is not equal to 0xBABE.
The MaximumByteCount field, when the value of the ByteCount field is equal to 0xBABE.
Data (variable): An array of bytes that are the bytes read from the stream. The size of this field, in
bytes, is specified by the DataSize field.
163 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.9.3 RopWriteStream ROP
The RopWriteStream ROP writes bytes to a stream. For more details about this operation, see [MS-
OXCPRPT] section 2.2.16.
The following descriptions define valid fields for the RopWriteStream ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x2D.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
DataSize (2 bytes): An unsigned integer that specifies the size of the Data field.
Data (variable): An array of bytes that specifies the bytes to be written to the stream. The size of
this field, in bytes, is specified by the DataSize field.
The following descriptions define valid fields for the RopWriteStream ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... WrittenSize
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x2D.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
WrittenSize (2 bytes): An unsigned integer that specifies the number of bytes actually written.
164 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.9.4 RopWriteStreamExtended ROP
The RopWriteStreamExtended ROP writes bytes to a stream. For more details about this operation,
see [MS-OXCPRPT] section 2.2.17.
The following descriptions define valid fields for the RopWriteStreamExtended ROP request
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0xA3.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
DataSize (2 bytes): An unsigned integer that specifies the size of the Data field.
Data (variable): An array of bytes that specifies the bytes to be written to the stream. The size of
this field, in bytes, is specified by the DataSize field.
The following descriptions define valid fields for the RopWriteStreamExtended ROP response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... WrittenSize
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation, this field is
set to 0xA3.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
WrittenSize (4 bytes): An unsigned integer that specifies the number of bytes actually written.
165 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.9.5 RopCommitStream ROP
The RopCommitStream ROP commits stream operations. For more details about this operation, see
[MS-OXCPRPT] section 2.2.18.
The following descriptions define valid fields for the RopCommitStream ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x5D.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopCommitStream ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x5D.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopGetStreamSize ROP gets the size of a stream. For more details about this operation, see
[MS-OXCPRPT] section 2.2.19.
The following descriptions define valid fields for the RopGetStreamSize ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
166 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x5E.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
The following descriptions define valid fields for the RopGetStreamSize ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... StreamSize
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x5E.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
StreamSize (4 bytes): An unsigned integer that is the current size of the stream.
The following descriptions define valid fields for the RopGetStreamSize ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x5E.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
167 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.9.7 RopSetStreamSize ROP
The RopSetStreamSize ROP sets the size of a stream. For more details about this operation, see
[MS-OXCPRPT] section 2.2.20.
The following descriptions define valid fields for the RopSetStreamSize ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x2F.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
StreamSize (8 bytes): An unsigned integer that specifies the size of the stream. The server limits
the maximum size of the stream to the value specified in a configuration file. If no value is
specified in a configuration file, then the maximum size is 231 bytes.<10>
The following descriptions define valid fields for the RopSetStreamSize ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x2F.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopSeekStream ROP sets a pointer to a specific offset within a stream. For more details about
this operation, see [MS-OXCPRPT] section 2.2.21.
168 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.9.8.1 RopSeekStream ROP Request Buffer
The following descriptions define valid fields for the RopSeekStream ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Offset
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x2E.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
Origin (1 byte): An enumeration that specifies the origin location for the seek operation. The
possible values for this enumeration are specified in [MS-OXCPRPT] section 2.2.21.1.
The following descriptions define valid fields for the RopSeekStream ROP success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... NewPosition
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x2E.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
NewPosition (8 bytes): An unsigned integer that represents the new position in the stream after
the operation.
169 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
The following descriptions define valid fields for the RopSeekStream ROP failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x2E.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopCopyToStream ROP copies a specified number of bytes from a source stream to a
destination stream. For more details about this operation, see [MS-OXCPRPT] section 2.2.22.
The following descriptions define valid fields for the RopCopyToStream ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
ByteCount
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x3A.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
SourceHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the source Server object is stored. For more
information about Server objects, see section 1.3.1.
DestHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the destination Server object is stored.
ByteCount (8 bytes): An unsigned integer that specifies the number of bytes to be copied.
The following descriptions define valid fields for the RopCopyToStream ROP response buffer.
170 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... ReadByteCount
...
... WrittenByteCount
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x3A.
SourceHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the SourceHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000503.
ReadByteCount (8 bytes): An unsigned integer that specifies the number of bytes read from the
source object.
WrittenByteCount (8 bytes): An unsigned integer that specifies the number of bytes written to the
destination object.
The following descriptions define valid fields for the RopCopyToStream ROP null destination failure
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... DestHandleIndex
... ReadByteCount
...
... WrittenByteCount
...
...
171 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x3A.
SourceHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the SourceHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000503.
DestHandleIndex (4 bytes): An unsigned integer index that MUST be set to the value specified in
the DestHandleIndex field in the request.
ReadByteCount (8 bytes): An unsigned integer that, for this response, SHOULD be set to
0x0000000000000000.<11>
WrittenByteCount (8 bytes): An unsigned integer that, for this response, SHOULD be set to
0x0000000000000000.<12>
The RopLockRegionStream ROP locks a specified range of bytes in a stream. For more details about
this operation, see [MS-OXCPRPT] section 2.2.24.
The following descriptions define valid fields for the RopLockRegionStream ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
... RegionSize
...
... LockFlags
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x5B.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
RegionOffset (8 bytes): An unsigned integer that specifies the byte location in the stream where
the region begins.
RegionSize (8 bytes): An unsigned integer that specifies the size of the region, in bytes.
172 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
LockFlags (4 bytes): A flags structure that contains flags specifying the behavior of the lock
operation. The possible values for this structure are specified in [MS-OXCPRPT] section 2.2.24.1.
The following descriptions define valid fields for the RopLockRegionStream ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x5B.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopUnlockRegionStream ROP unlocks a specified range of bytes in a stream. For more details
about this operation, see [MS-OXCPRPT] section 2.2.25.
The following descriptions define valid fields for the RopUnlockRegionStream ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
... RegionSize
...
... LockFlags
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x5C.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
173 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RegionOffset (8 bytes): An unsigned integer that specifies the byte location in the stream where
the region begins.
RegionSize (8 bytes): An unsigned integer that specifies the size of the region, in bytes.
LockFlags (4 bytes): A flags structure that contains flags specifying the behavior of the lock
operation. The possible values for this structure are specified in [MS-OXCPRPT] section 2.2.25.1.
The following descriptions define valid fields for the RopUnlockRegionStream ROP response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x5C.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopWriteAndCommitStream ROP writes bytes to a stream and commits the stream. For more
details about this operation, see [MS-OXCPRPT] section 2.2.26.
The following descriptions define valid fields for the RopWriteAndCommitStream ROP request
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x90.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
174 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
DataSize (2 bytes): An unsigned integer that specifies the size of the Data field.
Data (variable): An array of bytes to be written to the stream. The size of this field, in bytes, is
specified by the DataSize field.
The response buffer for this ROP is the same as the response buffer for the RopWriteStream ROP,
as specified in section 2.2.9.3.2, except the RopId field is set to 0x90.
The RopCloneStream ROP creates a new Stream object based on the same data as another
Stream object. For more details about this operation, see [MS-OXCPRPT] section 2.2.27.
The following descriptions define valid fields for the RopCloneStream ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x3B.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
The following descriptions define valid fields for the RopCloneStream ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x3B.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
175 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.10 Permission ROPs
The RopModifyPermissions ROP modifies the permissions associated with a folder. For more details
about this operation, see [MS-OXCPERM] section 2.2.2.
The following descriptions define valid fields for the RopModifyPermissions ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x40.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
ModifyFlags (1 byte): A flags structure that contains flags that control the behavior of this
operation. The possible values are specified in [MS-OXCPERM] section 2.2.2.1.
ModifyCount (2 bytes): An unsigned integer that specifies specifies the number of structures
serialized in the PermissionsData field.
The following descriptions define valid fields for the PermissionData Structure.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
PermissionDataFlags (1 byte): A flags structure that contains flags that specify the type of
operation.
176 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
PropertyValues (variable): An array of TaggedPropertyValue structures that are used to specify
and describe the modify operations. The number of structures contained in this field is specified by
the PropertyValueCount field. The format of the TaggedPropertyValue structure is specified in
[MS-OXCDATA] section 2.11.4.
The following descriptions define valid fields for the RopModifyPermissions ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x40.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopGetPermissionsTable ROP gets the permissions table for a folder. For more details about
this operation, see [MS-OXCPERM] section 2.2.1.
The following descriptions define valid fields for the RopGetPermissionsTable ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
TableFlags
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x3E.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
TableFlags (1 byte): A flags structure that contains flags that control the type of table. The
possible values are specified in [MS-OXCPERM] section 2.2.1.1.
177 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
The following descriptions define valid fields for the RopGetPermissionsTable ROP response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x3E.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopModifyRules ROP modifies the rules associated with a folder. For more details about this
operation, see [MS-OXORULE] section 2.2.1.
The following descriptions define valid fields for the RopModifyRules ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x41.
LogonId (1 byte): An unsigned integer that specifies the logon on which the operation is performed.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
ModifyRulesFlags (1 byte): A flags structure that contains flags that specify behavior of this
operation. The possible values are specified in [MS-OXORULE] section 2.2.1.1.
RulesCount (2 bytes): An unsigned integer that specifies the number of structures serialized in the
RuleData field.
178 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RulesData (variable): A list of RuleData structures. The number of structures contained in this
field is specified by the RulesCount field. The format of the RuleData structure is specified in
section 2.2.11.1.1.1.
The following descriptions define valid fields for the RuleData structure.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
The following descriptions define valid fields for the RopModifyRules ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x41.
InputHandleIndex (1 byte): An unsigned integer index that refers to the handle in the Server
object handle table used as input for this operation. For more information about Server
objects, see section 1.3.1.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopGetRulesTable ROP gets the rules table of a folder. For more details about this operation,
see [MS-OXORULE] section 2.2.2.
The following descriptions define valid fields for the RopGetRulesTable ROP request buffer.
179 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
TableFlags
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x3F.
LogonId (1 byte): An unsigned integer that specifies the logon on which the operation is performed.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
TableFlags (1 byte): A flags structure that contains flags that control the type of table. The
possible values are specified in [MS-OXORULE] section 2.2.2.1.
The following descriptions define valid fields for the RopGetRulesTable ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x3F.
OutputHandleIndex (1 byte): An unsigned integer index that refers to the handle in the Server
object handle table specified. For more information about Server objects, see section 1.3.1.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopUpdateDeferredActionMessages ROP updates the entry IDs in the Deferred Action
Messages (DAMs). For more details about this operation, see [MS-OXORULE] section 2.2.3.
The following descriptions define valid fields for the RopUpdateDeferredActionMessages ROP
request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
180 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
... ServerEntryId (variable)
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x57.
LogonId (1 byte): An unsigned integer that specifies the logon on which the operation is performed.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
ServerEntryIdSize (2 bytes): An unsigned integer that specifies the size of the ServerEntryId
field.
ServerEntryId (variable): An array of bytes that specifies the ID of the message on the server. The
size of this field, in bytes, is specified by the ServerEntryIdSize field.
ClientEntryIdSize (2 bytes): An unsigned integer that specifies the size of the ClientEntryId field.
ClientEntryId (variable): An array of bytes that specifies the ID of the downloaded message on the
client. The size of this field, in bytes, is specified by the ClientEntryIdSize field.
The following descriptions define valid fields for the RopUpdateDeferredActionMessages ROP
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x57.
InputHandleIndex (1 byte): An unsigned integer index that refers to the handle in the Server
object handle table specified as the input handle. For more information about Server objects,
see section 1.3.1.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
181 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.12 Fast Transfer ROPs
The following descriptions define valid fields for the RopFastTransferDestinationConfigure ROP
request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
SourceOperation CopyFlags
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x53.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
SourceOperation (1 byte): An enumeration that indicates how the data stream was created on the
source. The possible values for this enumeration are specified in [MS-OXCFXICS] section
2.2.3.1.2.1.1.
CopyFlags (1 byte): A flags structure that contains flags that control the behavior of the transfer
operation. The possible values are specified in [MS-OXCFXICS] section 2.2.3.1.2.1.1.
The following descriptions define valid fields for the RopFastTransferDestinationConfigure ROP
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x53.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
182 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The following descriptions define valid fields for the RopFastTransferDestinationPutBuffer ROP
request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x54.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
TransferDataSize (2 bytes): An unsigned integer that specifies the size of the TransferData field.
TransferData (variable): An array of bytes that contains the data to be uploaded to the destination
fast transfer object. The size of this field, in bytes, is specified by the TransferDataSize field.
The following descriptions define valid fields for the RopFastTransferDestinationPutBuffer ROP
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... TransferStatus
InProgressCount TotalStepCount
Reserved BufferUsedSize
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x54.
183 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
TransferStatus (2 bytes): An enumeration that specifies the current status of the transfer. The
possible values for this enumeration are specified in [MS-OXCFXICS] section 2.2.3.1.2.2.
InProgressCount (2 bytes): An unsigned integer that specifies the number of steps that have been
completed in the current operation.
TotalStepCount (2 bytes): An unsigned integer that specifies the approximate total number of
steps to be completed in the current operation.
Reserved (1 byte): Reserved. The server MUST set this field to 0x00.
BufferUsedSize (2 bytes): An unsigned integer that specifies the buffer size that was used.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation, this field is
set to 0x9D.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
TransferDataSize (2 bytes): An unsigned integer that specifies the size of the TransferData field.
TransferData (variable): An array of bytes that contains the data to be uploaded to the destination
fast transfer object. The size of this field, in bytes, is specified by the TransferDataSize field.
184 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... TransferStatus
InProgressCount
TotalStepCount
Reserved BufferUsedSize
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation, this field is
set to 0x9D.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
TransferStatus (2 bytes): An enumeration that specifies the current status of the transfer. The
possible values for this enumeration are specified in [MS-OXCFXICS] section 2.2.3.1.2.2.
InProgressCount (4 bytes): An unsigned integer that specifies the number of steps that have been
completed in the current operation.
TotalStepCount (4 bytes): An unsigned integer that specifies the approximate total number of
steps to be completed in the current operation.
Reserved (1 byte): Reserved. The server MUST set this field to 0x00.
BufferUsedSize (2 bytes): An unsigned integer that specifies the buffer size that was used.
The RopFastTransferSourceGetBuffer ROP retrieves a stream of data from a fast transfer source
object. For more details about this operation, see [MS-OXCFXICS] section 2.2.3.1.1.5.
The following descriptions define valid fields for the RopFastTransferSourceGetBuffer ROP
request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x4E.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
185 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
BufferSize (2 bytes): An unsigned integer that specifies the buffer size requested.
MaximumBufferSize (2 bytes): An unsigned integer that is present when the BufferSize field is
set to 0xBABE. This value specifies the maximum size limit when the server determines the buffer
size.
The following descriptions define valid fields for the RopFastTransferSourceGetBuffer ROP
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... TransferStatus
InProgressCount TotalStepCount
...
BackoffTime (optional)
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x4E.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
TransferStatus (2 bytes): An enumeration that specifies the current status of the transfer. The
possible values for this enumeration are specified in [MS-OXCFXICS] section 2.2.3.1.1.5.2.
InProgressCount (2 bytes): An unsigned integer that specifies the number of steps that have been
completed in the current operation.
TotalStepCount (2 bytes): An unsigned integer that specifies the approximate number of steps to
be completed in the current operation.
Reserved (1 byte): Reserved. The server MUST set this field to 0x00.
TransferBufferSize (2 bytes): An unsigned integer that specifies the size of the TransferBuffer
field.
TransferBuffer (variable): An array of bytes that is present if the ReturnValue is not 0x00000480
and is not present otherwise. If present, the size of this field, in bytes, is specified by the
TransferBufferSize field.
186 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
BackoffTime (4 bytes): An unsigned integer that is present if the ReturnValue is 0x00000480 and
is not present otherwise. This value specifies the number of milliseconds for the client to wait
before trying this operation again.
The following descriptions define valid fields for the RopFastTransferSourceCopyFolder ROP
request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
CopyFlags SendOptions
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x4C.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
CopyFlags (1 byte): A flags structure that contains flags that control the type of operation. The
possible values are specified in [MS-OXCFXICS] section 2.2.3.1.1.4.1.
SendOptions (1 byte): A flags structure that contains flags that control the behavior of the
operation. The possible values are specified in [MS-OXCFXICS] section 2.2.3.1.1.1.1.
The following descriptions define valid fields for the RopFastTransferSourceCopyFolder ROP
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x4C.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
187 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The following descriptions define valid fields for the RopFastTransferSourceCopyMessages ROP
request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
CopyFlags SendOptions
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x4B.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
MessageIdCount (2 bytes): An unsigned integer that specifies the number of identifiers in the
MessageIds field.
MessageIds (variable): An array of 64-bit identifiers that specifies the messages to copy. The
number of identifiers contained in this field is specified by the MessageIdCount field.
CopyFlags (1 byte): A flags structure that contains flags that control the type of operation. The
possible values are specified in [MS-OXCFXICS] section 2.2.3.1.1.3.1.
SendOptions (1 byte): A flags structure that contains flags that control the behavior of the
operation. The possible values are specified in [MS-OXCFXICS] section 2.2.3.1.1.1.1.
The following descriptions define valid fields for the RopFastTransferSourceCopyMessages ROP
response buffer.
188 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x4B.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The following descriptions define valid fields for the RopFastTransferSourceCopyTo ROP request
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Level CopyFlags
PropertyTags (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x4D.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
Level (1 byte): An unsigned integer that specifies whether descendant subobjects are copied.
CopyFlags (4 bytes): A flags structure that contains flags that control the behavior of the transfer
operation. The possible values are specified in [MS-OXCFXICS] section 2.2.3.1.1.1.1.
189 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
SendOptions (1 byte): A flags structure that contains flags that control the behavior of the
operation. The possible values are specified in [MS-OXCFXICS] section 2.2.3.1.1.1.1.
PropertyTagCount (2 bytes): An unsigned integer that specifies the number of structures in the
PropertyTags field.
The following descriptions define valid fields for the RopFastTransferSourceCopyTo ROP response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x4D.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The following descriptions define valid fields for the RopFastTransferSourceCopyProperties ROP
request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x69.
190 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
Level (1 byte): An unsigned integer that specifies whether descendant subobjects are copied.
CopyFlags (1 byte): A flags structure behavior of the transfer operation. The possible values are
specified in [MS-OXCFXICS] section 2.2.3.1.1.2.1.
SendOptions (1 byte): A flags structure that contains flags that control the behavior of the
operation. The possible values are specified in [MS-OXCFXICS] section 2.2.3.1.1.2.1.
PropertyTagCount (2 bytes): An unsigned integer that specifies the number of structures in the
PropertyTags field.
PropertyTags (variable): An array of PropertyTag structures that specifies the properties to copy.
The format of the PropertyTag structure is specified in [MS-OXCDATA] section 2.9. The number
of structures contained in this field is specified by the PropertyTagCount field.
The following descriptions define valid fields for the RopFastTransferSourceCopyProperties ROP
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x69.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopTellVersion ROP provides the version of the other server in a server-to-client-to-server
upload. For more details about this operation, see [MS-OXCFXICS] section 2.2.3.1.1.6.
The following descriptions define valid fields for the RopTellVersion ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
191 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x86.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
Version (6 bytes): An array of three unsigned 16-bit integers that contains the version information
for the other server. The format of the version number is specified in [MS-OXCRPC] section
3.1.4.1.3.1.
The following descriptions define valid fields for the RopTellVersion ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x86.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopSynchronizationConfigure ROP configures a synchronization object. For more details about
this operation, see [MS-OXCFXICS] section 2.2.3.2.1.1.
The following descriptions define valid fields for the RopSynchronizationConfigure ROP request
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
192 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
SynchronizationType SendOptions SynchronizationFlags
...
SynchronizationExtraFlags
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x70.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
SendOptions (1 byte): A flags structure that controls the behavior of the operation. The possible
values are specified in [MS-OXCFXICS] section 2.2.3.1.1.1.1.
SynchronizationFlags (2 bytes): A flags structure that contains flags that control the behavior of
the synchronization. The possible values are specified in [MS-OXCFXICS] section 2.2.3.2.1.1.1.
RestrictionDataSize (2 bytes): An unsigned integer that specifies the length, in bytes, of the
RestrictionData field.
SynchronizationExtraFlags (4 bytes): A flags structure that contains flags control the additional
behavior of the synchronization. The possible values are specified in [MS-OXCFXICS] section
2.2.3.2.1.1.1.
PropertyTagCount (2 bytes): An unsigned integer that specifies how many PropertyTag structures
are present in the PropertyTags field.
PropertyTags (variable): An array of PropertyTag structures that specifies the property tags to
be used for the synchronization process. The number of structures contained in this field is
specified by the PropertyTagCount field. The format of the PropertyTag structure is specified in
[MS-OXCDATA] section 2.9.
The following descriptions define valid fields for the RopSynchronizationConfigure ROP response
buffer.
193 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x70.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x72.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
ImportFlag (1 byte): A flags structure that contains flags that control the behavior of the
synchronization. The possible values are specified in [MS-OXCFXICS] section 2.2.3.2.4.2.1.
194 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
[MS-OXCDATA] section 2.11.4, and possible properties to be set are specified in [MS-OXCFXICS]
section 2.2.3.2.4.2.1.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... MessageId
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x72.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x72.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
195 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.13.3 RopSynchronizationImportReadStateChanges ROP
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x80.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
MessageReadStatesSize (2 bytes): An unsigned integer that specifies the size, in bytes, of the
MessageReadStates field.
The following descriptions define valid fields for the MessageReadState structure.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
MarkAsRead
MessageIdSize (2 bytes): An unsigned integer that specifies the size of the MessageId field.
MessageId (variable): An array of bytes that identifies the message to be marked as read or
unread. The size of this field, in bytes, is specified by the MessageIdSize field.
MarkAsRead (1 byte): A Boolean that specifies whether to mark the message as read or not.
196 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.13.3.2 RopSynchronizationImportReadStateChanges ROP Response Buffer
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x80.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x73.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
197 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
HierarchyValues (variable): An array of TaggedPropertyValue structures that specify hierarchy-
related properties of the folder. The number of structures contained in this field is specified by the
HierarchyValueCount field. The format of the TaggedPropertyValue structure is specified in
[MS-OXCDATA] section 2.11.4, and possible properties to be set are specified in [MS-OXCFXICS]
section 2.2.3.2.4.3.1.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... FolderId
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x73.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
198 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x73.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The following descriptions define valid fields for the RopSynchronizationImportDeletes ROP
request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x74.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
ImportDeleteFlags (1 byte): A flags structure that contains flags that specify options for the
imported deletions. The possible values for this field are specified in [MS-OXCFXICS] section
2.2.3.2.4.5.1.
The following descriptions define valid fields for the RopSynchronizationImportDeletes ROP
response buffer.
199 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x74.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The following descriptions define valid fields for the RopSynchronizationImportMessageMove ROP
request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
SourceMessageIdSize
SourceMessageId (variable)
...
PredecessorChangeListSize
PredecessorChangeList (variable)
...
DestinationMessageIdSize
DestinationMessageId (variable)
...
200 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
ChangeNumberSize
ChangeNumber (variable)
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x78.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
SourceFolderIdSize (4 bytes): An unsigned integer that specifies the size of the SourceFolderId
field.
SourceFolderId (variable): An array of bytes that identifies the parent folder of the source
message. The size of this field, in bytes, is specified by the SourceFolderIdSize field.
SourceMessageId (variable): An array of bytes that identifies the source message. The size of this
field, in bytes, is specified by the SourceMessageIdSize field.
PredecessorChangeList (variable): An array of bytes. The size of this field, in bytes, is specified
by the PredecessorChangeListSize field. This field is specified in [MS-OXCFXICS] section
2.2.2.3.
DestinationMessageId (variable): An array of bytes that identifies the destination message. The
size of this field, in bytes, is specified by the DestinationMessageIdSize field.
ChangeNumberSize (4 bytes): An unsigned integer that specifies the size of the ChangeNumber
field.
ChangeNumber (variable): An array of bytes that specifies the change number of the message.
The size of this field, in bytes, is specified by the ChangeNumberSize field.
The following descriptions define valid fields for the RopSynchronizationImportMessageMove ROP
success response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
201 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
... MessageId
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x78.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
The following descriptions define valid fields for the RopSynchronizationImportMessageMove ROP
failure response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x78.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The following descriptions define valid fields for the RopSynchronizationOpenCollector ROP
request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
IsContentsCollector
202 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x7E.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
IsContentsCollector (1 byte): A Boolean that specifies whether this synchronization upload context
is for contents or for hierarchy.
The following descriptions define valid fields for the RopSynchronizationOpenCollector ROP
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x7E.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The following descriptions define valid fields for the RopSynchronizationGetTransferState ROP
request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x82.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
203 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
The following descriptions define valid fields for the RopSynchronizationGetTransferState ROP
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x82.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... TransferBufferSize
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x75.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
204 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
StateProperty (4 bytes): A PropertyTag structure. The possible values for this field are specified
in [MS-OXCFXICS] section 2.2.3.2.2.1.1. The format of the PropertyTag structure is specified in
[MS-OXCDATA] section 2.9.
TransferBufferSize (4 bytes): An unsigned integer that specifies the size of the stream to be
uploaded.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x75.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x76.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
205 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
StreamDataSize (4 bytes): An unsigned integer that specifies the size, in bytes, of the
StreamData field.
StreamData (variable): An array of bytes that contains the state stream data to be uploaded. The
size of this field, in bytes, is specified by the StreamDataSize field.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x76.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x77.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
206 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x77.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The following descriptions define valid fields for the RopSetLocalReplicaMidsetDeleted ROP
request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... LongTermIdRangeCount
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x93.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
DataSize (2 bytes): An unsigned integer that specifies the size of both the
LongTermIdRangeCount and LongTermIdRanges fields.
207 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.13.12.1.1LongTermIdRange Structure
The following descriptions define valid fields for the LongTermIdRange structure.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
MinLongTermId
...
...
...
...
...
MaxLongTermId
...
...
...
...
...
MinLongTermId (24 bytes): A LongTermId structure that specifies the beginning of a range. The
format of the LongTermId structure is specified in [MS-OXCDATA] section 2.2.1.3.1.
MaxLongTermId (24 bytes): A LongTermId structure that specifies the end of a range. The format
of the LongTermId structure is specified in [MS-OXCDATA] section 2.2.1.3.1.
The following descriptions define valid fields for the RopSetLocalReplicaMidsetDeleted ROP
response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x93.
208 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopGetLocalReplicaIds ROP reserves a range of IDs to be used by a local replica. For more
details about this operation, see [MS-OXCFXICS] section 2.2.3.2.4.7.
The following descriptions define valid fields for the RopGetLocalReplicaIds ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x7F.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
IdCount (4 bytes): An unsigned integer that specifies the number of IDs to reserve.
The following descriptions define valid fields for the RopGetLocalReplicaIds ROP success response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
... ReplGuid
...
...
...
... GlobalCount
...
209 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x7F.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to 0x00000000.
ReplGuid (16 bytes): GUID. This field contains the replica GUID that is shared by the IDs.
GlobalCount (6 bytes): An array of bytes that specifies the first value in the reserved range.
The following descriptions define valid fields for the RopGetLocalReplicaIds ROP failure response
buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x7F.
InputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the InputHandleIndex field in the request.
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP. For this response,
this field is set to a value other than 0x00000000.
The RopRegisterNotification ROP registers for notification events. For more details about this
operation, see [MS-OXCNOTIF] section 2.2.1.2.1.
The following descriptions define valid fields for the RopRegisterNotification ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
FolderId (optional)
210 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
...
MessageId (optional)
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x29.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
OutputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the output Server object will be stored.
NotificationTypes (2 bytes): A flags structure that contains flags that specify the types of events
to register for. The possible values are specified in [MS-OXCNOTIF] section 2.2.1.2.1.1.
Reserved (1 byte): A flags structure. This field MUST be set to zero. It MUST be present if the
Extended (0x0400) flag is set in the NotificationTypes field; otherwise, if the Extended flag is
any other value, this field MUST be absent.
WantWholeStore (1 byte): A Boolean that specifies whether the notification is scoped to the
mailbox instead of a specific folder or message.
FolderId (8 bytes): An identifier that is present when the value of the WantWholeStore field is
zero and is not present when it is nonzero. This value specifies the folder to register notifications
for. If the notification is scoped to a specific folder, MessageId SHOULD be zero.
MessageId (8 bytes): An identifier that is present when the value of the WantWholeStore field is
zero and is not present when it is nonzero. This value specifies the message to register
notifications for. If the notification is scoped to a specific message, FolderId SHOULD specify the
parent folder of the message.
The following descriptions define valid fields for the RopRegisterNotification ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x29.
OutputHandleIndex (1 byte): An unsigned integer index that MUST be set to the value specified in
the OutputHandleIndex field in the request.
211 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
ReturnValue (4 bytes): An unsigned integer that specifies the status of the ROP.
The RopNotify ROP provides notification event data to the client. There is no request buffer for this
ROP. For more details about this operation, see [MS-OXCNOTIF] section 2.2.1.4.1.
The following descriptions define valid fields for the RopNotify ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId NotificationHandle
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x2A.
NotificationHandle (4 bytes): A Server object handle that specifies the notification Server
object associated with this notification event.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this notification
event.
NotificationData (variable): Various structures. The various structures for this field are specified in
[MS-OXCNOTIF] section 2.2.1.4.1.1.
The RopPending ROP notifies the client that there are pending notifications on a session. There is no
request buffer for this ROP. For more details about this operation, see [MS-OXCNOTIF] section
2.2.1.3.4.
The following descriptions define valid fields for the RopPending ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId SessionIndex
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x6E.
SessionIndex (2 bytes): An unsigned integer index that specifies which session has pending
notifications.
212 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
2.2.15 Other ROPs
The RopBufferTooSmall ROP notifies the client that there is insufficient space to return all ROP
responses.
The following descriptions define valid fields for the RopBufferTooSmall ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0xFF.
SizeNeeded (2 bytes): An unsigned integer that specifies the size required for the ROP output
buffer.
RequestBuffers (variable): An array of bytes that contains the section of the ROP input buffer that
was not executed because of the insufficient size of the ROP output buffer. The size of the array is
equal to the size of the space remaining in the ROP output buffer. The layout of the ROP input
buffer and ROP output buffer is specified in section 2.2.1.
The RopBackoff ROP notifies the client that the server is busy and is requesting that the client retry
later.
The following descriptions define valid fields for the RopBackoff ROP response buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
...
...
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0xF9.
213 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
LogonId (1 byte): An unsigned integer that specifies the logon to which the RopBackoff ROP
response applies.
Duration (4 bytes): An unsigned integer that specifies the number of milliseconds to apply a logon
backoff.
BackoffRopCount (1 byte): An unsigned integer that specifies the number of structures in the
BackoffRopData field.
AdditionalDataSize (2 bytes): An unsigned integer that specifies the size of the AdditionalData
field.
AdditionalData (variable): An array of bytes that specifies additional information about the backoff
response. The size of this field, in bytes, is specified by the AdditionalDataSize field.
The following descriptions define valid fields for the BackoffRop structure.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopIdBackoff Duration
...
RopIdBackoff (1 byte): An unsigned integer index that identifies the ROP to apply the ROP backoff
to.
Duration (4 bytes): An unsigned integer that specifies the number of milliseconds to apply a ROP
backoff.
The RopRelease ROP releases all resources associated with a Server object. For more details about
the dependencies of Server objects, see section 3.1.5.3.
The following descriptions define valid fields for the RopRelease ROP request buffer.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
RopId (1 byte): An unsigned integer that specifies the type of ROP. For this operation this field is
set to 0x01.
LogonId (1 byte): An unsigned integer that specifies the logon associated with this operation.
214 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
InputHandleIndex (1 byte): An unsigned integer index that specifies the location in the Server
object handle table where the handle for the input Server object is stored. For more
information about Server objects, see section 1.3.1.
215 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
3 Protocol Details
This section describes a conceptual model of possible data organization that an implementation
maintains to participate in this protocol. The described organization is provided to facilitate the
explanation of how the protocol behaves. This document does not mandate that implementations
adhere to this model as long as their external behavior is consistent with that described in this
document.
The following abstract data model (ADM) elements are maintained by the client.
Server Object Handle Collection: A collection of valid Server object handles received from the
server but not yet released.
3.1.2 Timers
None.
3.1.3 Initialization
None.
The client creates a ROP input buffer consisting of ROP requests for operations to be performed on
the server. The client sends the ROP input buffer the server and receives a ROP output buffer back
from the server.
The layout of the ROP input buffer and the ROP output buffer is specified in section 2.2.1.
A ROP input buffer is constructed by the client and sent to the server. The client packages its ROP
requests together in the intended processing order and creates an associated Server object handle
table.
When assembling a ROP input buffer, the client MUST use a Server object handle table large enough
to include an entry for the largest index used by the ROP requests. Each entry that is referenced only
as input for ROPs MUST be filled in with the handle of the Server object that is intended to be the
input of the operation. Each entry that is referenced only as output SHOULD be filled in with the
0xFFFFFFFF value. Each entry that is referenced first as an output index and then as an input index
SHOULD also be initialized to the 0xFFFFFFFF value.
Multiple ROPs in a ROP input buffer can use the same Server object handle table index. For example, a
RopOpenFolder ROP (section 2.2.4.1) can specify index 1 as the location to place the handle for the
folder Server object. In the same ROP input buffer, a RopGetContentsTable ROP (section 2.2.4.14)
can specify index 1 as the location for the input Server object handle.
216 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
3.1.4.2 Logging On
The client logs on to a message store by using the RopLogon ROP (section 2.2.3.1) before
attempting any additional ROPs on the message store. Prior to logging on, the client begins an RPC
session by calling the EcDoConnectEx method, as specified in [MS-OXCRPC] section 3.1.4.1, or the
Connect request type<13>, as specified in [MS-OXCMAPIHTTP] section 2.2.4.1. Once the client has
successfully connected to the server, the client begins a logon session by sending a RopLogon ROP
request (section 2.2.3.1.1).
Each logon session is identified by a logon ID created by the client. The logon ID is associated with a
Logon object, which is created by the server during its processing of a RopLogon ROP request. The
logon ID is initially used in the RopLogon ROP request and is then used in all subsequent ROPs that
are issued on the logon session. The client specifies the logon ID in the LogonId field of the ROP
request buffer of each ROP. Any 8-bit integer value is allowed for the logon ID, and the client does
not have to specify logon IDs in a certain numeric order. The logon ID MUST be unique per RPC
session (that is, per call to the EcDoConnectEx method).
The client can issue multiple RopLogon ROP requests per RPC session. If the client specifies an active
logon ID, then the current logon session is released and replaced with the new one. The client
manages the active logon ID by use of a Logon Collection abstract data model element.
The client receives the ROP responses in the ROP output buffer. These ROP responses appear in the
ROP output buffer in the same order as they were sent in the ROP input buffer. The ROP output buffer
can also include ROP responses that do not have corresponding ROP requests in the ROP input
buffer. These extra ROP responses include the RopBackoff ROP (section 2.2.15.2), the
RopBufferTooSmall ROP (section 2.2.15.1), the RopNotify ROP (section 2.2.14.2), and the
RopPending ROP (section 2.2.14.3).
Any client reporting its version as 12.00.4228.0000 or later, as specified in [MS-OXCRPC] section
3.2.4.1.3.2, MUST support processing the RopBackoff ROP response buffer. The layout of this ROP
is specified in section 2.2.15.2.
The RopBackoff ROP can appear at any location within the RopsList field of the ROP output buffer.
This ROP response indicates that the server requests the client delay the resending of ROP
requests for the specified logon or for a type of ROP for a specified length of time. When this
response contains a nonzero value in the RopIdBackoff field, as specified in section 2.2.15.2.1.1, it
specifies the ROP request that is required to be delayed. The ROP response that was delayed and all
subsequent ROP responses will not be in the buffer. When the BackoffRopCount field, as specified in
section 2.2.15.2.1, is set to 0x00, all ROP requests for that logon are to be delayed.
The RopBufferTooSmall ROP response is the last ROP response within the RopsList field of the
ROP output buffer, as specified in section 2.2.1. The RopBufferTooSmall ROP response indicates that
the size of the ROP output buffer is insufficient to return responses for all of the ROP requests sent.
The RequestBuffers field of the RopBufferTooSmall ROP response includes all ROP requests that
were not processed by the server. The client SHOULD<14> resend the unprocessed ROP requests in a
new call to the server via the EcDoRpcExt2 method or the Execute request type<15>. The value
that the client specifies in the pcbOut parameter of the EcDoRpcExt2 method MUST be greater than
217 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
or equal to the value of the SizeNeeded field of the RopBufferTooSmall ROP response. For more
details about the EcDoRpcExt2 method and the pcbOut parameter, see [MS-OXCRPC] section
3.1.4.2. For more details about the Execute request type, see [MS-OXCMAPIHTTP] section 2.2.4.2.
The RopNotify (section 2.2.14.2) and RopPending (section 2.2.14.3) ROP responses appear at the
end of the RopsList field of the ROP output buffer, as specified in section 2.2.1. A RopPending ROP
response SHOULD<16> be present only if the ROP output buffer does not contain all queued
RopNotify ROP responses. For more details about how the client processes these ROPs, see [MS-
OXCNOTIF] section 3.2.5.
Once the client receives a RopProgress ROP response (section 2.2.8.13), all subsequent
RopProgress ROP requests MUST use the same Server object handle table values as those used
in the first RopProgress ROP request.
The client MUST use the RopRelease ROP (section 2.2.15.3) to release an object. The client MUST
release an owned object before releasing the object's owner. For example, a Stream object that is
owned by a folder is released before the owning folder is released. A summary of object owners and
the objects that they can own is provided below.
218 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
A fast-transfer download context that is opened by a RopFastTransferSourceCopyTo ROP or
RopFastTransferSourceCopyProperties ROP
In a ROP request, the code page for strings MUST match the code page associated with the affected
Server object. The code page for a Server object is determined as follows:
If the Server object is owned by a message, then the Server object uses the same code page that
the message uses. The message's properties and the Server objects owned by the message use
the same code page that the message uses.
If the Server object is not owned by a message, then the Server object uses the code page
specified in the EcDoConnectEx method or a similar RPC method, or the Connect request
type<17>. For more details about the EcDoConnectEx method and RPC, see [MS-OXCRPC]
section 3.1.4.1. For more details about the Connect request type, see [MS-OXCMAPIHTTP]
section 2.2.4.1.
None.
When the client shuts down, before it disconnects from the server, it SHOULD send RopRelease ROP
requests (section 2.2.15.3) to the server to clean up all Server objects it had created but had not
yet released.
This section describes a conceptual model of possible data organization that an implementation
maintains to participate in this protocol. The described organization is provided to facilitate the
explanation of how the protocol behaves. This document does not mandate that implementations
adhere to this model as long as their external behavior is consistent with that specified in this
document.
Server Object Map: A mapping of Server object handles and Server objects. There is one map for
each logon Server object.
219 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
3.2.2 Timers
None.
3.2.3 Initialization
When a connection is first set up between a client and server via either the ExDoConnectEx method,
as specified in [MS-OXCRPC] section 3.1.4.1, or the Connect request type<18>, as specified in [MS-
OXCMAPIHTTP] section 2.2.4.1, the Server Object Map and Logon Map ADM elements are empty.
When events that the client has registered for occur, the server sends one or more RopNotify ROP
responses (section 2.2.14.2). If not all queued RopNotify ROP responses can fit in the ROP output
buffer, the server SHOULD<19> include a RopPending ROP response (section 2.2.14.3.1) in the ROP
output buffer. More detailed information about notifications can be found in [MS-OXCNOTIF].
When the server determines that a ROP request is required to be delayed, the server MUST either
respond with a RopBackoff ROP response (section 2.2.15.2) or fail the ExDoRpcExt2 method, as
specified in [MS-OXCRPC] section 3.1.4.2, or the Execute request type,<20> as specified in [MS-
OXCMAPIHTTP] section 2.2.4.2.
If the server version, as defined in [MS-OXCRPC] section 3.1.4.1.3.2. is greater than 08.00.0525.0
and the client version, as defined in [MS-OXCRPC] section 3.2.4.1.3.2, is greater than 12.0.4228.0,
the server SHOULD substitute a RopBackoff ROP response in place of the response for the delayed
ROP request. If either the client or the server is an earlier version, then the server MUST instead fail
either the ExDoRpcExt2 method by raising the RPC_S_SERVER_TOO_BUSY exception, as specified in
[MS-OXCRPC], or the Execute request type with an HTTP status code of 200, a value of 0 (success)
in the X-ResponseCode header, and a value of 0x000006BB in the StatusCode field of the Execute
request type failure response body, as specified in [MS-OXCMAPIHTTP].
If ROPs are specified in a RopBackoff ROP response, all subsequent ROP requests SHOULD NOT be
processed.
When the server determines that there is not enough space in the ROP output buffer, as specified in
section 2.2.1, for the remaining ROP responses, it MUST NOT process the remaining ROPs. The
server responds in one of the following ways.
If the ROP output buffer can be resized to accommodate the remaining ROPs, then the server
MUST send a RopBufferTooSmall ROP response (section 2.2.15.1). In this case, the client can
resubmit the ROP requests in either a new EcDoRpcExt2 method call with the pcbOut
parameter set to an appropriate value, as specified in [MS-OXCRPC] section 3.1.4.2, or a new
Execute request type with the MaxRopOut field set to an appropriate value,<21> as specified in
[MS-OXCMAPIHTTP] section 2.2.4.2.1. For details about how the client processes a
RopBufferTooSmall ROP response, see section 3.1.5.1.2.
If one of the ROP responses will not fit in the ROP output buffer when either the pcbOut parameter
of the EcDoRpcExt2 response, as specified in [MS-OXCRPC] section 3.1.4.2, or the
RopBufferSize field of the Execute request type success response body, as specified in [MS-
OXCMAPIHTTP] section 2.2.4.2.2, is set to the maximum value, then the server SHOULD<22> fail
220 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
the EcDoRpcExt2 method with a return value of 0x0000047D or fail the Execute request type
with a value of 0x0000047D in the StatusCode field.
Some ROP response buffers are dynamically sized based on the amount of available space in the
ROP output buffer. If the ROP output buffer is not large enough for the minimum size of a dynamically
sized ROP response buffer followed by subsequent ROP response buffers, then the server sends the
RopBufferTooSmall ROP.
When processing a ROP input buffer received from a client, the server MUST process the ROP requests
in the order they are specified in the RopsList field and MUST NOT process more than one ROP input
buffer concurrently for a connection. The ROP responses in the ROP output buffer MUST be in the
same order in which they were processed.
If the server is unable to parse the ROP requests in the ROP input buffer, the RPC MUST fail by
returning 0x000004B6.
During processing of a ROP request, the server resolves the Server object handle table index to a
Server object. If the index is invalid, the server SHOULD<23> fail the ROP with the ReturnValue
field set to 0x000004B9. Any index used for input is converted into the corresponding Server object by
looking up the handle in the Server object handle table and then looking up the Server object in the
Server Object Map ADM element associated with the logon for the ROP request. If any lookup in
either the Logon Map ADM element or the Server Object Map ADM element fails, the server
SHOULD<24> fill in a failure ROP response with a nonzero return value.
After successful processing of a ROP request that created a Server object, the server MUST assign an
unused Server object handle to the object and record the mapping in the Server Object Map ADM
element for the logon associated with the ROP. The handle assigned is then set in the Server object
handle table at the location specified by the output index in the ROP request and can be used by
subsequent ROP requests in the same ROP input buffer.
Because the Server object handle value 0xFFFFFFFF is used to initialize unused entries of a Server
object handle table, a server MUST NOT assign that value to a created Server object.
The server constructs the ROP output buffer after processing the ROP input buffer. The ROP output
buffer includes a list of ROP responses and a modified Server object handle table. The ROP
responses in the ROP output buffer MUST be in the same order in which they were processed.
The Server object handle table MUST be large enough to contain an entry for the highest Server
object handle table index specified in the ROP responses. The table can be a smaller size compared to
the table in the ROP input buffer if entries at the end of the table were not referenced. The server
MUST preserve the order of entries in the Server object handle table between the ROP input buffer
and the ROP output buffer.
221 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
When the server receives a RopRelease ROP request, as specified in section 2.2.15.3, the server
MUST remove the mapping for the Server object handle from the Server Object Map ADM element
and release the resources associated with it.<25> The same Server object handle can now be reused
for another Server object. If the Server object specified is a logon Server object, then the server
MUST also remove it from the Logon Map ADM element.
Unlike all other ROP requests, the RopRelease ROP does not have any associated ROP response.
The server MUST NOT return any response for a RopRelease ROP request. Any errors resulting from
the processing of this ROP MUST be ignored and not sent back to the client.
The error codes returned by the server when the object on the server has been released or becomes
invalid are contained in the following table. These codes are valid for whatever object is represented
by the Server object handle.
None.
3.2.7.1 Disconnecting
When the client disconnects, the server MUST release all Server objects, Logon Map ADM elements,
and Server Object Map ADM elements associated with the connection.
222 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
4 Protocol Examples
In the empty buffer scenario, the ROP request buffer contains no ROPs and no Server object
handles. This type of buffer can be used by a client when it expects to receive extra information in
the ROP output buffer, such as pending notifications.
02 00
RopSize: 02 00
Rops: <empty>
ServerObjectHandleTable: <empty>
In the single ROP request scenario, the buffer contains a single ROP that has an input index. The
ServerObjectHandleTable field is offset from the beginning of the buffer by the number of bytes
specified in the RopSize field. The Server object handle table in this buffer contains an unused
entry.
09 00 15 01 01 02 01 FF 0F 6D 00 00 00 56 00 00 00
RopSize: 09 00
Rop:
LogonId: 01
InputHandleIndex: 01
QueryRowsFlags: 02
ForwardRead: 01
RowCount: FF 0F
ServerObjectHandleTable:
6D 00 00 00 (Handle 0, unused)
In the multiple ROP request scenario, the buffer consists of two ROP requests. The first is a
RopOpenFolder ROP request (section 2.2.4.1), and the second is a RopGetHierarchyTable ROP
request (section 2.2.4.13). The input for the second ROP is the output for the first ROP. All output
handles are initialized to 0xFFFFFFFF.
223 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
14 00 02 00 00 01 01 00 59 65 73 73 69 72 00 04 00 01 02 04 6E 00 00 00 FF FF FF FF FF FF FF
FF
RopSize: 14 00
Rops:
RopId: 02 (RopOpenFolder)
LogonId: 00
InputHandleIndex: 00
OutputHandleIndex 01
OpenModeFlags: 00
RopId: 04 (RopGetHierarchyTable)
LogonId: 00
InputHandleIndex: 01
OutputHandleIndex: 02
TableFlags: 04
ServerObjectHandleTable:
In the RopRelease ROP request scenario, the buffer contains a pair of RopRelease ROP requests
(section 2.2.15.3). These two ROPs are releasing two different Server objects, based on the
different Server object handles that they reference.
08 00 01 00 00 01 00 01 6F 00 00 00 6E 00 00 00
RopSize: 08 00
Rops:
RopId: 01 (RopRelease)
LogonId: 00
InputHandleIndex: 00
RopId: 01 (RopRelease)
LogonId: 00
224 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
InputHandleIndex: 01
ServerObjectHandleTable:
1C 00 FF 2C 00 03 00 00 01 FF 0F 01 00 15 89 00 78 27 1E 03 01 00 15 89 00 78 2F BB 12 00 00
00 FF FF FF FF
RopSize: 1C 00
Rops:
RopId: FF (RopBufferTooSmall)
RopId: 03 (RopOpenMessage)
LogonId: 00
InputHandleIndex: 00
OutputHandleIndex: 01
CodePageID: FF 0F
FolderId: 01 00 15 89 00 78 27 1E
OpenModeFlags: 03
MessageId: 01 00 15 89 00 78 2F BB
ServerObjectHandleTable:
In the logon RopBackoff ROP response scenario, the response buffer contains a RopBackoff ROP
response (section 2.2.15.2) in the same buffer as a RopSetColumns ROP response (section 2.2.5.1).
The RopBackoff ROP contains no information specific to a ROP but instead a suggested duration of
the delay before the logon be retried.
225 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
12 00 12 00 00 00 00 00 00 F9 00 34 12 00 00 00 00 00 28 00 00 00
RopSize: 12 00
Rops:
RopId: 12 (RopSetColumns)
InputHandleIndex: 00
ReturnValue: 00 00 00 00
TableStatus: 00
RopId: F9 (RopBackoff)
LogonId: 00
BackoffRopCount: 00
AdditionalDataSize: 00 00
ServerObjectHandleTable:
In the RopBackoff ROP response scenario, the client has sent a RopOpenFolder ROP request
(section 2.2.4.1) and a RopCreateFolder ROP request (section 2.2.4.2) in the same input buffer. The
output buffer contains a RopBackoff ROP response (section 2.2.15.2) and a successful
RopOpenFolder ROP response. The RopBackoff ROP response contains information about only the
RopCreateFolder ROP. The server is including the RopBackoff ROP response because it is too busy
to complete processing of the RopCreateFolder ROP request.
18 00 02 01 00 00 00 00 00 00 F9 00 00 00 00 00 01 1C 17 4F 04 00 00 00 0A 00 00 00 24 00 00
00
RopSize: 18 00
Rops:
RopId: 02 (RopOpenFolder)
OutputHandleIndex: 01
HasRules: 00
IsGhosted: 00
RopId: F9 (RopBackoff)
LogonId: 00
Duration: 00 00 00 00
226 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
BackoffRopCount: 01
RopIdBackoff: 1C (RopCreateFolder)
AdditionalDataSize: 00 00
ServerObjectHandleTable:
0A 00 00 00 (Handle 0, unused)
227 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
5 Security
None.
None.
228 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
6 Appendix A: Product Behavior
The information in this specification is applicable to the following Microsoft products or supplemental
software. References to product versions include updates to those products.
Exceptions, if any, are noted in this section. If an update version, service pack or Knowledge Base
(KB) number appears with a product name, the behavior changed in that update. The new behavior
also applies to subsequent updates unless otherwise specified. If a product edition appears with the
product version, behavior is different in that product edition.
Unless otherwise specified, any statement of optional behavior in this specification that is prescribed
using the terms "SHOULD" or "SHOULD NOT" implies product behavior in accordance with the
SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term "MAY" implies that the
product does not follow the prescription.
<1> Section 2.1: Exchange 2003, Exchange 2007, Exchange 2010, the initial release of Exchange
2013, Office Outlook 2003, Office Outlook 2007, Outlook 2010, and the initial release of Outlook 2013
do not support the Execute request type. The Execute request type was introduced in Microsoft
Outlook 2013 Service Pack 1 (SP1) and Microsoft Exchange Server 2013 Service Pack 1 (SP1).
<2> Section 2.2.1: Exchange 2003, Exchange 2007, Exchange 2010, the initial release of Exchange
2013, Office Outlook 2003, Office Outlook 2007, Outlook 2010, and the initial release of Outlook 2013
do not support the Execute request type. The Execute request type was introduced in Outlook 2013
SP1 and Exchange 2013 SP1.
<3> Section 2.2.2: Exchange 2003 and Exchange 2007 behavior is undefined when they encounter a
reserved value in a RopId field.
<4> Section 2.2.2: Exchange 2003, Exchange 2007, Exchange 2010, the initial release of Exchange
2013, Office Outlook 2003, Office Outlook 2007, Outlook 2010, and the initial release of Outlook 2013
do not support the Execute request type. The Execute request type was introduced in Outlook 2013
SP1 and Exchange 2013 SP1.
<5> Section 2.2.3.1.3: Exchange 2007 does not set the PerUserGuid field to an empty GUID.
<6> Section 2.2.7.9: Outlook 2010 does not use the RopOptionsData ROP (section 2.2.7.9).
229 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
<7> Section 2.2.7.9.2: Exchange 2003, Exchange 2007, and Exchange 2010 do not return an empty
array in the OptionsInfo field.
<8> Section 2.2.7.9.3: Exchange 2007 sets the ReturnValue field for the RopOptionsData ROP
response (section 2.2.7.9) to 0x00000000 regardless of the failure of the ROP.
<9> Section 2.2.9.2.1: Exchange 2003 limits the stream size to 32 kilobytes. Therefore, if the value
of the ByteCount field in the RopReadStream ROP request buffer (section 2.2.9.2) is greater than
0x8000, the server returns the RopBufferTooSmall ROP (section 2.2.15.1). The
MaximumByteCount field is never present in the request buffer because the ByteCount field is
never set to 0xBABE.
<10> Section 2.2.9.7.1: Exchange 2003 and Exchange 2007 do not use a configuration setting and
limit the maximum size of the stream to 231 bytes.
<11> Section 2.2.9.9.3: Exchange 2003 and Exchange 2007 do not set the field to
0x0000000000000000, but the nonzero value has no meaning.
<12> Section 2.2.9.9.3: Exchange 2003 and Exchange 2007 do not set the field to
0x0000000000000000, but the nonzero value has no meaning.
<13> Section 3.1.4.2: Exchange 2003, Exchange 2007, Exchange 2010, the initial release of
Exchange 2013, Office Outlook 2003, Office Outlook 2007, Outlook 2010, and the initial release of
Outlook 2013 do not support the Connect request type. The Connect request type was introduced in
Outlook 2013 SP1 and Exchange 2013 SP1.
<14> Section 3.1.5.1.2: In Update Rollup 3 for Exchange Server 2010 Service Pack 2 (SP2), if the
first ROP in the RPC buffer creates a response that exceeds the maximum ROP buffer size and there
are no additional ROPs in the RPC buffer, then the server returns the ecBufferTooSmall error to fail the
ROP instead of returning the RopBufferTooSmall ROP (section 2.2.15.1). Failing the ROP when it
satisfies these conditions indicates to the client that there is no client action possible to make that ROP
response fit in the ROP buffer.
<15> Section 3.1.5.1.2: Exchange 2003, Exchange 2007, Exchange 2010, the initial release of
Exchange 2013, Office Outlook 2003, Office Outlook 2007, Outlook 2010, and the initial release of
Outlook 2013 do not support the Execute request type. The Execute request type was introduced in
Outlook 2013 SP1 and Exchange 2013 SP1.
<16> Section 3.1.5.1.3: Exchange 2003 and Exchange 2007 include a RopPending ROP response
(section 2.2.14.3) even though the ROP output buffer contains all queued RopNotify ROP responses
(section 2.2.14.2).
<17> Section 3.1.5.4: Exchange 2003, Exchange 2007, Exchange 2010, the initial release of
Exchange 2013, Office Outlook 2003, Office Outlook 2007, Outlook 2010, and the initial release of
Outlook 2013 do not support the Connect request type. The Connect request type was introduced in
Outlook 2013 SP1 and Exchange 2013 SP1.
<18> Section 3.2.3: Exchange 2003, Exchange 2007, Exchange 2010, the initial release of Exchange
2013, Office Outlook 2003, Office Outlook 2007, Outlook 2010, and the initial release of Outlook 2013
do not support the Connect request type. The Connect request type was introduced in Outlook 2013
SP1 and Exchange 2013 SP1.
<19> Section 3.2.4.1: Exchange 2003 and Exchange 2007 include a RopPending ROP response
(section 2.2.14.3) even though all queued RopNotify ROP responses (section 2.2.14.2) fit in the ROP
output buffer.
<20> Section 3.2.4.2: Exchange 2003, Exchange 2007, Exchange 2010, the initial release of
Exchange 2013, Office Outlook 2003, Office Outlook 2007, Outlook 2010, and the initial release of
Outlook 2013 do not support the Execute request type. The Execute request type was introduced in
Outlook 2013 SP1 and Exchange 2013 SP1.
230 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
<21> Section 3.2.4.3: Exchange 2003, Exchange 2007, Exchange 2010, the initial release of
Exchange 2013, Office Outlook 2003, Office Outlook 2007, Outlook 2010, and the initial release of
Outlook 2013 do not support the Execute request type. The Execute request type was introduced in
Outlook 2013 SP1 and Exchange 2013 SP1.
<22> Section 3.2.4.3: Exchange 2003 and Exchange 2007 do not fail the EcDoRpcExt2 RPC and
instead fail the individual ROP with the ReturnValue field of the ROP response buffer set to
0x0000047D.
<23> Section 3.2.5.1: For some ROPs, Exchange 2003 and Exchange 2007 use different methods to
resolve the Server object and, therefore, do not fail the ROP if the index is invalid.
<24> Section 3.2.5.1: Exchange 2003 and Exchange 2007 fail the RPC.
<25> Section 3.2.5.3: In Exchange 2010, in instances where multiple ROPs are being processed in
one RPC and the RopRelease ROP is the last ROP in the call, the RopRelease ROP (section 2.2.15.3)
replaces the handle of the released Server object handle table entry with a value that is
considered invalid by both server and client and is not 0xFFFFFFFF. This invalid handle value is then
returned as the Server object handle in the ROP responses for the other ROPs in the RPC.
231 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
7 Change Tracking
This section identifies changes that were made to this document since the last release. Changes are
classified as Major, Minor, or None.
The revision class Major means that the technical content in the document was significantly revised.
Major changes affect protocol interoperability or implementation. Examples of major changes are:
The revision class Minor means that the meaning of the technical content was clarified. Minor changes
do not affect protocol interoperability or implementation. Examples of minor changes are updates to
clarify ambiguity at the sentence, paragraph, or table level.
The revision class None means that no new technical changes were introduced. Minor editorial and
formatting changes may have been made, but the relevant technical content is identical to the last
released version.
The changes made to this document are listed in the following table. For more information, please
contact dochelp@microsoft.com.
232 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
8 Index
A Folder ROPs
RopCopyFolder ROP 66
Abstract data model RopCreateFolder ROP 56
client 216 RopDeleteFolder ROP 58
server 219 RopDeleteMessages ROP 69
Applicability 20 RopEmptyFolder ROP 67
RopGetContentsTable ROP 73
C RopGetHierarchyTable ROP 72
RopGetSearchCriteria ROP 60
Capability negotiation 20 RopHardDeleteMessages ROP 70
Change tracking 232 RopHardDeleteMessagesAndSubfolders ROP 68
Client RopMoveCopyMessages ROP 62
abstract data model 216 RopMoveFolder ROP 64
higher-layer triggered events 216 RopOpenFolder ROP 54
initialization 216 RopSetSearchCriteria ROP 59
message processing 217 Format of ROP buffers 19
sequencing rules 217
timer events 219 G
timers 216
Client - local events Glossary 14
shutting down 219
Client - message processing events H
code page for strings 219
Server object dependencies 218 Higher-layer triggered events
subsequent RopProgress ROP requests 218 client 216
Client - sequencing rules Higher-layer triggered events - server
code page for strings 219 responding to insufficient output buffer space 220
Server object dependencies 218 sending notifications to the client 220
subsequent RopProgress ROP requests 218 sending the RopBackoff ROP response 220
D I
233 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
Local events - server O
disconnecting 222
Logon RopBackoff ROP response example 225 Other local events - client
Logon ROPs Shutting down 219
RopGetOwningServers ROP 40 Other ROPs
RopGetPerUserGuid ROP 48 RopBackoff ROP 213
RopGetPerUserLongTermIds ROP 47 RopBufferTooSmall ROP 213
RopGetReceiveFolder ROP 35 RopRelease ROP 214
RopGetReceiveFolderTable ROP 38 Overiew
RopGetStoreState ROP 39 format of ROP buffers 19
RopIdFromLongTermId ROP 45 Server objects 19
RopLogon ROP 30 Overview (synopsis) 18
RopLongTermIdFromId ROP 44
RopPublicFolderIsGhosted ROP 42 P
RopReadPerUserInformation ROP 50
RopSetReceiveFolder ROP 37 Parameters - security index 228
RopWritePerUserInformation ROP 52 Permission ROPs
RopGetPermissionsTable ROP 177
M RopModifyPermissions ROP 176
Preconditions 20
Message processing Prerequisites 20
client 217 Product behavior 229
Message processing - client Property ROPs
code page for strings 219 RopCopyProperties ROP 155
Server object dependencies 218 RopCopyTo ROP 157
subsequent RopProgress ROP requests 218 RopDeleteProperties ROP 150
Message processing - server RopDeletePropertiesNoReplicate ROP 151
creating a ROP output buffer 221 RopGetNamesFromPropertyIds ROP 140
error codes returned when an object is invalid 222 RopGetPropertiesAll ROP 143
processing a ROP input buffer 221 RopGetPropertiesList ROP 145
RopRelease 221 RopGetPropertiesSpecific ROP 142
Message ROPs RopGetPropertyIdsFromNames ROP 138
RopCreateAttachment ROP 120 RopProgress ROP 159
RopCreateMessage ROP 103 RopQueryNamedProperties ROP 153
RopDeleteAttachment ROP 121 RopSetProperties ROP 146
RopGetAttachmentTable ROP 125 RopSetPropertiesNoReplicate ROP 148
RopGetMessageStatus ROP 115
RopGetValidAttachments ROP 126 R
RopModifyRecipients ROP 107
RopOpenAttachment ROP 119 References 17
RopOpenEmbeddedMessage ROP 123 informative 18
RopOpenMessage ROP 101 normative 17
RopReadRecipients ROP 109 Relationship to other protocols 19
RopReloadCachedInformation ROP 111 ROP Input and Output Buffers message 21
RopRemoveAllRecipients ROP 107 ROP RopBackoff response example 226
RopSaveChangesAttachment ROP 122 RopAbort ROP table ROP 80
RopSaveChangesMessage ROP 105 RopAbortSubmit ROP transport ROP 128
RopSetMessageReadFlag ROP 117 RopBackoff ROP other ROP 213
RopSetMessageStatus ROP 113 RopBufferTooSmall ROP other ROP 213
RopSetReadFlags ROP 115 RopBufferTooSmall ROP response example 225
Messages RopCloneStream ROP stream ROP 175
overview 21 RopCollapseRow ROP table ROP 96
ROP Input and Output Buffers 21 RopCommitStream ROP stream ROP 165
The Table of RopIds 21 RopCopyFolder ROP folder ROP 66
transport 21 RopCopyProperties ROP property ROP 155
Multiple ROP request example 223 RopCopyTo ROP property ROP 157
RopCopyToStream ROP stream ROP 170
N RopCreateAttachment ROP message ROP 120
RopCreateBookmark ROP table ROP 88
Normative references 17 RopCreateFolder ROP folder ROP 56
Notification ROPs RopCreateMessage ROP message ROP 103
RopNotify ROP 212 RopDeleteAttachment ROP message ROP 121
RopPending ROP 212 RopDeleteFolder ROP folder ROP 58
RopRegisterNotification ROP 210 RopDeleteMessages ROP folder ROP 69
234 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopDeleteProperties ROP property ROP 150 RopOpenFolder ROP folder ROP 54
RopDeletePropertiesNoReplicate ROP property ROP RopOpenMessage ROP message ROP 101
151 RopOpenStream ROP stream ROP 161
RopEmptyFolder ROP folder ROP 67 RopOptionsData ROP transport ROP 136
RopExpandRow ROP table ROP 94 RopPending ROP notification ROP 212
RopFastTransferDestinationConfigure ROP fast RopProgress ROP property ROP 159
transfer ROP 182 RopQueryColumnsAll ROP table ROP 90
RopFastTransferDestinationPutBuffer ROP fast RopQueryNamedProperties ROP property ROP 153
transfer ROP (section 2.2.12.2 183, section RopQueryPosition ROP table ROP 83
2.2.12.3 184) RopQueryRows ROP table ROP 79
RopFastTransferSourceCopyFolder ROP fast transfer RopReadPerUserInformation ROP logon ROP 50
ROP 187 RopReadRecipients ROP message ROP 109
RopFastTransferSourceCopyMessages ROP fast RopReadStream ROP stream ROP 162
transfer ROP 188 RopRegisterNotification ROP notification ROP 210
RopFastTransferSourceCopyProperties ROP fast RopRegisterNotify ROP notification ROP 212
transfer ROP 190 RopRelease request example 224
RopFastTransferSourceCopyTo ROP fast transfer ROP RopRelease ROP other ROP 214
189 RopReloadCachedInformation ROP message ROP 111
RopFastTransferSourceGetBuffer ROP fast transfer RopRemoveAllRecipients ROP message ROP 107
ROP 185 RopResetTable ROP table ROP 94
RopFindRow ROP table ROP 91 RopRestrict ROP table ROP 77
RopFreeBookmark ROP table ROP 93 RopSaveChangesAttachment ROP message ROP 122
RopGetAddressTypes ROP transport ROP 129 RopSaveChangesMessage ROP message ROP 105
RopGetAttachmentTable ROP message ROP 125 RopSeekRow ROP table ROP 84
RopGetCollapseState ROP table ROP 97 RopSeekRowBookmark ROP table ROP 86
RopGetContentsTable ROP folder ROP 73 RopSeekRowFractional ROP table ROP 87
RopGetFolderIsGhosted ROP logon ROP 42 RopSeekStream ROP stream ROP 168
RopGetHierarchyTable ROP folder ROP 72 RopSetCollapseState ROP table ROP 99
RopGetLocalReplicaIds ROP incremental change RopSetColumns ROP table ROP 74
synchronization ROP 209 RopSetLocalReplicaMidsetDeleted ROP incremental
RopGetMessageStatus ROP message ROP 115 change synchronization ROP 207
RopGetNamesFromPropertyIds ROP property ROP RopSetMessageReadFlag ROP message ROP 117
140 RopSetMessageStatus ROP message ROP 113
RopGetOwningServers ROP logon ROP 40 RopSetProperties ROP property ROP 146
RopGetPermissionsTable ROP permission ROP 177 RopSetPropertiesNoReplicate ROP property ROP 148
RopGetPerUserGuid ROP logon ROP 48 RopSetReadFlags ROP message ROP 115
RopGetPerUserLongTermIds ROP logon ROP 47 RopSetReceiveFolder ROP logon ROP 37
RopGetPropertiesAll ROP property ROP 143 RopSetSearchCriteria ROP folder ROP 59
RopGetPropertiesList ROP property ROP 145 RopSetSpooler ROP transport ROP 131
RopGetPropertiesSpecific ROP property ROP 142 RopSetStreamSize ROP stream ROP 167
RopGetPropertyIdsFromNames ROP property ROP RopSortTable ROP table ROP 76
138 RopSpoolerLockMessage ROP transport ROP 132
RopGetReceiveFolder ROP logon ROP 35 RopSubmitMessage ROP transport ROP 128
RopGetReceiveFolderTable ROP logon ROP 38 RopSynchronizationConfigure ROP incremental
RopGetRulesTable ROP rule ROP 179 change synchronization ROP 192
RopGetSearchCriteria ROP folder ROP 60 RopSynchronizationGetTransferState ROP
RopGetStatus ROP table ROP 82 incremental change synchronization ROP 203
RopGetStoreState ROP logon ROP 39 RopSynchronizationImportDeletes ROP incremental
RopGetStreamSize ROP stream ROP 166 change synchronization ROP 199
RopGetTransportFolder ROP transport ROP 135 RopSynchronizationImportHierarchyChange ROP
RopGetValidAttachments ROP message ROP 126 incremental change synchronization ROP 197
RopHardDeleteMessages ROP folder ROP 70 RopSynchronizationImportMessageChange ROP
RopHardDeleteMessagesAndSubfolders ROP folder incremental change synchronization ROP 194
ROP 68 RopSynchronizationImportMessageMove ROP
RopIdFromLongTermId ROP logon ROP 45 incremental change synchronization ROP 200
RopLockRegionStream ROP stream ROP 172 RopSynchronizationImportReadStateChanges ROP
RopLogon ROP logon ROP 30 incremental change synchronization ROP 196
RopLongTermIdFromId ROP logon ROP 44 RopSynchronizationOpenCollector ROP incremental
RopModifyPermissions ROP permission ROP 176 change synchronization ROP 202
RopModifyRecipients ROP message ROP 107 RopSynchronizationUploadStateStreamBegin ROP
RopModifyRules ROP rule ROP 178 incremental change synchronization ROP 204
RopMoveCopyMessages ROP folder ROP 62 RopSynchronizationUploadStateStreamContinue ROP
RopMoveFolder ROP folder ROP 64 incremental change synchronization ROP 205
RopOpenAttachment ROP message ROP 119 RopSynchronizationUploadStateStreamEnd ROP
RopOpenEmbeddedMessages ROP message ROP 123 incremental change synchronization ROP 206
235 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018
RopTellVersion ROP fast transfer ROP 191 RopUnlockRegionStream ROP 173
RopTransportNewMail ROP transport ROP 134 RopWriteAndCommitStream ROP 174
RopTransportSend ROP transport ROP 133 RopWriteStream ROP (section 2.2.9.3 163, section
RopUnlockRegionStream ROP stream ROP 173 2.2.9.4 164)
RopUpdateDeferredActionMessages ROP rule ROP
180 T
RopWriteandCommitStream ROP stream ROP 174
RopWritePerUserInformation ROP logon ROP 52 Table ROPs
RopWriteStream ROP stream ROP (section 2.2.9.3 RopAbort ROP 80
163, section 2.2.9.4 164) RopCollapseRow ROP 96
Rule ROPs RopCreateBookmark ROP 88
RopGetRulesTable ROP 179 RopExpandRow ROP 94
RopModifyRules ROP 178 RopFindRow ROP 91
RopUpdateDeferredActionMessages ROP 180 RopFreeBookmark ROP 93
RopGetCollapseState ROP 97
S RopGetStatus ROP 82
RopQueryColumnsAll ROP 90
Security RopQueryPosition ROP 83
implementer considerations 228 RopQueryRows ROP 79
parameter index 228 RopResetTable ROP 94
Sequencing rules RopRestrict ROP 77
client 217 RopSeekRow ROP 84
Sequencing rules - client RopSeekRowBookmark ROP 86
code page for strings 219 RopSeekRowFractional ROP 87
Server object dependencies 218 RopSetCollapseState ROP 99
subsequent RopProgress ROP requests 218 RopSetColumns ROP 74
Sequencing rules - server RopSortTable ROP 76
creating a ROP output buffer 221 The Table of RopIds message 21
error codes returned when an object is invalid 222 Timer events
processing a ROP input buffer 221 client 219
RopRelease 221 server 222
Server Timers
abstract data model 219 client 216
initialization 220 server 220
timer events 222 Tracking changes 232
timers 220 Transport 21
Server - higher-layer triggered events Transport ROPs
responding to insufficient output buffer space 220 RopAbortSubmit ROP 128
sending notifications to the client 220 RopGetAddressTypes ROP 129
sending the RopBackoff ROP response 220 RopGetTransportFolder ROP 135
Server - local events RopOptionsData ROP 136
disconnecting 222 RopSetSpooler ROP 131
Server - message processing events RopSpoolerLockMessage ROP 132
creating a ROP output buffer 221 RopSubmitMessage ROP 128
error codes returned when an object is invalid 222 RopTransportNewMail ROP 134
processing a ROP input buffer 221 RopTransportSend ROP 133
RopRelease 221 Triggered events - higher-layer
Server - sequencing rules client 216
creating a ROP output buffer 221 Triggered events - server
error codes returned when an object is invalid 222 responding to insufficient output buffer space 220
processing a ROP input buffer 221 sending notifications to the client 220
RopRelease 221 sending the RopBackoff ROP response 220
Server objects 19
Single ROP request example 223 V
Standards assignments 20
Stream ROPs Vendor-extensible fields 20
RopCloneStream ROP 175 Versioning 20
RopCommitStream ROP 165
RopCopyToStream ROP 170
RopGetStreamSize ROP 166
RopLockRegionStream ROP 172
RopOpenStream ROP 161
RopReadStream ROP 162
RopSeekStream ROP 168
RopSetStreamSize ROP 167
236 / 236
[MS-OXCROPS] - v20181001
Remote Operations (ROP) List and Encoding Protocol
Copyright © 2018 Microsoft Corporation
Release: October 1, 2018