/// <summary>
/// Parse the ROPOutputBuffer structure.
/// </summary>
/// <param name="s">A stream containing the ROPOutputBuffer 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> tempServerObjectHandleTable = new List<uint>();
long currentPosition = s.Position;
s.Position += (this.RopSize - 2);
while (s.Position < s.Length)
{
uint serverObjectTable = ReadUint();
tempServerObjectHandleTable.Add(serverObjectTable);
}
s.Position = currentPosition;
if (this.RopSize > 2)
{
do
{
int CurrentByte = s.ReadByte();
s.Position -= 1;
switch ((RopIdType)CurrentByte)
{
// MS-OXCSTOR ROPs
case RopIdType.RopLogon:
if (DecodingContext.SessionLogonFlag != null && DecodingContext.SessionLogonFlag.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
{
DecodingContext.LogonFlags = DecodingContext.SessionLogonFlag[MapiInspector.MAPIInspector.currentParsingSessionID];
}
else
{
throw new MissingInformationException("Missing LogonFlags information for RopLogon", (ushort)CurrentByte, null);
}
if (((byte)DecodingContext.LogonFlags & 0x01) == (byte)LogonFlags.Private)
{
RopLogonResponse_PrivateMailboxes RopLogonResponse_PrivateMailboxes = new RopLogonResponse_PrivateMailboxes();
RopLogonResponse_PrivateMailboxes.Parse(s);
ropsList.Add(RopLogonResponse_PrivateMailboxes);
break;
}
else
{
RopLogonResponse_PublicFolders RopLogonResponse_PublicFolders = new RopLogonResponse_PublicFolders();
RopLogonResponse_PublicFolders.Parse(s);
ropsList.Add(RopLogonResponse_PublicFolders);
break;
}
case RopIdType.RopGetReceiveFolder:
RopGetReceiveFolderResponse RopGetReceiveFolderResponse = new RopGetReceiveFolderResponse();
RopGetReceiveFolderResponse.Parse(s);
ropsList.Add(RopGetReceiveFolderResponse);
break;
case RopIdType.RopSetReceiveFolder:
RopSetReceiveFolderResponse RopSetReceiveFolderResponse = new RopSetReceiveFolderResponse();
RopSetReceiveFolderResponse.Parse(s);
ropsList.Add(RopSetReceiveFolderResponse);
break;
case RopIdType.RopGetReceiveFolderTable:
RopGetReceiveFolderTableResponse RopGetReceiveFolderTableResponse = new RopGetReceiveFolderTableResponse();
RopGetReceiveFolderTableResponse.Parse(s);
ropsList.Add(RopGetReceiveFolderTableResponse);
break;
case RopIdType.RopGetStoreState:
RopGetStoreStateResponse RopGetStoreStateResponse = new RopGetStoreStateResponse();
RopGetStoreStateResponse.Parse(s);
ropsList.Add(RopGetStoreStateResponse);
break;
case RopIdType.RopGetOwningServers:
RopGetOwningServersResponse RopGetOwningServersResponse = new RopGetOwningServersResponse();
RopGetOwningServersResponse.Parse(s);
ropsList.Add(RopGetOwningServersResponse);
break;
case RopIdType.RopPublicFolderIsGhosted:
RopPublicFolderIsGhostedResponse RopPublicFolderIsGhostedResponse = new RopPublicFolderIsGhostedResponse();
RopPublicFolderIsGhostedResponse.Parse(s);
ropsList.Add(RopPublicFolderIsGhostedResponse);
break;
case RopIdType.RopLongTermIdFromId:
RopLongTermIdFromIdResponse RopLongTermIdFromIdResponse = new RopLongTermIdFromIdResponse();
RopLongTermIdFromIdResponse.Parse(s);
ropsList.Add(RopLongTermIdFromIdResponse);
break;
case RopIdType.RopIdFromLongTermId:
RopIdFromLongTermIdResponse RopIdFromLongTermIdResponse = new RopIdFromLongTermIdResponse();
RopIdFromLongTermIdResponse.Parse(s);
ropsList.Add(RopIdFromLongTermIdResponse);
break;
case RopIdType.RopGetPerUserLongTermIds:
RopGetPerUserLongTermIdsResponse RopGetPerUserLongTermIdsResponse = new RopGetPerUserLongTermIdsResponse();
RopGetPerUserLongTermIdsResponse.Parse(s);
ropsList.Add(RopGetPerUserLongTermIdsResponse);
break;
case RopIdType.RopGetPerUserGuid:
RopGetPerUserGuidResponse RopGetPerUserGuidResponse = new RopGetPerUserGuidResponse();
RopGetPerUserGuidResponse.Parse(s);
ropsList.Add(RopGetPerUserGuidResponse);
break;
case RopIdType.RopReadPerUserInformation:
RopReadPerUserInformationResponse RopReadPerUserInformationResponse = new RopReadPerUserInformationResponse();
RopReadPerUserInformationResponse.Parse(s);
ropsList.Add(RopReadPerUserInformationResponse);
break;
case RopIdType.RopWritePerUserInformation:
RopWritePerUserInformationResponse RopWritePerUserInformationResponse = new RopWritePerUserInformationResponse();
RopWritePerUserInformationResponse.Parse(s);
ropsList.Add(RopWritePerUserInformationResponse);
break;
// MS-OXCROPS ROPs
case RopIdType.RopSubmitMessage:
RopSubmitMessageResponse RopSubmitMessageResponse = new RopSubmitMessageResponse();
RopSubmitMessageResponse.Parse(s);
ropsList.Add(RopSubmitMessageResponse);
break;
case RopIdType.RopAbortSubmit:
RopAbortSubmitResponse RopAbortSubmitResponse = new RopAbortSubmitResponse();
RopAbortSubmitResponse.Parse(s);
ropsList.Add(RopAbortSubmitResponse);
break;
case RopIdType.RopGetAddressTypes:
RopGetAddressTypesResponse RopGetAddressTypesResponse = new RopGetAddressTypesResponse();
RopGetAddressTypesResponse.Parse(s);
ropsList.Add(RopGetAddressTypesResponse);
break;
case RopIdType.RopSetSpooler:
RopSetSpoolerResponse RopSetSpoolerResponse = new RopSetSpoolerResponse();
RopSetSpoolerResponse.Parse(s);
ropsList.Add(RopSetSpoolerResponse);
break;
case RopIdType.RopSpoolerLockMessage:
RopSpoolerLockMessageResponse RopSpoolerLockMessageResponse = new RopSpoolerLockMessageResponse();
RopSpoolerLockMessageResponse.Parse(s);
ropsList.Add(RopSpoolerLockMessageResponse);
break;
case RopIdType.RopTransportSend:
RopTransportSendResponse RopTransportSendResponse = new RopTransportSendResponse();
RopTransportSendResponse.Parse(s);
ropsList.Add(RopTransportSendResponse);
break;
case RopIdType.RopTransportNewMail:
RopTransportNewMailResponse RopTransportNewMailResponse = new RopTransportNewMailResponse();
RopTransportNewMailResponse.Parse(s);
ropsList.Add(RopTransportNewMailResponse);
break;
case RopIdType.RopGetTransportFolder:
RopGetTransportFolderResponse RopGetTransportFolderResponse = new RopGetTransportFolderResponse();
RopGetTransportFolderResponse.Parse(s);
ropsList.Add(RopGetTransportFolderResponse);
break;
case RopIdType.RopOptionsData:
RopOptionsDataResponse RopOptionsDataResponse = new RopOptionsDataResponse();
RopOptionsDataResponse.Parse(s);
ropsList.Add(RopOptionsDataResponse);
break;
case RopIdType.RopBackoff:
RopBackoffResponse RopBackoffResponse = new RopBackoffResponse();
RopBackoffResponse.Parse(s);
ropsList.Add(RopBackoffResponse);
break;
case RopIdType.RopBufferTooSmall:
if (DecodingContext.SessionRequestRemainSize != null && DecodingContext.SessionRequestRemainSize.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
{
uint RequestBuffersSize = 0;
int RopCountInResponse = ropsList.Count;
if (DecodingContext.SessionRequestRemainSize[MapiInspector.MAPIInspector.currentParsingSessionID].Count > RopCountInResponse)
{
RequestBuffersSize = DecodingContext.SessionRequestRemainSize[MapiInspector.MAPIInspector.currentParsingSessionID][RopCountInResponse - 1];
}
RopBufferTooSmallResponse RopBufferTooSmallResponse = new RopBufferTooSmallResponse(RequestBuffersSize);
RopBufferTooSmallResponse.Parse(s);
ropsList.Add(RopBufferTooSmallResponse);
break;
}
else
{
throw new MissingInformationException("Missing RequestBuffersSize information for RopBufferTooSmall", (ushort)CurrentByte, null);
}
// MSOXCTABL ROPs
case RopIdType.RopSetColumns:
RopSetColumnsResponse RopSetColumnsResponse = new RopSetColumnsResponse();
RopSetColumnsResponse.Parse(s);
ropsList.Add(RopSetColumnsResponse);
if ((ErrorCodes)RopSetColumnsResponse.ReturnValue == ErrorCodes.Success)
{
if (DecodingContext.SetColumnProTagMap_Index != null && DecodingContext.SetColumnProTagMap_Index.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID)
&& DecodingContext.SetColumnProTagMap_Index[MapiInspector.MAPIInspector.currentParsingSessionID].ContainsKey(RopSetColumnsResponse.InputHandleIndex))
{
if (DecodingContext.SetColumnProTagMap_Handle.Count == 0)
{
Dictionary<uint, PropertyTag[]> dic = new Dictionary<uint, PropertyTag[]>();
dic.Add(tempServerObjectHandleTable[RopSetColumnsResponse.InputHandleIndex], DecodingContext.SetColumnProTagMap_Index[MapiInspector.MAPIInspector.currentParsingSessionID][RopSetColumnsResponse.InputHandleIndex]);
DecodingContext.SetColumnProTagMap_Handle.Add(MapiInspector.MAPIInspector.currentParsingSessionID, dic);
}
else if (DecodingContext.SetColumnProTagMap_Handle.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID) && DecodingContext.SetColumnProTagMap_Handle[MapiInspector.MAPIInspector.currentParsingSessionID].ContainsKey(tempServerObjectHandleTable[RopSetColumnsResponse.InputHandleIndex]))
{
DecodingContext.SetColumnProTagMap_Handle[MapiInspector.MAPIInspector.currentParsingSessionID].Remove(tempServerObjectHandleTable[RopSetColumnsResponse.InputHandleIndex]);
DecodingContext.SetColumnProTagMap_Handle[MapiInspector.MAPIInspector.currentParsingSessionID].Add(tempServerObjectHandleTable[RopSetColumnsResponse.InputHandleIndex], DecodingContext.SetColumnProTagMap_Index[MapiInspector.MAPIInspector.currentParsingSessionID][RopSetColumnsResponse.InputHandleIndex]);
}
}
}
break;
case RopIdType.RopSortTable:
RopSortTableResponse RopSortTableResponse = new RopSortTableResponse();
RopSortTableResponse.Parse(s);
ropsList.Add(RopSortTableResponse);
break;
case RopIdType.RopRestrict:
RopRestrictResponse RopRestrictResponse = new RopRestrictResponse();
RopRestrictResponse.Parse(s);
ropsList.Add(RopRestrictResponse);
break;
case RopIdType.RopQueryRows:
long currentPos = s.Position;
s.Position += 1;
int TempInputHandleIndex = s.ReadByte();
UInt32 returnValue_queryRow = ReadUint();
s.Position = currentPos;
if (returnValue_queryRow == 0)
{
if (DecodingContext.SetColumnProTagMap_Handle != null && DecodingContext.SetColumnProTagMap_Handle.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID) && DecodingContext.SetColumnProTagMap_Handle[MapiInspector.MAPIInspector.currentParsingSessionID].ContainsKey(tempServerObjectHandleTable[TempInputHandleIndex]))
{
RopQueryRowsResponse RopQueryRowsResponse = new RopQueryRowsResponse(DecodingContext.SetColumnProTagMap_Handle[MapiInspector.MAPIInspector.currentParsingSessionID][tempServerObjectHandleTable[TempInputHandleIndex]]);
RopQueryRowsResponse.Parse(s);
ropsList.Add(RopQueryRowsResponse);
break;
}
else
{
throw new MissingInformationException("Missing PropertyTags information for RopQueryRowsResponse", (ushort)RopIdType.RopQueryRows, tempServerObjectHandleTable[TempInputHandleIndex]);
}
}
else
{
RopQueryRowsResponse ropQueryRowsResponse = new RopQueryRowsResponse(null);
ropQueryRowsResponse.Parse(s);
ropsList.Add(ropQueryRowsResponse);
break;
}
case RopIdType.RopAbort:
RopAbortResponse RopAbortResponse = new RopAbortResponse();
RopAbortResponse.Parse(s);
ropsList.Add(RopAbortResponse);
break;
case RopIdType.RopGetStatus:
RopGetStatusResponse RopGetStatusResponse = new RopGetStatusResponse();
RopGetStatusResponse.Parse(s);
ropsList.Add(RopGetStatusResponse);
break;
case RopIdType.RopQueryPosition:
RopQueryPositionResponse RopQueryPositionResponse = new RopQueryPositionResponse();
RopQueryPositionResponse.Parse(s);
ropsList.Add(RopQueryPositionResponse);
break;
case RopIdType.RopSeekRow:
RopSeekRowResponse RopSeekRowResponse = new RopSeekRowResponse();
RopSeekRowResponse.Parse(s);
ropsList.Add(RopSeekRowResponse);
break;
case RopIdType.RopSeekRowBookmark:
RopSeekRowBookmarkResponse RopSeekRowBookmarkResponse = new RopSeekRowBookmarkResponse();
RopSeekRowBookmarkResponse.Parse(s);
ropsList.Add(RopSeekRowBookmarkResponse);
break;
case RopIdType.RopSeekRowFractional:
RopSeekRowFractionalResponse RopSeekRowFractionalResponse = new RopSeekRowFractionalResponse();
RopSeekRowFractionalResponse.Parse(s);
ropsList.Add(RopSeekRowFractionalResponse);
break;
case RopIdType.RopCreateBookmark:
RopCreateBookmarkResponse RopCreateBookmarkResponse = new RopCreateBookmarkResponse();
RopCreateBookmarkResponse.Parse(s);
ropsList.Add(RopCreateBookmarkResponse);
break;
case RopIdType.RopQueryColumnsAll:
RopQueryColumnsAllResponse RopQueryColumnsAllResponse = new RopQueryColumnsAllResponse();
RopQueryColumnsAllResponse.Parse(s);
ropsList.Add(RopQueryColumnsAllResponse);
break;
case RopIdType.RopFindRow:
long currentPos_findRow = s.Position;
s.Position += 1;
int TempInputHandleIndex_findRow = s.ReadByte();
UInt32 returnValue_findRow = ReadUint();
s.Position = currentPos_findRow;
if (returnValue_findRow == 0)
{
if (DecodingContext.SetColumnProTagMap_Handle != null && DecodingContext.SetColumnProTagMap_Handle.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID) && DecodingContext.SetColumnProTagMap_Handle[MapiInspector.MAPIInspector.currentParsingSessionID].ContainsKey(tempServerObjectHandleTable[TempInputHandleIndex_findRow]))
{
RopFindRowResponse ropFindRowResponse = new RopFindRowResponse(DecodingContext.SetColumnProTagMap_Handle[MapiInspector.MAPIInspector.currentParsingSessionID][tempServerObjectHandleTable[TempInputHandleIndex_findRow]]);
ropFindRowResponse.Parse(s);
ropsList.Add(ropFindRowResponse);
break;
}
else
{
throw new MissingInformationException("Missing PropertyTags information for RopFindRowsResponse", (ushort)RopIdType.RopFindRow, tempServerObjectHandleTable[TempInputHandleIndex_findRow]);
}
}
else
{
RopFindRowResponse RopFindRowResponse = new RopFindRowResponse(null);
RopFindRowResponse.Parse(s);
ropsList.Add(RopFindRowResponse);
break;
}
case RopIdType.RopFreeBookmark:
RopFreeBookmarkResponse RopFreeBookmarkResponse = new RopFreeBookmarkResponse();
RopFreeBookmarkResponse.Parse(s);
ropsList.Add(RopFreeBookmarkResponse);
break;
case RopIdType.RopResetTable:
RopResetTableResponse RopResetTableResponse = new RopResetTableResponse();
RopResetTableResponse.Parse(s);
ropsList.Add(RopResetTableResponse);
break;
case RopIdType.RopExpandRow:
long currentPos_expandRow = s.Position;
s.Position += 1;
int TempInputHandleIndex_expandRow = s.ReadByte();
UInt32 returnValue_expandRow = ReadUint();
s.Position = currentPos_expandRow;
if (returnValue_expandRow == 0)
{
if (DecodingContext.SetColumnProTagMap_Handle != null && DecodingContext.SetColumnProTagMap_Handle.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID) && DecodingContext.SetColumnProTagMap_Handle[MapiInspector.MAPIInspector.currentParsingSessionID].ContainsKey(tempServerObjectHandleTable[TempInputHandleIndex_expandRow]))
{
RopExpandRowResponse ropFindRowResponse = new RopExpandRowResponse(DecodingContext.SetColumnProTagMap_Handle[MapiInspector.MAPIInspector.currentParsingSessionID][tempServerObjectHandleTable[TempInputHandleIndex_expandRow]]);
ropFindRowResponse.Parse(s);
ropsList.Add(ropFindRowResponse);
break;
}
else
{
throw new MissingInformationException("Missing PropertyTags information for RopExpandRowsResponse", (ushort)RopIdType.RopExpandRow, tempServerObjectHandleTable[TempInputHandleIndex_expandRow]);
}
}
else
{
RopExpandRowResponse RopFindRowResponse = new RopExpandRowResponse(null);
RopFindRowResponse.Parse(s);
ropsList.Add(RopFindRowResponse);
break;
}
case RopIdType.RopCollapseRow:
RopCollapseRowResponse RopCollapseRowResponse = new RopCollapseRowResponse();
RopCollapseRowResponse.Parse(s);
ropsList.Add(RopCollapseRowResponse);
break;
case RopIdType.RopGetCollapseState:
RopGetCollapseStateResponse RopGetCollapseStateResponse = new RopGetCollapseStateResponse();
RopGetCollapseStateResponse.Parse(s);
ropsList.Add(RopGetCollapseStateResponse);
break;
case RopIdType.RopSetCollapseState:
RopSetCollapseStateResponse RopSetCollapseStateResponse = new RopSetCollapseStateResponse();
RopSetCollapseStateResponse.Parse(s);
ropsList.Add(RopSetCollapseStateResponse);
break;
// MSOXORULE ROPs
case RopIdType.RopModifyRules:
RopModifyRulesResponse RopModifyRulesResponse = new RopModifyRulesResponse();
RopModifyRulesResponse.Parse(s);
ropsList.Add(RopModifyRulesResponse);
break;
case RopIdType.RopGetRulesTable:
RopGetRulesTableResponse RopGetRulesTableResponse = new RopGetRulesTableResponse();
RopGetRulesTableResponse.Parse(s);
ropsList.Add(RopGetRulesTableResponse);
break;
case RopIdType.RopUpdateDeferredActionMessages:
RopUpdateDeferredActionMessagesResponse RopUpdateDeferredActionMessagesResponse = new RopUpdateDeferredActionMessagesResponse();
RopUpdateDeferredActionMessagesResponse.Parse(s);
ropsList.Add(RopUpdateDeferredActionMessagesResponse);
break;
//MS-OXCFXICS ROPs
case RopIdType.RopFastTransferSourceCopyProperties:
RopFastTransferSourceCopyPropertiesResponse RopFastTransferSourceCopyPropertiesResponse = new RopFastTransferSourceCopyPropertiesResponse();
RopFastTransferSourceCopyPropertiesResponse.Parse(s);
ropsList.Add(RopFastTransferSourceCopyPropertiesResponse);
break;
case RopIdType.RopFastTransferSourceCopyTo:
RopFastTransferSourceCopyToResponse RopFastTransferSourceCopyToResponse = new RopFastTransferSourceCopyToResponse();
RopFastTransferSourceCopyToResponse.Parse(s);
ropsList.Add(RopFastTransferSourceCopyToResponse);
break;
case RopIdType.RopFastTransferSourceCopyMessages:
RopFastTransferSourceCopyMessagesResponse RopFastTransferSourceCopyMessagesResponse = new RopFastTransferSourceCopyMessagesResponse();
RopFastTransferSourceCopyMessagesResponse.Parse(s);
ropsList.Add(RopFastTransferSourceCopyMessagesResponse);
break;
case RopIdType.RopFastTransferSourceCopyFolder:
RopFastTransferSourceCopyFolderResponse RopFastTransferSourceCopyFolderResponse = new RopFastTransferSourceCopyFolderResponse();
RopFastTransferSourceCopyFolderResponse.Parse(s);
ropsList.Add(RopFastTransferSourceCopyFolderResponse);
break;
case RopIdType.RopFastTransferSourceGetBuffer:
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 RopFastTransferSourceGetBufferResponse", (ushort)CurrentByte, null);
}
RopFastTransferSourceGetBufferResponse RopFastTransferSourceGetBufferResponse = new RopFastTransferSourceGetBufferResponse();
RopFastTransferSourceGetBufferResponse.Parse(s);
ropsList.Add(RopFastTransferSourceGetBufferResponse);
break;
case RopIdType.RopTellVersion:
RopTellVersionResponse RopTellVersionResponse = new RopTellVersionResponse();
RopTellVersionResponse.Parse(s);
ropsList.Add(RopTellVersionResponse);
break;
case RopIdType.RopSynchronizationGetTransferState:
RopSynchronizationGetTransferStateResponse RopSynchronizationGetTransferStateResponse = new RopSynchronizationGetTransferStateResponse();
RopSynchronizationGetTransferStateResponse.Parse(s);
ropsList.Add(RopSynchronizationGetTransferStateResponse);
break;
case RopIdType.RopFastTransferDestinationConfigure:
RopFastTransferDestinationConfigureResponse RopFastTransferDestinationConfigureResponse = new RopFastTransferDestinationConfigureResponse();
RopFastTransferDestinationConfigureResponse.Parse(s);
ropsList.Add(RopFastTransferDestinationConfigureResponse);
break;
case RopIdType.RopFastTransferDestinationPutBuffer:
RopFastTransferDestinationPutBufferResponse RopFastTransferDestinationPutBufferResponse = new RopFastTransferDestinationPutBufferResponse();
RopFastTransferDestinationPutBufferResponse.Parse(s);
ropsList.Add(RopFastTransferDestinationPutBufferResponse);
break;
case RopIdType.RopSynchronizationConfigure:
RopSynchronizationConfigureResponse RopSynchronizationConfigureResponse = new RopSynchronizationConfigureResponse();
RopSynchronizationConfigureResponse.Parse(s);
ropsList.Add(RopSynchronizationConfigureResponse);
break;
case RopIdType.RopSynchronizationUploadStateStreamBegin:
RopSynchronizationUploadStateStreamBeginResponse RopSynchronizationUploadStateStreamBeginResponse = new RopSynchronizationUploadStateStreamBeginResponse();
RopSynchronizationUploadStateStreamBeginResponse.Parse(s);
ropsList.Add(RopSynchronizationUploadStateStreamBeginResponse);
break;
case RopIdType.RopSynchronizationUploadStateStreamContinue:
RopSynchronizationUploadStateStreamContinueResponse RopSynchronizationUploadStateStreamContinueResponse = new RopSynchronizationUploadStateStreamContinueResponse();
RopSynchronizationUploadStateStreamContinueResponse.Parse(s);
ropsList.Add(RopSynchronizationUploadStateStreamContinueResponse);
break;
case RopIdType.RopSynchronizationUploadStateStreamEnd:
RopSynchronizationUploadStateStreamEndResponse RopSynchronizationUploadStateStreamEndResponse = new RopSynchronizationUploadStateStreamEndResponse();
RopSynchronizationUploadStateStreamEndResponse.Parse(s);
ropsList.Add(RopSynchronizationUploadStateStreamEndResponse);
break;
case RopIdType.RopSynchronizationOpenCollector:
RopSynchronizationOpenCollectorResponse RopSynchronizationOpenCollectorResponse = new RopSynchronizationOpenCollectorResponse();
RopSynchronizationOpenCollectorResponse.Parse(s);
ropsList.Add(RopSynchronizationOpenCollectorResponse);
break;
case RopIdType.RopSynchronizationImportMessageChange:
RopSynchronizationImportMessageChangeResponse RopSynchronizationImportMessageChangeResponse = new RopSynchronizationImportMessageChangeResponse();
RopSynchronizationImportMessageChangeResponse.Parse(s);
ropsList.Add(RopSynchronizationImportMessageChangeResponse);
break;
case RopIdType.RopSynchronizationImportHierarchyChange:
RopSynchronizationImportHierarchyChangeResponse RopSynchronizationImportHierarchyChangeResponse = new RopSynchronizationImportHierarchyChangeResponse();
RopSynchronizationImportHierarchyChangeResponse.Parse(s);
ropsList.Add(RopSynchronizationImportHierarchyChangeResponse);
break;
case RopIdType.RopSynchronizationImportMessageMove:
RopSynchronizationImportMessageMoveResponse RopSynchronizationImportMessageMoveResponse = new RopSynchronizationImportMessageMoveResponse();
RopSynchronizationImportMessageMoveResponse.Parse(s);
ropsList.Add(RopSynchronizationImportMessageMoveResponse);
break;
case RopIdType.RopSynchronizationImportDeletes:
RopSynchronizationImportDeletesResponse RopSynchronizationImportDeletesResponse = new RopSynchronizationImportDeletesResponse();
RopSynchronizationImportDeletesResponse.Parse(s);
ropsList.Add(RopSynchronizationImportDeletesResponse);
break;
case RopIdType.RopSynchronizationImportReadStateChanges:
RopSynchronizationImportReadStateChangesResponse RopSynchronizationImportReadStateChangesResponse = new RopSynchronizationImportReadStateChangesResponse();
RopSynchronizationImportReadStateChangesResponse.Parse(s);
ropsList.Add(RopSynchronizationImportReadStateChangesResponse);
break;
case RopIdType.RopGetLocalReplicaIds:
RopGetLocalReplicaIdsResponse RopGetLocalReplicaIdsResponse = new RopGetLocalReplicaIdsResponse();
RopGetLocalReplicaIdsResponse.Parse(s);
ropsList.Add(RopGetLocalReplicaIdsResponse);
break;
case RopIdType.RopSetLocalReplicaMidsetDeleted:
RopSetLocalReplicaMidsetDeletedResponse RopSetLocalReplicaMidsetDeletedResponse = new RopSetLocalReplicaMidsetDeletedResponse();
RopSetLocalReplicaMidsetDeletedResponse.Parse(s);
ropsList.Add(RopSetLocalReplicaMidsetDeletedResponse);
break;
// MS-OXCPRPT ROPs
case RopIdType.RopGetPropertiesSpecific:
if (!(DecodingContext.SessionPropertyTags != null && DecodingContext.SessionPropertyTags.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID)))
{
throw new MissingInformationException("Missing PropertyTags information for RopFastTransferSourceCopyProperties", (ushort)CurrentByte, null);
}
RopGetPropertiesSpecificResponse RopGetPropertiesSpecificResponse = new RopGetPropertiesSpecificResponse();
RopGetPropertiesSpecificResponse.Parse(s);
ropsList.Add(RopGetPropertiesSpecificResponse);
break;
case RopIdType.RopGetPropertiesAll:
RopGetPropertiesAllResponse RopGetPropertiesAllResponse = new RopGetPropertiesAllResponse();
RopGetPropertiesAllResponse.Parse(s);
ropsList.Add(RopGetPropertiesAllResponse);
break;
case RopIdType.RopGetPropertiesList:
RopGetPropertiesListResponse RopGetPropertiesListResponse = new RopGetPropertiesListResponse();
RopGetPropertiesListResponse.Parse(s);
ropsList.Add(RopGetPropertiesListResponse);
break;
case RopIdType.RopSetProperties:
RopSetPropertiesResponse RopSetPropertiesResponse = new RopSetPropertiesResponse();
RopSetPropertiesResponse.Parse(s);
ropsList.Add(RopSetPropertiesResponse);
break;
case RopIdType.RopSetPropertiesNoReplicate:
RopSetPropertiesNoReplicateResponse RopSetPropertiesNoReplicateResponse = new RopSetPropertiesNoReplicateResponse();
RopSetPropertiesNoReplicateResponse.Parse(s);
ropsList.Add(RopSetPropertiesNoReplicateResponse);
break;
case RopIdType.RopDeleteProperties:
RopDeletePropertiesResponse RopDeletePropertiesResponse = new RopDeletePropertiesResponse();
RopDeletePropertiesResponse.Parse(s);
ropsList.Add(RopDeletePropertiesResponse);
break;
case RopIdType.RopDeletePropertiesNoReplicate:
RopDeletePropertiesNoReplicateResponse RopDeletePropertiesNoReplicateResponse = new RopDeletePropertiesNoReplicateResponse();
RopDeletePropertiesNoReplicateResponse.Parse(s);
ropsList.Add(RopDeletePropertiesNoReplicateResponse);
break;
case RopIdType.RopQueryNamedProperties:
RopQueryNamedPropertiesResponse RopQueryNamedPropertiesResponse = new RopQueryNamedPropertiesResponse();
RopQueryNamedPropertiesResponse.Parse(s);
ropsList.Add(RopQueryNamedPropertiesResponse);
break;
case RopIdType.RopCopyProperties:
RopCopyPropertiesResponse RopCopyPropertiesResponse = new RopCopyPropertiesResponse();
RopCopyPropertiesResponse.Parse(s);
ropsList.Add(RopCopyPropertiesResponse);
break;
case RopIdType.RopCopyTo:
RopCopyToResponse RopCopyToResponse = new RopCopyToResponse();
RopCopyToResponse.Parse(s);
ropsList.Add(RopCopyToResponse);
break;
case RopIdType.RopGetPropertyIdsFromNames:
RopGetPropertyIdsFromNamesResponse RopGetPropertyIdsFromNamesResponse = new RopGetPropertyIdsFromNamesResponse();
RopGetPropertyIdsFromNamesResponse.Parse(s);
ropsList.Add(RopGetPropertyIdsFromNamesResponse);
break;
case RopIdType.RopGetNamesFromPropertyIds:
RopGetNamesFromPropertyIdsResponse RopGetNamesFromPropertyIdsResponse = new RopGetNamesFromPropertyIdsResponse();
RopGetNamesFromPropertyIdsResponse.Parse(s);
ropsList.Add(RopGetNamesFromPropertyIdsResponse);
break;
case RopIdType.RopOpenStream:
RopOpenStreamResponse RopOpenStreamResponse = new RopOpenStreamResponse();
RopOpenStreamResponse.Parse(s);
ropsList.Add(RopOpenStreamResponse);
break;
case RopIdType.RopReadStream:
RopReadStreamResponse RopReadStreamResponse = new RopReadStreamResponse();
RopReadStreamResponse.Parse(s);
ropsList.Add(RopReadStreamResponse);
break;
case RopIdType.RopWriteStream:
RopWriteStreamResponse RopWriteStreamResponse = new RopWriteStreamResponse();
RopWriteStreamResponse.Parse(s);
ropsList.Add(RopWriteStreamResponse);
break;
case RopIdType.RopCommitStream:
RopCommitStreamResponse RopCommitStreamResponse = new RopCommitStreamResponse();
RopCommitStreamResponse.Parse(s);
ropsList.Add(RopCommitStreamResponse);
break;
case RopIdType.RopGetStreamSize:
RopGetStreamSizeResponse RopGetStreamSizeResponse = new RopGetStreamSizeResponse();
RopGetStreamSizeResponse.Parse(s);
ropsList.Add(RopGetStreamSizeResponse);
break;
case RopIdType.RopSetStreamSize:
RopSetStreamSizeResponse RopSetStreamSizeResponse = new RopSetStreamSizeResponse();
RopSetStreamSizeResponse.Parse(s);
ropsList.Add(RopSetStreamSizeResponse);
break;
case RopIdType.RopSeekStream:
RopSeekStreamResponse RopSeekStreamResponse = new RopSeekStreamResponse();
RopSeekStreamResponse.Parse(s);
ropsList.Add(RopSeekStreamResponse);
break;
case RopIdType.RopCopyToStream:
RopCopyToStreamResponse RopCopyToStreamResponse = new RopCopyToStreamResponse();
RopCopyToStreamResponse.Parse(s);
ropsList.Add(RopCopyToStreamResponse);
break;
case RopIdType.RopProgress:
RopProgressResponse RopProgressResponse = new RopProgressResponse();
RopProgressResponse.Parse(s);
ropsList.Add(RopProgressResponse);
break;
case RopIdType.RopLockRegionStream:
RopLockRegionStreamResponse RopLockRegionStreamResponse = new RopLockRegionStreamResponse();
RopLockRegionStreamResponse.Parse(s);
ropsList.Add(RopLockRegionStreamResponse);
break;
case RopIdType.RopUnlockRegionStream:
RopUnlockRegionStreamResponse RopUnlockRegionStreamResponse = new RopUnlockRegionStreamResponse();
RopUnlockRegionStreamResponse.Parse(s);
ropsList.Add(RopUnlockRegionStreamResponse);
break;
case RopIdType.RopWriteAndCommitStream:
RopWriteAndCommitStreamResponse RopWriteAndCommitStreamResponse = new RopWriteAndCommitStreamResponse();
RopWriteAndCommitStreamResponse.Parse(s);
ropsList.Add(RopWriteAndCommitStreamResponse);
break;
case RopIdType.RopCloneStream:
RopCloneStreamResponse RopCloneStreamResponse = new RopCloneStreamResponse();
RopCloneStreamResponse.Parse(s);
ropsList.Add(RopCloneStreamResponse);
break;
// MSOXCFOLD ROPs
case RopIdType.RopOpenFolder:
RopOpenFolderResponse RopOpenFolderResponse = new RopOpenFolderResponse();
RopOpenFolderResponse.Parse(s);
ropsList.Add(RopOpenFolderResponse);
break;
case RopIdType.RopCreateFolder:
RopCreateFolderResponse RopCreateFolderResponse = new RopCreateFolderResponse();
RopCreateFolderResponse.Parse(s);
ropsList.Add(RopCreateFolderResponse);
break;
case RopIdType.RopDeleteFolder:
RopDeleteFolderResponse RopDeleteFolderResponse = new RopDeleteFolderResponse();
RopDeleteFolderResponse.Parse(s);
ropsList.Add(RopDeleteFolderResponse);
break;
case RopIdType.RopSetSearchCriteria:
RopSetSearchCriteriaResponse RopSetSearchCriteriaResponse = new RopSetSearchCriteriaResponse();
RopSetSearchCriteriaResponse.Parse(s);
ropsList.Add(RopSetSearchCriteriaResponse);
break;
case RopIdType.RopGetSearchCriteria:
RopGetSearchCriteriaResponse RopGetSearchCriteriaResponse = new RopGetSearchCriteriaResponse();
RopGetSearchCriteriaResponse.Parse(s);
ropsList.Add(RopGetSearchCriteriaResponse);
break;
case RopIdType.RopMoveCopyMessages:
RopMoveCopyMessagesResponse RopMoveCopyMessagesResponse = new RopMoveCopyMessagesResponse();
RopMoveCopyMessagesResponse.Parse(s);
ropsList.Add(RopMoveCopyMessagesResponse);
break;
case RopIdType.RopMoveFolder:
RopMoveFolderResponse RopMoveFolderResponse = new RopMoveFolderResponse();
RopMoveFolderResponse.Parse(s);
ropsList.Add(RopMoveFolderResponse);
break;
case RopIdType.RopCopyFolder:
RopCopyFolderResponse RopCopyFolderResponse = new RopCopyFolderResponse();
RopCopyFolderResponse.Parse(s);
ropsList.Add(RopCopyFolderResponse);
break;
case RopIdType.RopEmptyFolder:
RopEmptyFolderResponse RopEmptyFolderResponse = new RopEmptyFolderResponse();
RopEmptyFolderResponse.Parse(s);
ropsList.Add(RopEmptyFolderResponse);
break;
case RopIdType.RopHardDeleteMessagesAndSubfolders:
RopHardDeleteMessagesAndSubfoldersResponse RopHardDeleteMessagesAndSubfoldersResponse = new RopHardDeleteMessagesAndSubfoldersResponse();
RopHardDeleteMessagesAndSubfoldersResponse.Parse(s);
ropsList.Add(RopHardDeleteMessagesAndSubfoldersResponse);
break;
case RopIdType.RopDeleteMessages:
RopDeleteMessagesResponse RopDeleteMessagesResponse = new RopDeleteMessagesResponse();
RopDeleteMessagesResponse.Parse(s);
ropsList.Add(RopDeleteMessagesResponse);
break;
case RopIdType.RopHardDeleteMessages:
RopHardDeleteMessagesResponse RopHardDeleteMessagesResponse = new RopHardDeleteMessagesResponse();
RopHardDeleteMessagesResponse.Parse(s);
ropsList.Add(RopHardDeleteMessagesResponse);
break;
case RopIdType.RopGetHierarchyTable:
RopGetHierarchyTableResponse RopGetHierarchyTableResponse = new RopGetHierarchyTableResponse();
RopGetHierarchyTableResponse.Parse(s);
ropsList.Add(RopGetHierarchyTableResponse);
break;
case RopIdType.RopGetContentsTable:
RopGetContentsTableResponse RopGetContentsTableResponse = new RopGetContentsTableResponse();
RopGetContentsTableResponse.Parse(s);
ropsList.Add(RopGetContentsTableResponse);
break;
//MS-OXCMSG ROPs
case RopIdType.RopOpenMessage:
RopOpenMessageResponse ropOpenMessageResponse = new RopOpenMessageResponse();
ropOpenMessageResponse.Parse(s);
ropsList.Add(ropOpenMessageResponse);
break;
case RopIdType.RopCreateMessage:
RopCreateMessageResponse ropCreateMessageResponse = new RopCreateMessageResponse();
ropCreateMessageResponse.Parse(s);
ropsList.Add(ropCreateMessageResponse);
break;
case RopIdType.RopSaveChangesMessage:
RopSaveChangesMessageResponse ropSaveChangesMessageResponse = new RopSaveChangesMessageResponse();
ropSaveChangesMessageResponse.Parse(s);
ropsList.Add(ropSaveChangesMessageResponse);
break;
case RopIdType.RopRemoveAllRecipients:
RopRemoveAllRecipientsResponse ropRemoveAllRecipientsResponse = new RopRemoveAllRecipientsResponse();
ropRemoveAllRecipientsResponse.Parse(s);
ropsList.Add(ropRemoveAllRecipientsResponse);
break;
case RopIdType.RopModifyRecipients:
RopModifyRecipientsResponse ropModifyRecipientsResponse = new RopModifyRecipientsResponse();
ropModifyRecipientsResponse.Parse(s);
ropsList.Add(ropModifyRecipientsResponse);
break;
case RopIdType.RopReadRecipients:
RopReadRecipientsResponse ropReadRecipientsResponse = new RopReadRecipientsResponse();
ropReadRecipientsResponse.Parse(s);
ropsList.Add(ropReadRecipientsResponse);
break;
case RopIdType.RopReloadCachedInformation:
RopReloadCachedInformationResponse ropReloadCachedInformationResponse = new RopReloadCachedInformationResponse();
ropReloadCachedInformationResponse.Parse(s);
ropsList.Add(ropReloadCachedInformationResponse);
break;
case RopIdType.RopSetMessageStatus:
RopSetMessageStatusResponse ropSetMessageStatusResponse = new RopSetMessageStatusResponse();
ropSetMessageStatusResponse.Parse(s);
ropsList.Add(ropSetMessageStatusResponse);
break;
case RopIdType.RopGetMessageStatus:
RopGetMessageStatusResponse ropGetMessageStatusResponse = new RopGetMessageStatusResponse();
ropGetMessageStatusResponse.Parse(s);
ropsList.Add(ropGetMessageStatusResponse);
break;
case RopIdType.RopSetReadFlags:
RopSetReadFlagsResponse ropSetReadFlagsResponse = new RopSetReadFlagsResponse();
ropSetReadFlagsResponse.Parse(s);
ropsList.Add(ropSetReadFlagsResponse);
break;
case RopIdType.RopSetMessageReadFlag:
RopSetMessageReadFlagResponse ropSetMessageReadFlagResponse = new RopSetMessageReadFlagResponse();
ropSetMessageReadFlagResponse.Parse(s);
ropsList.Add(ropSetMessageReadFlagResponse);
break;
case RopIdType.RopOpenAttachment:
RopOpenAttachmentResponse ropOpenAttachmentResponse = new RopOpenAttachmentResponse();
ropOpenAttachmentResponse.Parse(s);
ropsList.Add(ropOpenAttachmentResponse);
break;
case RopIdType.RopCreateAttachment:
RopCreateAttachmentResponse ropCreateAttachmentResponse = new RopCreateAttachmentResponse();
ropCreateAttachmentResponse.Parse(s);
ropsList.Add(ropCreateAttachmentResponse);
break;
case RopIdType.RopDeleteAttachment:
RopDeleteAttachmentResponse ropDeleteAttachmentResponse = new RopDeleteAttachmentResponse();
ropDeleteAttachmentResponse.Parse(s);
ropsList.Add(ropDeleteAttachmentResponse);
break;
case RopIdType.RopSaveChangesAttachment:
RopSaveChangesAttachmentResponse ropSaveChangesAttachmentResponse = new RopSaveChangesAttachmentResponse();
ropSaveChangesAttachmentResponse.Parse(s);
ropsList.Add(ropSaveChangesAttachmentResponse);
break;
case RopIdType.RopOpenEmbeddedMessage:
RopOpenEmbeddedMessageResponse ropOpenEmbeddedMessageResponse = new RopOpenEmbeddedMessageResponse();
ropOpenEmbeddedMessageResponse.Parse(s);
ropsList.Add(ropOpenEmbeddedMessageResponse);
break;
case RopIdType.RopGetAttachmentTable:
RopGetAttachmentTableResponse ropGetAttachmentTableResponse = new RopGetAttachmentTableResponse();
ropGetAttachmentTableResponse.Parse(s);
ropsList.Add(ropGetAttachmentTableResponse);
break;
case RopIdType.RopGetValidAttachments:
RopGetValidAttachmentsResponse ropGetValidAttachmentsResponse = new RopGetValidAttachmentsResponse();
ropGetValidAttachmentsResponse.Parse(s);
ropsList.Add(ropGetValidAttachmentsResponse);
break;
// MSOXCNOTIF ROPs
case RopIdType.RopRegisterNotification:
RopRegisterNotificationResponse RopRegisterNotificationResponse = new RopRegisterNotificationResponse();
RopRegisterNotificationResponse.Parse(s);
ropsList.Add(RopRegisterNotificationResponse);
break;
case RopIdType.RopPending:
RopPendingResponse RopPendingResponse = new RopPendingResponse();
RopPendingResponse.Parse(s);
ropsList.Add(RopPendingResponse);
break;
case RopIdType.RopNotify:
RopNotifyResponse ropNotifyResponse = new RopNotifyResponse();
ropNotifyResponse.Parse(s);
ropsList.Add(ropNotifyResponse);
break;
// MS-OXCPERM ROPs
case RopIdType.RopGetPermissionsTable:
RopGetPermissionsTableResponse RopGetPermissionsTableResponse = new RopGetPermissionsTableResponse();
RopGetPermissionsTableResponse.Parse(s);
ropsList.Add(RopGetPermissionsTableResponse);
break;
case RopIdType.RopModifyPermissions:
RopModifyPermissionsResponse RopModifyPermissionsResponse = new RopModifyPermissionsResponse();
RopModifyPermissionsResponse.Parse(s);
ropsList.Add(RopModifyPermissionsResponse);
break;
default:
object RopsBytes = ReadBytes(this.RopSize - (int)s.Position);
ropsList.Add(RopsBytes);
break;
}
} while (s.Position < this.RopSize);
}
else
{
this.RopsList = null;
}
this.RopsList = ropsList.ToArray();
while (s.Position < s.Length)
{
uint ServerObjectHandle = ReadUint();
serverObjectHandleTable.Add(ServerObjectHandle);
}
this.ServerObjectHandleTable = serverObjectHandleTable.ToArray();
if (this.RopsList.Length > 0)
{
foreach (var ropResponse in this.RopsList)
{
if (ropResponse is RopCreateFolderResponse || ropResponse is RopOpenFolderResponse)
{
uint objectHandleKey;
if (ropResponse is RopCreateFolderResponse)
{
objectHandleKey = this.ServerObjectHandleTable[(ropResponse as RopCreateFolderResponse).OutputHandleIndex];
}
else
{
objectHandleKey = this.ServerObjectHandleTable[(ropResponse as RopOpenFolderResponse).OutputHandleIndex];
}
if (DecodingContext.SessionObjectHandles != null && DecodingContext.SessionObjectHandles.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
{
DecodingContext.SessionObjectHandles.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
}
Dictionary<int, ObjectHandlesType> tmpObjectHandle = new Dictionary<int, ObjectHandlesType>() { { (int)objectHandleKey, ObjectHandlesType.FolderHandles } };
DecodingContext.SessionObjectHandles.Add(MapiInspector.MAPIInspector.currentParsingSessionID, tmpObjectHandle);
if (DecodingContext.ObjectHandles != null && DecodingContext.ObjectHandles.ContainsKey((int)objectHandleKey))
{
DecodingContext.ObjectHandles.Remove((int)objectHandleKey);
}
DecodingContext.ObjectHandles.Add((int)objectHandleKey, ObjectHandlesType.FolderHandles);
}
else if (ropResponse is RopCreateMessageResponse)
{
uint objectHandleKey = this.ServerObjectHandleTable[(ropResponse as RopCreateMessageResponse).OutputHandleIndex];
if (DecodingContext.SessionObjectHandles != null && DecodingContext.SessionObjectHandles.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
{
DecodingContext.SessionObjectHandles.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
}
Dictionary<int, ObjectHandlesType> tmpObjectHandle = new Dictionary<int, ObjectHandlesType>() { { (int)objectHandleKey, ObjectHandlesType.MessageHandles } };
DecodingContext.SessionObjectHandles.Add(MapiInspector.MAPIInspector.currentParsingSessionID, tmpObjectHandle);
if (DecodingContext.ObjectHandles != null && DecodingContext.ObjectHandles.ContainsKey((int)objectHandleKey))
{
DecodingContext.ObjectHandles.Remove((int)objectHandleKey);
}
DecodingContext.ObjectHandles.Add((int)objectHandleKey, ObjectHandlesType.MessageHandles);
}
else if (ropResponse is RopCreateAttachmentResponse)
{
uint objectHandleKey = this.ServerObjectHandleTable[(ropResponse as RopCreateAttachmentResponse).OutputHandleIndex];
if (DecodingContext.SessionObjectHandles != null && DecodingContext.SessionObjectHandles.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
{
DecodingContext.SessionObjectHandles.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
}
Dictionary<int, ObjectHandlesType> tmpObjectHandle = new Dictionary<int, ObjectHandlesType>() { { (int)objectHandleKey, ObjectHandlesType.AttachmentHandles } };
DecodingContext.SessionObjectHandles.Add(MapiInspector.MAPIInspector.currentParsingSessionID, tmpObjectHandle);
if (DecodingContext.ObjectHandles != null && DecodingContext.ObjectHandles.ContainsKey((int)objectHandleKey))
{
DecodingContext.ObjectHandles.Remove((int)objectHandleKey);
}
DecodingContext.ObjectHandles.Add((int)objectHandleKey, ObjectHandlesType.AttachmentHandles);
}
else if (ropResponse is RopFastTransferSourceCopyToResponse)
{
uint objectHandleKey = this.ServerObjectHandleTable[(ropResponse as RopFastTransferSourceCopyToResponse).OutputHandleIndex];
if (DecodingContext.CopyTo_OutputHandles != null && DecodingContext.CopyTo_OutputHandles.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
{
DecodingContext.CopyTo_OutputHandles.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
}
DecodingContext.CopyTo_OutputHandles.Add(MapiInspector.MAPIInspector.currentParsingSessionID, (int)objectHandleKey);
}
else if (ropResponse is RopFastTransferSourceCopyPropertiesResponse)
{
uint objectHandleKey = this.ServerObjectHandleTable[(ropResponse as RopFastTransferSourceCopyPropertiesResponse).OutputHandleIndex];
if (DecodingContext.CopyProperties_OutputHandles != null && DecodingContext.CopyProperties_OutputHandles.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
{
DecodingContext.CopyProperties_OutputHandles.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
}
DecodingContext.CopyProperties_OutputHandles.Add(MapiInspector.MAPIInspector.currentParsingSessionID, (int)objectHandleKey);
}
else if (ropResponse is RopFastTransferSourceCopyMessagesResponse)
{
uint objectHandleKey = this.ServerObjectHandleTable[(ropResponse as RopFastTransferSourceCopyMessagesResponse).OutputHandleIndex];
if (DecodingContext.CopyMessage_OutputHandles != null && DecodingContext.CopyMessage_OutputHandles.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
{
DecodingContext.CopyMessage_OutputHandles.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
}
DecodingContext.CopyMessage_OutputHandles.Add(MapiInspector.MAPIInspector.currentParsingSessionID, (int)objectHandleKey);
}
else if (ropResponse is RopFastTransferSourceCopyFolderResponse)
{
uint objectHandleKey = this.ServerObjectHandleTable[(ropResponse as RopFastTransferSourceCopyFolderResponse).OutputHandleIndex];
if (DecodingContext.CopyFolder_OutputHandles != null && DecodingContext.CopyFolder_OutputHandles.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
{
DecodingContext.CopyFolder_OutputHandles.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
}
DecodingContext.CopyFolder_OutputHandles.Add(MapiInspector.MAPIInspector.currentParsingSessionID, (int)objectHandleKey);
}
else if (ropResponse is RopSynchronizationConfigureResponse)
{
uint objectHandleKey = this.ServerObjectHandleTable[(ropResponse as RopSynchronizationConfigureResponse).OutputHandleIndex];
if (DecodingContext.SyncConfigure_OutputHandles != null && DecodingContext.SyncConfigure_OutputHandles.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
{
DecodingContext.SyncConfigure_OutputHandles.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
}
DecodingContext.SyncConfigure_OutputHandles.Add(MapiInspector.MAPIInspector.currentParsingSessionID, (int)objectHandleKey);
}
else if (ropResponse is RopSynchronizationGetTransferStateResponse)
{
uint objectHandleKey = this.ServerObjectHandleTable[(ropResponse as RopSynchronizationGetTransferStateResponse).OutputHandleIndex];
if (DecodingContext.SyncGetTransferState_OutputHandles != null && DecodingContext.SyncGetTransferState_OutputHandles.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
{
DecodingContext.SyncGetTransferState_OutputHandles.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
}
DecodingContext.SyncGetTransferState_OutputHandles.Add(MapiInspector.MAPIInspector.currentParsingSessionID, (int)objectHandleKey);
}
else if (ropResponse is RopFastTransferDestinationConfigureResponse)
{
uint objectHandleKey = this.ServerObjectHandleTable[(ropResponse as RopFastTransferDestinationConfigureResponse).OutputHandleIndex];
if (DecodingContext.DestinationConfigure_OutputHandles != null && DecodingContext.DestinationConfigure_OutputHandles.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
{
DecodingContext.DestinationConfigure_OutputHandles.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
}
DecodingContext.DestinationConfigure_OutputHandles.Add(MapiInspector.MAPIInspector.currentParsingSessionID, (int)objectHandleKey);
}
else if (ropResponse is RopFastTransferDestinationPutBufferResponse)
{
uint objectHandleKey = this.ServerObjectHandleTable[(ropResponse as RopFastTransferDestinationPutBufferResponse).InputHandleIndex];
if (DecodingContext.PutBuffer_InPutHandles.ContainsKey(MapiInspector.MAPIInspector.currentParsingSessionID))
{
DecodingContext.PutBuffer_InPutHandles.Remove(MapiInspector.MAPIInspector.currentParsingSessionID);
}
DecodingContext.PutBuffer_InPutHandles.Add(MapiInspector.MAPIInspector.currentParsingSessionID, (int)objectHandleKey);
}
else
{
continue;
}
}
}
}