MAPIInspector.Parsers.RopTransportNewMailRequest.Parse C# (CSharp) Метод

Parse() публичный Метод

Parse the RopTransportNewMailRequest structure.
public Parse ( Stream s ) : void
s Stream An stream containing RopTransportNewMailRequest structure.
Результат void
        public override void Parse(Stream s)
        {
            base.Parse(s);

            this.RopId = (RopIdType)ReadByte();
            this.LogonId = ReadByte();
            this.InputHandleIndex = ReadByte();
            this.MessageId = new MessageID();
            this.MessageId.Parse(s);
            this.FolderId = new FolderID();
            this.FolderId.Parse(s);
            this.MessageClass = new MAPIString(Encoding.ASCII);
            this.MessageClass.Parse(s);
            this.MessageFlags = (MessageFlags)ReadUint();
        }

Usage Example

        /// <summary>
        /// Parse the ROPInputBuffer structure.
        /// </summary>
        /// <param name="s">A stream containing the ROPInputBuffer structure</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);

            this.RopSize = ReadUshort();
            List<object> ropsList = new List<object>();
            List<uint> serverObjectHandleTable = new List<uint>();
            List<uint> RopRemainSize = new List<uint>();

            if (this.RopSize > 2)
            {
                do
                {
                    int CurrentByte = s.ReadByte();
                    s.Position -= 1;
                    switch ((RopIdType)CurrentByte)
                    {
                        // MS-OXCSTOR ROPs
                        case RopIdType.RopLogon:
                            RopLogonRequest RopLogonRequest = new RopLogonRequest();
                            RopLogonRequest.Parse(s);
                            ropsList.Add(RopLogonRequest);
                            DecodingContext.SessionLogonFlag = new Dictionary<int, LogonFlags>() { { MapiInspector.MAPIInspector.logonRelatedSessionID, RopLogonRequest.LogonFlags } };
                            DecodingContext.SessionLogId = new Dictionary<int, byte>() { { MapiInspector.MAPIInspector.logonRelatedSessionID, RopLogonRequest.LogonId } };
                            break;
                        case RopIdType.RopGetReceiveFolder:
                            RopGetReceiveFolderRequest RopGetReceiveFolderRequest = new RopGetReceiveFolderRequest();
                            RopGetReceiveFolderRequest.Parse(s);
                            ropsList.Add(RopGetReceiveFolderRequest);
                            break;
                        case RopIdType.RopSetReceiveFolder:
                            RopSetReceiveFolderRequest RopSetReceiveFolderRequest = new RopSetReceiveFolderRequest();
                            RopSetReceiveFolderRequest.Parse(s);
                            ropsList.Add(RopSetReceiveFolderRequest);
                            break;
                        case RopIdType.RopGetReceiveFolderTable:
                            RopGetReceiveFolderTableRequest RopGetReceiveFolderTableRequest = new RopGetReceiveFolderTableRequest();
                            RopGetReceiveFolderTableRequest.Parse(s);
                            ropsList.Add(RopGetReceiveFolderTableRequest);
                            break;
                        case RopIdType.RopGetStoreState:
                            RopGetStoreStateRequest RopGetStoreStateRequest = new RopGetStoreStateRequest();
                            RopGetStoreStateRequest.Parse(s);
                            ropsList.Add(RopGetStoreStateRequest);
                            break;
                        case RopIdType.RopGetOwningServers:
                            RopGetOwningServersRequest RopGetOwningServersRequest = new RopGetOwningServersRequest();
                            RopGetOwningServersRequest.Parse(s);
                            ropsList.Add(RopGetOwningServersRequest);
                            break;
                        case RopIdType.RopPublicFolderIsGhosted:
                            RopPublicFolderIsGhostedRequest RopPublicFolderIsGhostedRequest = new RopPublicFolderIsGhostedRequest();
                            RopPublicFolderIsGhostedRequest.Parse(s);
                            ropsList.Add(RopPublicFolderIsGhostedRequest);
                            break;
                        case RopIdType.RopLongTermIdFromId:
                            RopLongTermIdFromIdRequest RopLongTermIdFromIdRequest = new RopLongTermIdFromIdRequest();
                            RopLongTermIdFromIdRequest.Parse(s);
                            ropsList.Add(RopLongTermIdFromIdRequest);
                            break;
                        case RopIdType.RopIdFromLongTermId:
                            RopIdFromLongTermIdRequest RopIdFromLongTermIdRequest = new RopIdFromLongTermIdRequest();
                            RopIdFromLongTermIdRequest.Parse(s);
                            ropsList.Add(RopIdFromLongTermIdRequest);
                            break;
                        case RopIdType.RopGetPerUserLongTermIds:
                            RopGetPerUserLongTermIdsRequest RopGetPerUserLongTermIdsRequest = new RopGetPerUserLongTermIdsRequest();
                            RopGetPerUserLongTermIdsRequest.Parse(s);
                            ropsList.Add(RopGetPerUserLongTermIdsRequest);
                            break;
                        case RopIdType.RopGetPerUserGuid:
                            RopGetPerUserGuidRequest RopGetPerUserGuidRequest = new RopGetPerUserGuidRequest();
                            RopGetPerUserGuidRequest.Parse(s);
                            ropsList.Add(RopGetPerUserGuidRequest);
                            break;
                        case RopIdType.RopReadPerUserInformation:
                            RopReadPerUserInformationRequest RopReadPerUserInformationRequest = new RopReadPerUserInformationRequest();
                            RopReadPerUserInformationRequest.Parse(s);
                            ropsList.Add(RopReadPerUserInformationRequest);
                            break;
                        case RopIdType.RopWritePerUserInformation:
                            byte RopId = ReadByte();
                            byte logonId = ReadByte();
                            s.Position -= 2;
                            if (!(DecodingContext.SessionLogId != null && DecodingContext.SessionLogId.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID) && DecodingContext.SessionLogId[MapiInspector.MAPIInspector.currentParsingSessionID] == logonId))
                            {
                                throw new MissingInformationException("Missing LogonFlags information for RopWritePerUserInformation", (ushort)CurrentByte, null);
                            }
                            RopWritePerUserInformationRequest RopWritePerUserInformationRequest = new RopWritePerUserInformationRequest();
                            RopWritePerUserInformationRequest.Parse(s);
                            ropsList.Add(RopWritePerUserInformationRequest);
                            break;

                        // MS-OXCROPS ROPs
                        case RopIdType.RopSubmitMessage:
                            RopSubmitMessageRequest RopSubmitMessageRequest = new RopSubmitMessageRequest();
                            RopSubmitMessageRequest.Parse(s);
                            ropsList.Add(RopSubmitMessageRequest);
                            break;
                        case RopIdType.RopAbortSubmit:
                            RopAbortSubmitRequest RopAbortSubmitRequest = new RopAbortSubmitRequest();
                            RopAbortSubmitRequest.Parse(s);
                            ropsList.Add(RopAbortSubmitRequest);
                            break;
                        case RopIdType.RopGetAddressTypes:
                            RopGetAddressTypesRequest RopGetAddressTypesRequest = new RopGetAddressTypesRequest();
                            RopGetAddressTypesRequest.Parse(s);
                            ropsList.Add(RopGetAddressTypesRequest);
                            break;
                        case RopIdType.RopSetSpooler:
                            RopSetSpoolerRequest RopSetSpoolerRequest = new RopSetSpoolerRequest();
                            RopSetSpoolerRequest.Parse(s);
                            ropsList.Add(RopSetSpoolerRequest);
                            break;
                        case RopIdType.RopSpoolerLockMessage:
                            RopSpoolerLockMessageRequest RopSpoolerLockMessageRequest = new RopSpoolerLockMessageRequest();
                            RopSpoolerLockMessageRequest.Parse(s);
                            ropsList.Add(RopSpoolerLockMessageRequest);
                            break;
                        case RopIdType.RopTransportSend:
                            RopTransportSendRequest RopTransportSendRequest = new RopTransportSendRequest();
                            RopTransportSendRequest.Parse(s);
                            ropsList.Add(RopTransportSendRequest);
                            break;
                        case RopIdType.RopTransportNewMail:
                            RopTransportNewMailRequest RopTransportNewMailRequest = new RopTransportNewMailRequest();
                            RopTransportNewMailRequest.Parse(s);
                            ropsList.Add(RopTransportNewMailRequest);
                            break;
                        case RopIdType.RopGetTransportFolder:
                            RopGetTransportFolderRequest RopGetTransportFolderRequest = new RopGetTransportFolderRequest();
                            RopGetTransportFolderRequest.Parse(s);
                            ropsList.Add(RopGetTransportFolderRequest);
                            break;
                        case RopIdType.RopOptionsData:
                            RopOptionsDataRequest RopOptionsDataRequest = new RopOptionsDataRequest();
                            RopOptionsDataRequest.Parse(s);
                            ropsList.Add(RopOptionsDataRequest);
                            break;
                        case RopIdType.RopRelease:
                            RopReleaseRequest RopReleaseRequest = new RopReleaseRequest();
                            RopReleaseRequest.Parse(s);
                            ropsList.Add(RopReleaseRequest);
                            break;

                        // MSOXCTABL ROPs
                        case RopIdType.RopSetColumns:
                            RopSetColumnsRequest RopSetColumnsRequest = new RopSetColumnsRequest();
                            RopSetColumnsRequest.Parse(s);
                            ropsList.Add(RopSetColumnsRequest);
                            break;

                        case RopIdType.RopSortTable:
                            RopSortTableRequest RopSortTableRequest = new RopSortTableRequest();
                            RopSortTableRequest.Parse(s);
                            ropsList.Add(RopSortTableRequest);
                            break;

                        case RopIdType.RopRestrict:
                            RopRestrictRequest RopRestrictRequest = new RopRestrictRequest();
                            RopRestrictRequest.Parse(s);
                            ropsList.Add(RopRestrictRequest);
                            break;

                        case RopIdType.RopQueryRows:
                            RopQueryRowsRequest RopQueryRowsRequest = new RopQueryRowsRequest();
                            RopQueryRowsRequest.Parse(s);
                            ropsList.Add(RopQueryRowsRequest);
                            break;

                        case RopIdType.RopAbort:
                            RopAbortRequest RopAbortRequest = new RopAbortRequest();
                            RopAbortRequest.Parse(s);
                            ropsList.Add(RopAbortRequest);
                            break;

                        case RopIdType.RopGetStatus:
                            RopGetStatusRequest RopGetStatusRequest = new RopGetStatusRequest();
                            RopGetStatusRequest.Parse(s);
                            ropsList.Add(RopGetStatusRequest);
                            break;

                        case RopIdType.RopQueryPosition:
                            RopQueryPositionRequest RopQueryPositionRequest = new RopQueryPositionRequest();
                            RopQueryPositionRequest.Parse(s);
                            ropsList.Add(RopQueryPositionRequest);
                            break;

                        case RopIdType.RopSeekRow:
                            RopSeekRowRequest RopSeekRowRequest = new RopSeekRowRequest();
                            RopSeekRowRequest.Parse(s);
                            ropsList.Add(RopSeekRowRequest);
                            break;

                        case RopIdType.RopSeekRowBookmark:
                            RopSeekRowBookmarkRequest RopSeekRowBookmarkRequest = new RopSeekRowBookmarkRequest();
                            RopSeekRowBookmarkRequest.Parse(s);
                            ropsList.Add(RopSeekRowBookmarkRequest);
                            break;

                        case RopIdType.RopSeekRowFractional:
                            RopSeekRowFractionalRequest RopSeekRowFractionalRequest = new RopSeekRowFractionalRequest();
                            RopSeekRowFractionalRequest.Parse(s);
                            ropsList.Add(RopSeekRowFractionalRequest);
                            break;

                        case RopIdType.RopCreateBookmark:
                            RopCreateBookmarkRequest RopCreateBookmarkRequest = new RopCreateBookmarkRequest();
                            RopCreateBookmarkRequest.Parse(s);
                            ropsList.Add(RopCreateBookmarkRequest);
                            break;

                        case RopIdType.RopQueryColumnsAll:
                            RopQueryColumnsAllRequest RopQueryColumnsAllRequest = new RopQueryColumnsAllRequest();
                            RopQueryColumnsAllRequest.Parse(s);
                            ropsList.Add(RopQueryColumnsAllRequest);
                            break;

                        case RopIdType.RopFindRow:
                            RopFindRowRequest RopFindRowRequest = new RopFindRowRequest();
                            RopFindRowRequest.Parse(s);
                            ropsList.Add(RopFindRowRequest);
                            break;

                        case RopIdType.RopFreeBookmark:
                            RopFreeBookmarkRequest RopFreeBookmarkRequest = new RopFreeBookmarkRequest();
                            RopFreeBookmarkRequest.Parse(s);
                            ropsList.Add(RopFreeBookmarkRequest);
                            break;

                        case RopIdType.RopResetTable:
                            RopResetTableRequest RopResetTableRequest = new RopResetTableRequest();
                            RopResetTableRequest.Parse(s);
                            ropsList.Add(RopResetTableRequest);
                            break;

                        case RopIdType.RopExpandRow:
                            RopExpandRowRequest RopExpandRowRequest = new RopExpandRowRequest();
                            RopExpandRowRequest.Parse(s);
                            ropsList.Add(RopExpandRowRequest);
                            break;

                        case RopIdType.RopCollapseRow:
                            RopCollapseRowRequest RopCollapseRowRequest = new RopCollapseRowRequest();
                            RopCollapseRowRequest.Parse(s);
                            ropsList.Add(RopCollapseRowRequest);
                            break;

                        case RopIdType.RopGetCollapseState:
                            RopGetCollapseStateRequest RopGetCollapseStateRequest = new RopGetCollapseStateRequest();
                            RopGetCollapseStateRequest.Parse(s);
                            ropsList.Add(RopGetCollapseStateRequest);
                            break;

                        case RopIdType.RopSetCollapseState:
                            RopSetCollapseStateRequest RopSetCollapseStateRequest = new RopSetCollapseStateRequest();
                            RopSetCollapseStateRequest.Parse(s);
                            ropsList.Add(RopSetCollapseStateRequest);
                            break;

                        // MSOXORULE ROPs
                        case RopIdType.RopModifyRules:
                            RopModifyRulesRequest RopModifyRulesRequest = new RopModifyRulesRequest();
                            RopModifyRulesRequest.Parse(s);
                            ropsList.Add(RopModifyRulesRequest);
                            break;

                        case RopIdType.RopGetRulesTable:
                            RopGetRulesTableRequest RopGetRulesTableRequest = new RopGetRulesTableRequest();
                            RopGetRulesTableRequest.Parse(s);
                            ropsList.Add(RopGetRulesTableRequest);
                            break;

                        case RopIdType.RopUpdateDeferredActionMessages:
                            RopUpdateDeferredActionMessagesRequest RopUpdateDeferredActionMessagesRequest = new RopUpdateDeferredActionMessagesRequest();
                            RopUpdateDeferredActionMessagesRequest.Parse(s);
                            ropsList.Add(RopUpdateDeferredActionMessagesRequest);
                            break;

                        //MS-OXCFXICS ROPs
                        case RopIdType.RopFastTransferSourceCopyProperties:
                            RopFastTransferSourceCopyPropertiesRequest RopFastTransferSourceCopyPropertiesRequest = new RopFastTransferSourceCopyPropertiesRequest();
                            RopFastTransferSourceCopyPropertiesRequest.Parse(s);
                            ropsList.Add(RopFastTransferSourceCopyPropertiesRequest);
                            break;
                        case RopIdType.RopFastTransferSourceCopyTo:
                            RopFastTransferSourceCopyToRequest RopFastTransferSourceCopyToRequest = new RopFastTransferSourceCopyToRequest();
                            RopFastTransferSourceCopyToRequest.Parse(s);
                            ropsList.Add(RopFastTransferSourceCopyToRequest);
                            break;
                        case RopIdType.RopFastTransferSourceCopyMessages:
                            RopFastTransferSourceCopyMessagesRequest RopFastTransferSourceCopyMessagesRequest = new RopFastTransferSourceCopyMessagesRequest();
                            RopFastTransferSourceCopyMessagesRequest.Parse(s);
                            ropsList.Add(RopFastTransferSourceCopyMessagesRequest);
                            break;
                        case RopIdType.RopFastTransferSourceCopyFolder:
                            RopFastTransferSourceCopyFolderRequest RopFastTransferSourceCopyFolderRequest = new RopFastTransferSourceCopyFolderRequest();
                            RopFastTransferSourceCopyFolderRequest.Parse(s);
                            ropsList.Add(RopFastTransferSourceCopyFolderRequest);
                            break;
                        case RopIdType.RopFastTransferSourceGetBuffer:
                            RopFastTransferSourceGetBufferRequest RopFastTransferSourceGetBufferRequest = new RopFastTransferSourceGetBufferRequest();
                            RopFastTransferSourceGetBufferRequest.Parse(s);
                            ropsList.Add(RopFastTransferSourceGetBufferRequest);
                            break;
                        case RopIdType.RopTellVersion:
                            RopTellVersionRequest RopTellVersionRequest = new RopTellVersionRequest();
                            RopTellVersionRequest.Parse(s);
                            ropsList.Add(RopTellVersionRequest);
                            break;
                        case RopIdType.RopFastTransferDestinationConfigure:
                            RopFastTransferDestinationConfigureRequest RopFastTransferDestinationConfigureRequest = new RopFastTransferDestinationConfigureRequest();
                            RopFastTransferDestinationConfigureRequest.Parse(s);
                            ropsList.Add(RopFastTransferDestinationConfigureRequest);
                            break;
                        case RopIdType.RopFastTransferDestinationPutBuffer:
                            if (DecodingContext.SessionFastTransferStreamType != null && DecodingContext.SessionFastTransferStreamType.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
                            {
                                DecodingContext.StreamType_Getbuffer = DecodingContext.SessionFastTransferStreamType[MapiInspector.MAPIInspector.currentParsingSessionID];
                            }
                            else
                            {
                                throw new MissingInformationException("Missing TransferStream type information for RopFastTransferDestinationPutBufferRequest", (ushort)CurrentByte, null);
                            }
                            RopFastTransferDestinationPutBufferRequest RopFastTransferDestinationPutBufferRequest = new RopFastTransferDestinationPutBufferRequest();
                            RopFastTransferDestinationPutBufferRequest.Parse(s);
                            ropsList.Add(RopFastTransferDestinationPutBufferRequest);
                            break;
                        case RopIdType.RopSynchronizationConfigure:
                            RopSynchronizationConfigureRequest RopSynchronizationConfigureRequest = new RopSynchronizationConfigureRequest();
                            RopSynchronizationConfigureRequest.Parse(s);
                            ropsList.Add(RopSynchronizationConfigureRequest);
                            break;
                        case RopIdType.RopSynchronizationGetTransferState:
                            RopSynchronizationGetTransferStateRequest RopSynchronizationGetTransferStateRequest = new RopSynchronizationGetTransferStateRequest();
                            RopSynchronizationGetTransferStateRequest.Parse(s);
                            ropsList.Add(RopSynchronizationGetTransferStateRequest);
                            break;
                        case RopIdType.RopSynchronizationUploadStateStreamBegin:
                            RopSynchronizationUploadStateStreamBeginRequest RopSynchronizationUploadStateStreamBeginRequest = new RopSynchronizationUploadStateStreamBeginRequest();
                            RopSynchronizationUploadStateStreamBeginRequest.Parse(s);
                            ropsList.Add(RopSynchronizationUploadStateStreamBeginRequest);
                            break;
                        case RopIdType.RopSynchronizationUploadStateStreamContinue:
                            RopSynchronizationUploadStateStreamContinueRequest RopSynchronizationUploadStateStreamContinueRequest = new RopSynchronizationUploadStateStreamContinueRequest();
                            RopSynchronizationUploadStateStreamContinueRequest.Parse(s);
                            ropsList.Add(RopSynchronizationUploadStateStreamContinueRequest);
                            break;
                        case RopIdType.RopSynchronizationUploadStateStreamEnd:
                            RopSynchronizationUploadStateStreamEndRequest RopSynchronizationUploadStateStreamEndRequest = new RopSynchronizationUploadStateStreamEndRequest();
                            RopSynchronizationUploadStateStreamEndRequest.Parse(s);
                            ropsList.Add(RopSynchronizationUploadStateStreamEndRequest);
                            break;
                        case RopIdType.RopSynchronizationOpenCollector:
                            RopSynchronizationOpenCollectorRequest RopSynchronizationOpenCollectorRequest = new RopSynchronizationOpenCollectorRequest();
                            RopSynchronizationOpenCollectorRequest.Parse(s);
                            ropsList.Add(RopSynchronizationOpenCollectorRequest);
                            break;
                        case RopIdType.RopSynchronizationImportMessageChange:
                            RopSynchronizationImportMessageChangeRequest RopSynchronizationImportMessageChangeRequest = new RopSynchronizationImportMessageChangeRequest();
                            RopSynchronizationImportMessageChangeRequest.Parse(s);
                            ropsList.Add(RopSynchronizationImportMessageChangeRequest);
                            break;
                        case RopIdType.RopSynchronizationImportHierarchyChange:
                            RopSynchronizationImportHierarchyChangeRequest RopSynchronizationImportHierarchyChangeRequest = new RopSynchronizationImportHierarchyChangeRequest();
                            RopSynchronizationImportHierarchyChangeRequest.Parse(s);
                            ropsList.Add(RopSynchronizationImportHierarchyChangeRequest);
                            break;
                        case RopIdType.RopSynchronizationImportMessageMove:
                            RopSynchronizationImportMessageMoveRequest RopSynchronizationImportMessageMoveRequest = new RopSynchronizationImportMessageMoveRequest();
                            RopSynchronizationImportMessageMoveRequest.Parse(s);
                            ropsList.Add(RopSynchronizationImportMessageMoveRequest);
                            break;
                        case RopIdType.RopSynchronizationImportDeletes:
                            RopSynchronizationImportDeletesRequest RopSynchronizationImportDeletesRequest = new RopSynchronizationImportDeletesRequest();
                            RopSynchronizationImportDeletesRequest.Parse(s);
                            ropsList.Add(RopSynchronizationImportDeletesRequest);
                            break;
                        case RopIdType.RopSynchronizationImportReadStateChanges:
                            RopSynchronizationImportReadStateChangesRequest RopSynchronizationImportReadStateChangesRequest = new RopSynchronizationImportReadStateChangesRequest();
                            RopSynchronizationImportReadStateChangesRequest.Parse(s);
                            ropsList.Add(RopSynchronizationImportReadStateChangesRequest);
                            break;
                        case RopIdType.RopGetLocalReplicaIds:
                            RopGetLocalReplicaIdsRequest RopGetLocalReplicaIdsRequest = new RopGetLocalReplicaIdsRequest();
                            RopGetLocalReplicaIdsRequest.Parse(s);
                            ropsList.Add(RopGetLocalReplicaIdsRequest);
                            break;
                        case RopIdType.RopSetLocalReplicaMidsetDeleted:
                            RopSetLocalReplicaMidsetDeletedRequest RopSetLocalReplicaMidsetDeletedRequest = new RopSetLocalReplicaMidsetDeletedRequest();
                            RopSetLocalReplicaMidsetDeletedRequest.Parse(s);
                            ropsList.Add(RopSetLocalReplicaMidsetDeletedRequest);
                            break;

                        // MS-OXCPRPT ROPs
                        case RopIdType.RopGetPropertiesSpecific:
                            RopGetPropertiesSpecificRequest RopGetPropertiesSpecificRequest = new RopGetPropertiesSpecificRequest();
                            RopGetPropertiesSpecificRequest.Parse(s);
                            ropsList.Add(RopGetPropertiesSpecificRequest);
                            DecodingContext.SessionPropertyTags = new Dictionary<int, PropertyTag[]>() { { MapiInspector.MAPIInspector.currentParsingSessionID, RopGetPropertiesSpecificRequest.PropertyTags } };
                            break;
                        case RopIdType.RopGetPropertiesAll:
                            RopGetPropertiesAllRequest RopGetPropertiesAllRequest = new RopGetPropertiesAllRequest();
                            RopGetPropertiesAllRequest.Parse(s);
                            ropsList.Add(RopGetPropertiesAllRequest);
                            break;
                        case RopIdType.RopGetPropertiesList:
                            RopGetPropertiesListRequest RopGetPropertiesListRequest = new RopGetPropertiesListRequest();
                            RopGetPropertiesListRequest.Parse(s);
                            ropsList.Add(RopGetPropertiesListRequest);
                            break;
                        case RopIdType.RopSetProperties:
                            RopSetPropertiesRequest RopSetPropertiesRequest = new RopSetPropertiesRequest();
                            RopSetPropertiesRequest.Parse(s);
                            ropsList.Add(RopSetPropertiesRequest);
                            break;
                        case RopIdType.RopSetPropertiesNoReplicate:
                            RopSetPropertiesNoReplicateRequest RopSetPropertiesNoReplicateRequest = new RopSetPropertiesNoReplicateRequest();
                            RopSetPropertiesNoReplicateRequest.Parse(s);
                            ropsList.Add(RopSetPropertiesNoReplicateRequest);
                            break;
                        case RopIdType.RopDeleteProperties:
                            RopDeletePropertiesRequest RopDeletePropertiesRequest = new RopDeletePropertiesRequest();
                            RopDeletePropertiesRequest.Parse(s);
                            ropsList.Add(RopDeletePropertiesRequest);
                            break;
                        case RopIdType.RopDeletePropertiesNoReplicate:
                            RopDeletePropertiesNoReplicateRequest RopDeletePropertiesNoReplicateRequest = new RopDeletePropertiesNoReplicateRequest();
                            RopDeletePropertiesNoReplicateRequest.Parse(s);
                            ropsList.Add(RopDeletePropertiesNoReplicateRequest);
                            break;
                        case RopIdType.RopQueryNamedProperties:
                            RopQueryNamedPropertiesRequest RopQueryNamedPropertiesRequest = new RopQueryNamedPropertiesRequest();
                            RopQueryNamedPropertiesRequest.Parse(s);
                            ropsList.Add(RopQueryNamedPropertiesRequest);
                            break;
                        case RopIdType.RopCopyProperties:
                            RopCopyPropertiesRequest RopCopyPropertiesRequest = new RopCopyPropertiesRequest();
                            RopCopyPropertiesRequest.Parse(s);
                            ropsList.Add(RopCopyPropertiesRequest);
                            break;
                        case RopIdType.RopCopyTo:
                            RopCopyToRequest RopCopyToRequest = new RopCopyToRequest();
                            RopCopyToRequest.Parse(s);
                            ropsList.Add(RopCopyToRequest);
                            break;
                        case RopIdType.RopGetPropertyIdsFromNames:
                            RopGetPropertyIdsFromNamesRequest RopGetPropertyIdsFromNamesRequest = new RopGetPropertyIdsFromNamesRequest();
                            RopGetPropertyIdsFromNamesRequest.Parse(s);
                            ropsList.Add(RopGetPropertyIdsFromNamesRequest);
                            break;
                        case RopIdType.RopGetNamesFromPropertyIds:
                            RopGetNamesFromPropertyIdsRequest RopGetNamesFromPropertyIdsRequest = new RopGetNamesFromPropertyIdsRequest();
                            RopGetNamesFromPropertyIdsRequest.Parse(s);
                            ropsList.Add(RopGetNamesFromPropertyIdsRequest);
                            break;
                        case RopIdType.RopOpenStream:
                            RopOpenStreamRequest RopOpenStreamRequest = new RopOpenStreamRequest();
                            RopOpenStreamRequest.Parse(s);
                            ropsList.Add(RopOpenStreamRequest);
                            break;
                        case RopIdType.RopReadStream:
                            RopReadStreamRequest RopReadStreamRequest = new RopReadStreamRequest();
                            RopReadStreamRequest.Parse(s);
                            ropsList.Add(RopReadStreamRequest);
                            break;
                        case RopIdType.RopWriteStream:
                            RopWriteStreamRequest RopWriteStreamRequest = new RopWriteStreamRequest();
                            RopWriteStreamRequest.Parse(s);
                            ropsList.Add(RopWriteStreamRequest);
                            break;
                        case RopIdType.RopCommitStream:
                            RopCommitStreamRequest RopCommitStreamRequest = new RopCommitStreamRequest();
                            RopCommitStreamRequest.Parse(s);
                            ropsList.Add(RopCommitStreamRequest);
                            break;
                        case RopIdType.RopGetStreamSize:
                            RopGetStreamSizeRequest RopGetStreamSizeRequest = new RopGetStreamSizeRequest();
                            RopGetStreamSizeRequest.Parse(s);
                            ropsList.Add(RopGetStreamSizeRequest);
                            break;
                        case RopIdType.RopSetStreamSize:
                            RopSetStreamSizeRequest RopSetStreamSizeRequest = new RopSetStreamSizeRequest();
                            RopSetStreamSizeRequest.Parse(s);
                            ropsList.Add(RopSetStreamSizeRequest);
                            break;
                        case RopIdType.RopSeekStream:
                            RopSeekStreamRequest RopSeekStreamRequest = new RopSeekStreamRequest();
                            RopSeekStreamRequest.Parse(s);
                            ropsList.Add(RopSeekStreamRequest);
                            break;
                        case RopIdType.RopCopyToStream:
                            RopCopyToStreamRequest RopCopyToStreamRequest = new RopCopyToStreamRequest();
                            RopCopyToStreamRequest.Parse(s);
                            ropsList.Add(RopCopyToStreamRequest);
                            break;
                        case RopIdType.RopProgress:
                            RopProgressRequest RopProgressRequest = new RopProgressRequest();
                            RopProgressRequest.Parse(s);
                            ropsList.Add(RopProgressRequest);
                            break;
                        case RopIdType.RopLockRegionStream:
                            RopLockRegionStreamRequest RopLockRegionStreamRequest = new RopLockRegionStreamRequest();
                            RopLockRegionStreamRequest.Parse(s);
                            ropsList.Add(RopLockRegionStreamRequest);
                            break;
                        case RopIdType.RopUnlockRegionStream:
                            RopUnlockRegionStreamRequest RopUnlockRegionStreamRequest = new RopUnlockRegionStreamRequest();
                            RopUnlockRegionStreamRequest.Parse(s);
                            ropsList.Add(RopUnlockRegionStreamRequest);
                            break;
                        case RopIdType.RopWriteAndCommitStream:
                            RopWriteAndCommitStreamRequest RopWriteAndCommitStreamRequest = new RopWriteAndCommitStreamRequest();
                            RopWriteAndCommitStreamRequest.Parse(s);
                            ropsList.Add(RopWriteAndCommitStreamRequest);
                            break;
                        case RopIdType.RopCloneStream:
                            RopCloneStreamRequest RopCloneStreamRequest = new RopCloneStreamRequest();
                            RopCloneStreamRequest.Parse(s);
                            ropsList.Add(RopCloneStreamRequest);
                            break;

                        // MSOXCFOLD ROPs
                        case RopIdType.RopOpenFolder:
                            RopOpenFolderRequest RopOpenFolderRequest = new RopOpenFolderRequest();
                            RopOpenFolderRequest.Parse(s);
                            ropsList.Add(RopOpenFolderRequest);
                            break;

                        case RopIdType.RopCreateFolder:
                            RopCreateFolderRequest RopCreateFolderRequest = new RopCreateFolderRequest();
                            RopCreateFolderRequest.Parse(s);
                            ropsList.Add(RopCreateFolderRequest);
                            break;

                        case RopIdType.RopDeleteFolder:
                            RopDeleteFolderRequest RopDeleteFolderRequest = new RopDeleteFolderRequest();
                            RopDeleteFolderRequest.Parse(s);
                            ropsList.Add(RopDeleteFolderRequest);
                            break;

                        case RopIdType.RopSetSearchCriteria:
                            RopSetSearchCriteriaRequest RopSetSearchCriteriaRequest = new RopSetSearchCriteriaRequest();
                            RopSetSearchCriteriaRequest.Parse(s);
                            ropsList.Add(RopSetSearchCriteriaRequest);
                            break;

                        case RopIdType.RopGetSearchCriteria:
                            RopGetSearchCriteriaRequest RopGetSearchCriteriaRequest = new RopGetSearchCriteriaRequest();
                            RopGetSearchCriteriaRequest.Parse(s);
                            ropsList.Add(RopGetSearchCriteriaRequest);
                            break;

                        case RopIdType.RopMoveCopyMessages:
                            RopMoveCopyMessagesRequest RopMoveCopyMessagesRequest = new RopMoveCopyMessagesRequest();
                            RopMoveCopyMessagesRequest.Parse(s);
                            ropsList.Add(RopMoveCopyMessagesRequest);
                            break;

                        case RopIdType.RopMoveFolder:
                            RopMoveFolderRequest RopMoveFolderRequest = new RopMoveFolderRequest();
                            RopMoveFolderRequest.Parse(s);
                            ropsList.Add(RopMoveFolderRequest);
                            break;

                        case RopIdType.RopCopyFolder:
                            RopCopyFolderRequest RopCopyFolderRequest = new RopCopyFolderRequest();
                            RopCopyFolderRequest.Parse(s);
                            ropsList.Add(RopCopyFolderRequest);
                            break;

                        case RopIdType.RopEmptyFolder:
                            RopEmptyFolderRequest RopEmptyFolderRequest = new RopEmptyFolderRequest();
                            RopEmptyFolderRequest.Parse(s);
                            ropsList.Add(RopEmptyFolderRequest);
                            break;

                        case RopIdType.RopHardDeleteMessagesAndSubfolders:
                            RopHardDeleteMessagesAndSubfoldersRequest RopHardDeleteMessagesAndSubfoldersRequest = new RopHardDeleteMessagesAndSubfoldersRequest();
                            RopHardDeleteMessagesAndSubfoldersRequest.Parse(s);
                            ropsList.Add(RopHardDeleteMessagesAndSubfoldersRequest);
                            break;

                        case RopIdType.RopDeleteMessages:
                            RopDeleteMessagesRequest RopDeleteMessagesRequest = new RopDeleteMessagesRequest();
                            RopDeleteMessagesRequest.Parse(s);
                            ropsList.Add(RopDeleteMessagesRequest);
                            break;

                        case RopIdType.RopHardDeleteMessages:
                            RopHardDeleteMessagesRequest RopHardDeleteMessagesRequest = new RopHardDeleteMessagesRequest();
                            RopHardDeleteMessagesRequest.Parse(s);
                            ropsList.Add(RopHardDeleteMessagesRequest);
                            break;

                        case RopIdType.RopGetHierarchyTable:
                            RopGetHierarchyTableRequest RopGetHierarchyTableRequest = new RopGetHierarchyTableRequest();
                            RopGetHierarchyTableRequest.Parse(s);
                            ropsList.Add(RopGetHierarchyTableRequest);
                            break;

                        case RopIdType.RopGetContentsTable:
                            RopGetContentsTableRequest RopGetContentsTableRequest = new RopGetContentsTableRequest();
                            RopGetContentsTableRequest.Parse(s);
                            ropsList.Add(RopGetContentsTableRequest);
                            break;

                        //MS-OXCMSG ROPs
                        case RopIdType.RopOpenMessage:
                            RopOpenMessageRequest ropOpenMessageRequest = new RopOpenMessageRequest();
                            ropOpenMessageRequest.Parse(s);
                            ropsList.Add(ropOpenMessageRequest);
                            break;
                        case RopIdType.RopCreateMessage:
                            RopCreateMessageRequest ropCreateMessageRequest = new RopCreateMessageRequest();
                            ropCreateMessageRequest.Parse(s);
                            ropsList.Add(ropCreateMessageRequest);
                            break;
                        case RopIdType.RopSaveChangesMessage:
                            RopSaveChangesMessageRequest ropSaveChangesMessageRequest = new RopSaveChangesMessageRequest();
                            ropSaveChangesMessageRequest.Parse(s);
                            ropsList.Add(ropSaveChangesMessageRequest);
                            break;
                        case RopIdType.RopRemoveAllRecipients:
                            RopRemoveAllRecipientsRequest ropRemoveAllRecipientsRequest = new RopRemoveAllRecipientsRequest();
                            ropRemoveAllRecipientsRequest.Parse(s);
                            ropsList.Add(ropRemoveAllRecipientsRequest);
                            break;
                        case RopIdType.RopModifyRecipients:
                            RopModifyRecipientsRequest ropModifyRecipientsRequest = new RopModifyRecipientsRequest();
                            ropModifyRecipientsRequest.Parse(s);
                            ropsList.Add(ropModifyRecipientsRequest);
                            break;
                        case RopIdType.RopReadRecipients:
                            RopReadRecipientsRequest ropReadRecipientsRequest = new RopReadRecipientsRequest();
                            ropReadRecipientsRequest.Parse(s);
                            ropsList.Add(ropReadRecipientsRequest);
                            break;
                        case RopIdType.RopReloadCachedInformation:
                            RopReloadCachedInformationRequest ropReloadCachedInformationRequest = new RopReloadCachedInformationRequest();
                            ropReloadCachedInformationRequest.Parse(s);
                            ropsList.Add(ropReloadCachedInformationRequest);
                            break;
                        case RopIdType.RopSetMessageStatus:
                            RopSetMessageStatusRequest ropSetMessageStatusRequest = new RopSetMessageStatusRequest();
                            ropSetMessageStatusRequest.Parse(s);
                            ropsList.Add(ropSetMessageStatusRequest);
                            break;
                        case RopIdType.RopGetMessageStatus:
                            RopGetMessageStatusRequest ropGetMessageStatusRequest = new RopGetMessageStatusRequest();
                            ropGetMessageStatusRequest.Parse(s);
                            ropsList.Add(ropGetMessageStatusRequest);
                            break;
                        case RopIdType.RopSetReadFlags:
                            RopSetReadFlagsRequest ropSetReadFlagsRequest = new RopSetReadFlagsRequest();
                            ropSetReadFlagsRequest.Parse(s);
                            ropsList.Add(ropSetReadFlagsRequest);
                            break;
                        case RopIdType.RopSetMessageReadFlag:
                            byte ropId = ReadByte();
                            byte logId = ReadByte();
                            s.Position -= 2;
                            if (!(DecodingContext.SessionLogId != null && DecodingContext.SessionLogId.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID) && DecodingContext.SessionLogId[MapiInspector.MAPIInspector.currentParsingSessionID] == logId))
                            {
                                throw new MissingInformationException("Missing LogonFlags information for RopWritePerUserInformation", (ushort)CurrentByte, null);
                            }
                            RopSetMessageReadFlagRequest ropSetMessageReadFlagRequest = new RopSetMessageReadFlagRequest();
                            ropSetMessageReadFlagRequest.Parse(s);
                            ropsList.Add(ropSetMessageReadFlagRequest);
                            break;
                        case RopIdType.RopOpenAttachment:
                            RopOpenAttachmentRequest ropOpenAttachmentRequest = new RopOpenAttachmentRequest();
                            ropOpenAttachmentRequest.Parse(s);
                            ropsList.Add(ropOpenAttachmentRequest);
                            break;
                        case RopIdType.RopCreateAttachment:
                            RopCreateAttachmentRequest ropCreateAttachmentRequest = new RopCreateAttachmentRequest();
                            ropCreateAttachmentRequest.Parse(s);
                            ropsList.Add(ropCreateAttachmentRequest);
                            break;
                        case RopIdType.RopDeleteAttachment:
                            RopDeleteAttachmentRequest ropDeleteAttachmentRequest = new RopDeleteAttachmentRequest();
                            ropDeleteAttachmentRequest.Parse(s);
                            ropsList.Add(ropDeleteAttachmentRequest);
                            break;
                        case RopIdType.RopSaveChangesAttachment:
                            RopSaveChangesAttachmentRequest ropSaveChangesAttachmentRequest = new RopSaveChangesAttachmentRequest();
                            ropSaveChangesAttachmentRequest.Parse(s);
                            ropsList.Add(ropSaveChangesAttachmentRequest);
                            break;
                        case RopIdType.RopOpenEmbeddedMessage:
                            RopOpenEmbeddedMessageRequest ropOpenEmbeddedMessageRequest = new RopOpenEmbeddedMessageRequest();
                            ropOpenEmbeddedMessageRequest.Parse(s);
                            ropsList.Add(ropOpenEmbeddedMessageRequest);
                            break;
                        case RopIdType.RopGetAttachmentTable:
                            RopGetAttachmentTableRequest ropGetAttachmentTableRequest = new RopGetAttachmentTableRequest();
                            ropGetAttachmentTableRequest.Parse(s);
                            ropsList.Add(ropGetAttachmentTableRequest);
                            break;
                        case RopIdType.RopGetValidAttachments:
                            RopGetValidAttachmentsRequest ropGetValidAttachmentsRequest = new RopGetValidAttachmentsRequest();
                            ropGetValidAttachmentsRequest.Parse(s);
                            ropsList.Add(ropGetValidAttachmentsRequest);
                            break;
                        // MSOXCNOTIF ROPs
                        case RopIdType.RopRegisterNotification:
                            RopRegisterNotificationRequest RopRegisterNotificationRequest = new RopRegisterNotificationRequest();
                            RopRegisterNotificationRequest.Parse(s);
                            ropsList.Add(RopRegisterNotificationRequest);
                            break;

                        // MS-OXCPERM ROPs
                        case RopIdType.RopGetPermissionsTable:
                            RopGetPermissionsTableRequest RopGetPermissionsTableRequest = new RopGetPermissionsTableRequest();
                            RopGetPermissionsTableRequest.Parse(s);
                            ropsList.Add(RopGetPermissionsTableRequest);
                            break;

                        case RopIdType.RopModifyPermissions:
                            RopModifyPermissionsRequest RopModifyPermissionsRequest = new RopModifyPermissionsRequest();
                            RopModifyPermissionsRequest.Parse(s);
                            ropsList.Add(RopModifyPermissionsRequest);
                            break;

                        default:
                            object RopsBytes = ReadBytes(this.RopSize - 2);
                            ropsList.Add(RopsBytes);
                            break;
                    }
                    RopRemainSize.Add(this.RopSize - (uint)s.Position);
                } while (s.Position < this.RopSize);
            }
            else
            {
                this.RopsList = null;
            }

            if (DecodingContext.SessionRequestRemainSize.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
            {
                DecodingContext.SessionRequestRemainSize.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
            }
            DecodingContext.SessionRequestRemainSize.Add(MapiInspector.MAPIInspector.currentParsingSessionID, RopRemainSize);

            this.RopsList = ropsList.ToArray();

            while (s.Position < s.Length)
            {
                uint ServerObjectHandle = ReadUint();
                serverObjectHandleTable.Add(ServerObjectHandle);
            }
            this.ServerObjectHandleTable = serverObjectHandleTable.ToArray();

            if (this.RopsList.Length > 0)
            {
                Dictionary<uint, PropertyTag[]> HandleMapForSetColumns = new Dictionary<uint, PropertyTag[]>();
                Dictionary<uint, PropertyTag[]> HandleIndexMapForSetColumns = new Dictionary<uint, PropertyTag[]>();

                foreach (var ropRequest in this.RopsList)
                {
                    // This is used to store InputServerObject in RopFastTransferSourceGetBufferRequest.
                    if (ropRequest is RopFastTransferSourceGetBufferRequest)
                    {
                        uint objectHandleKey = this.ServerObjectHandleTable[(ropRequest as RopFastTransferSourceGetBufferRequest).InputHandleIndex];

                        if (DecodingContext.GetBuffer_InPutHandles.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
                        {
                            DecodingContext.GetBuffer_InPutHandles.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
                        }
                        DecodingContext.GetBuffer_InPutHandles.Add(MapiInspector.MAPIInspector.currentParsingSessionID, (int)objectHandleKey);
                    }

                    // This is used to set FastTransfer stream root type according to InputServerObject of RopFastTransferSourceCopyTo and RopFastTransferSourceCopyProperties rops,  which are used in MS-OXCFXICS
                    else if (ropRequest is RopFastTransferSourceCopyToRequest || ropRequest is RopFastTransferSourceCopyPropertiesRequest)
                    {
                        uint objectHandleKey;
                        if (ropRequest is RopFastTransferSourceCopyToRequest)
                        {
                            objectHandleKey = this.ServerObjectHandleTable[(ropRequest as RopFastTransferSourceCopyToRequest).InputHandleIndex];
                            if (DecodingContext.CopyTo_InputHandles.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
                            {
                                DecodingContext.CopyTo_InputHandles.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
                            }
                            DecodingContext.CopyTo_InputHandles.Add(MapiInspector.MAPIInspector.currentParsingSessionID, (int)objectHandleKey);
                        }
                        else
                        {
                            objectHandleKey = this.ServerObjectHandleTable[(ropRequest as RopFastTransferSourceCopyPropertiesRequest).InputHandleIndex];
                            if (DecodingContext.CopyProperties_InputHandles.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
                            {
                                DecodingContext.CopyProperties_InputHandles.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
                            }
                            DecodingContext.CopyProperties_InputHandles.Add(MapiInspector.MAPIInspector.currentParsingSessionID, (int)objectHandleKey);
                        }

                        if (!DecodingContext.ObjectHandles.ContainsKey((int)objectHandleKey))
                        {
                            if (ropRequest is RopFastTransferSourceCopyToRequest)
                            {
                                throw new MissingInformationException("Need more information about folder or message or attachment object handle", (ushort)(ropRequest as RopFastTransferSourceCopyToRequest).RopId, objectHandleKey);
                            }
                            else
                            {
                                throw new MissingInformationException("Need more information about folder or message or attachment object handle", (ushort)(ropRequest as RopFastTransferSourceCopyPropertiesRequest).RopId, objectHandleKey);
                            }
                        }
                    }
                    // This is used to set FastTransfer stream root type according to InputServerObject of RopFastTransferDestinationConfigureRequest ROP,
                    // which are used in MS-OXCFXICS
                    else if (ropRequest is RopFastTransferDestinationConfigureRequest)
                    {
                        RopFastTransferDestinationConfigureRequest request = ropRequest as RopFastTransferDestinationConfigureRequest;

                        if (request.SourceOperation == SourceOperation.CopyTo || request.SourceOperation == SourceOperation.CopyProperties)
                        {
                            uint objectHandleKeyII = this.ServerObjectHandleTable[request.InputHandleIndex];

                            if (DecodingContext.DestinationConfigure_InputHandles.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
                            {
                                DecodingContext.DestinationConfigure_InputHandles.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
                            }
                            DecodingContext.DestinationConfigure_InputHandles.Add(MapiInspector.MAPIInspector.currentParsingSessionID, (int)objectHandleKeyII);

                            if (!DecodingContext.ObjectHandles.ContainsKey((int)objectHandleKeyII))
                            {
                                throw new MissingInformationException("Need more information about folder or message or attachment object handle", (ushort)(ropRequest as RopFastTransferDestinationConfigureRequest).RopId, objectHandleKeyII);
                            }
                        }
                    }
                    else if (ropRequest is RopSetColumnsRequest)
                    {
                        RopSetColumnsRequest request = ropRequest as RopSetColumnsRequest;
                        uint objectHandleKey = this.ServerObjectHandleTable[request.InputHandleIndex];

                        if (objectHandleKey != 0xFFFF)
                        {
                            // Add the Handle value and Property Tags to the dictionary when the object handle is not equal to 0xFFFFFFFF
                            HandleMapForSetColumns.Add(objectHandleKey, request.PropertyTags);
                        }
                        else
                        {
                            // Add the Handle value and Property Tags to the dictionary when the object handle is equal to 0xFFFFFFFF
                            HandleIndexMapForSetColumns.Add(request.InputHandleIndex, request.PropertyTags);
                        }
                    }
                    else if (ropRequest is RopReleaseRequest)
                    {
                        uint ObjectHandle = this.ServerObjectHandleTable[(ropRequest as RopReleaseRequest).InputHandleIndex];

                        foreach (KeyValuePair<int, Dictionary<uint, PropertyTag[]>> entry in DecodingContext.SetColumnProTagMap_Handle)
                        {
                            if (entry.Value.ContainsKey(ObjectHandle))
                            {
                                entry.Value.Remove(ObjectHandle);
                            }
                        }
                    }
                }

                if (HandleMapForSetColumns.Count > 0)
                {
                    if (DecodingContext.SetColumnProTagMap_Handle.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
                    {
                        foreach (uint key in HandleMapForSetColumns.Keys)
                        {
                            if (DecodingContext.SetColumnProTagMap_Handle[MapiInspector.MAPIInspector.currentParsingSessionID].ContainsKey(key))
                            {
                                DecodingContext.SetColumnProTagMap_Handle[MapiInspector.MAPIInspector.currentParsingSessionID].Remove(key);
                            }
                            else
                            {
                                DecodingContext.SetColumnProTagMap_Handle[MapiInspector.MAPIInspector.currentParsingSessionID].Add(key, HandleMapForSetColumns[key]);
                            }
                        }
                    }
                    else
                    {
                        DecodingContext.SetColumnProTagMap_Handle.Add(MapiInspector.MAPIInspector.currentParsingSessionID, HandleMapForSetColumns);
                    }
                }

                if (HandleIndexMapForSetColumns.Count > 0)
                {
                    if (DecodingContext.SetColumnProTagMap_Index.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
                    {
                        foreach (uint key in HandleIndexMapForSetColumns.Keys)
                        {
                            if (DecodingContext.SetColumnProTagMap_Index[MapiInspector.MAPIInspector.currentParsingSessionID].ContainsKey(key))
                            {
                                DecodingContext.SetColumnProTagMap_Index[MapiInspector.MAPIInspector.currentParsingSessionID].Remove(key);
                            }
                            else
                            {
                                DecodingContext.SetColumnProTagMap_Index[MapiInspector.MAPIInspector.currentParsingSessionID].Add(key, HandleIndexMapForSetColumns[key]);
                            }
                        }
                    }
                    else
                    {
                        DecodingContext.SetColumnProTagMap_Index.Add(MapiInspector.MAPIInspector.currentParsingSessionID, HandleIndexMapForSetColumns);
                    }
                }
            }
        }
All Usage Examples Of MAPIInspector.Parsers.RopTransportNewMailRequest::Parse
RopTransportNewMailRequest