/// <summary>
 /// Parse the DnToMinIdRequest structure.
 /// </summary>
 /// <param name="s">An stream containing DnToMinIdRequest structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.Reserved = ReadUint();
     this.HasNames = ReadBoolean();
     this.NameCount = ReadUint();
     List<MAPIString> nameValues = new List<MAPIString>();
     for(int i=0; i< this.NameCount; i++)
     {
         MAPIString mapiString = new MAPIString(Encoding.ASCII);
         mapiString.Parse(s);
         nameValues.Add(mapiString);
     }
     this.NameValues = nameValues.ToArray();
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
     else
     {
         this.AuxiliaryBuffer = null;
     }
 }
        /// <summary>
        /// Parse the RecipientRow structure.
        /// </summary>
        /// <param name="s">A stream containing the RecipientRow structure</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.RecipientFlags = new RecipientFlags();
            this.RecipientFlags.Parse(s);
            if (this.RecipientFlags.Type == AddressTypeEnum.X500DN)
            {
                this.AddressPrefixUsed = ReadByte();
                this.DisplayType = (DisplayType)ReadByte();
                this.X500DN = new MAPIString(Encoding.ASCII);
                this.X500DN.Parse(s);

            }
            else if (this.RecipientFlags.Type == AddressTypeEnum.PersonalDistributionList1 || this.RecipientFlags.Type == AddressTypeEnum.PersonalDistributionList2)
            {
                this.EntryIdSize = ReadUshort();
                this.EntryID = new AddressBookEntryID();
                this.EntryID.Parse(s);
                this.SearchKeySize = ReadUshort();
                this.SearchKey = ConvertArray(ReadBytes((int)this.SearchKeySize));
            }
            else if (this.RecipientFlags.Type == AddressTypeEnum.NoType && this.RecipientFlags.O == 0x1)
            {
                this.AddressType = new MAPIString(Encoding.ASCII);
                this.AddressType.Parse(s);

            }

            if (RecipientFlags.E == 0x1)
            {
                this.EmailAddress = new MAPIString((RecipientFlags.U == 0x1) ? Encoding.Unicode : Encoding.ASCII);
                this.EmailAddress.Parse(s);

            }

            if (RecipientFlags.D == 0x1)
            {
                this.DisplayName = new MAPIString((RecipientFlags.U == 0x1) ? Encoding.Unicode : Encoding.ASCII);
                this.DisplayName.Parse(s);

            }

            if (RecipientFlags.I == 0x1)
            {
                this.SimpleDisplayName = new MAPIString((RecipientFlags.U == 0x1) ? Encoding.Unicode : Encoding.ASCII);
                this.SimpleDisplayName.Parse(s);
            }

            if (RecipientFlags.T == 0x1)
            {
                this.TransmittableDisplayName = new MAPIString((RecipientFlags.U == 0x1) ? Encoding.Unicode : Encoding.ASCII);
                this.TransmittableDisplayName.Parse(s);
            }
            this.RecipientColumnCount = ReadUshort();
            PropertyRow tempPropertyRow = new PropertyRow(PropTags);
            this.RecipientProperties = tempPropertyRow;
            this.RecipientProperties.Parse(s);
        }
 /// <summary>
 /// Parse the TypedString structure.
 /// </summary>
 /// <param name="s">A stream containing the TypedString structure</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.StringType = (StringTypeEnum)ReadByte();
     switch (this.StringType)
     {
         case StringTypeEnum.NoPresent:
         case StringTypeEnum.Empty:
             {
                 this.String = null;
                 break;
             }
         case StringTypeEnum.CharacterString:
             {
                 this.String = new MAPIString(Encoding.ASCII);
                 this.String.Parse(s);
                 break;
             }
         case StringTypeEnum.ReducedUnicodeCharacterString:
             {
                 this.String = new MAPIString(Encoding.ASCII);
                 this.String.Parse(s);
                 break;
             }
         case StringTypeEnum.UnicodeCharacterString:
             {
                 this.String = new MAPIString(Encoding.Unicode);
                 this.String.Parse(s);
                 break;
             }
         default:
             break;
     }
 }
        /// <summary>
        /// Parse the PropertyName structure.
        /// </summary>
        /// <param name="s">A stream containing the PropertyName structure</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.Kind = (KindEnum)ReadByte();
            this.GUID = ReadGuid();
            switch (this.Kind)
            {
                case KindEnum.LID:
                    {
                        this.LID = ReadUint();
                        break;
                    }
                case KindEnum.Name:
                    {
                        this.NameSize = ReadByte();
                        this.Name = new MAPIString(Encoding.Unicode, "", (int)NameSize / 2);
                        this.Name.Parse(s);

                        break;
                    }
                case KindEnum.NoPropertyName:
                default:
                    {
                        break;
                    }
            }
        }
 /// <summary>
 /// Parse the PtypNull structure.
 /// </summary>
 /// <param name="s">A stream containing the PtypNull structure</param>
 public override void Parse(Stream s)
 {
     this.Value = null;
 }
        /// <summary>
        /// Parse the RopOptionsDataRequest structure.
        /// </summary>
        /// <param name="s">An stream containing RopOptionsDataRequest structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);

            this.RopId = (RopIdType)ReadByte();
            this.LogonId = ReadByte();
            this.InputHandleIndex = ReadByte();
            this.AddressType = new MAPIString(Encoding.ASCII);
            this.AddressType.Parse(s);
            this.WantWin32 = ReadByte();
        }
        /// <summary>
        /// Parse the RopTransportNewMailRequest structure.
        /// </summary>
        /// <param name="s">An stream containing RopTransportNewMailRequest structure.</param>
        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();
        }
        /// <summary>
        /// Parse from a stream.
        /// </summary>
        /// <param name="stream">A stream contains GroupPropertyName.</param>
        public void Parse(FastTransferStream stream)
        {
            this.Guid = stream.ReadGuid();
            this.Kind = stream.ReadUInt32();

            if (this.Kind == 0x00000000)
            {
                this.Lid = stream.ReadUInt32();
            }
            else if (this.Kind == 0x00000001)
            {
                this.NameSize = stream.ReadUInt32();
                this.Name = new MAPIString(Encoding.Unicode, "", (int)this.NameSize / 2);
                this.Name.Parse(stream);
            }
        }
 /// <summary>
 /// Parse next object from a FastTransferStream.
 /// </summary>
 /// <param name="stream">A FastTransferStream.</param>
 public override void Parse(FastTransferStream stream)
 {
     base.Parse(stream);
     this.Name = new MAPIString(Encoding.Unicode);
     this.Name.Parse(stream);
 }
 public void ParseAddtionlHeader(Stream s, out List<MAPIString> metaTags, out List<MAPIString> additionalHeaders)
 {
     base.Parse(s);
     string str = null;
     List<MAPIString> tempmetaTags = new List<MAPIString>();
     List<MAPIString> tempadditionalHeaders = new List<MAPIString>();
     while (str != "")
     {
         str = ReadString(Encoding.ASCII, "\r\n");
         MAPIString tempString = new MAPIString(Encoding.ASCII, "\r\n");
         tempString.Value = str;
         switch (str)
         {
             case "PROCESSING":
             case "PENDING":
             case "DONE":
                 tempmetaTags.Add(tempString);
                 break;
             default:
                 if (str != "")
                 {
                     tempadditionalHeaders.Add(tempString);
                     break;
                 }
                 else
                 {
                     tempString.Value = "";
                     tempadditionalHeaders.Add(tempString);
                     break;
                 }
         }
     }
     metaTags = tempmetaTags;
     additionalHeaders = tempadditionalHeaders;
 }
 /// <summary>
 /// Parse the AUX_CLIENT_CONNECTION_INFO structure.
 /// </summary>
 /// <param name="s">A stream containing the AUX_ENDPOINT_CAPABILITIES structure</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.ConnectionGUID = ReadGuid();
     this.OffsetConnectionContextInfo = ReadUshort();
     this.Reserved = ReadUshort();
     this.ConnectionAttempts = ReadUint();
     this.ConnectionFlags = (ConnectionFlags)ReadUint();
     if (OffsetConnectionContextInfo != 0)
     {
         this.ConnectionContextInfo = new MAPIString(Encoding.Unicode);
         this.ConnectionContextInfo.Parse(s);
     }
 }
 /// <summary>
 /// Parse the GetTemplateInfoRequest structure.
 /// </summary>
 /// <param name="s">An stream containing GetTemplateInfoRequest structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.Flags = ReadUint();
     this.DisplayType = ReadUint();
     this.HasTemplateDn = ReadBoolean();
     if (this.HasTemplateDn)
     {
         this.TemplateDn = new MAPIString(Encoding.ASCII);
         this.TemplateDn.Parse(s);
     }
     this.CodePage = ReadUint();
     this.LocaleId = ReadUint();
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
 }
 /// <summary>
 /// Parse the GetMailboxUrlResponse structure.
 /// </summary>
 /// <param name="s">An stream containing GetMailboxUrlResponse structure.</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     List<MAPIString> metaTags = new List<MAPIString>();
     List<MAPIString> additionalHeaders = new List<MAPIString>();
     ParseMAPIMethod parseMAPIMethod = new ParseMAPIMethod();
     parseMAPIMethod.ParseAddtionlHeader(s, out metaTags, out additionalHeaders);
     this.MetaTags = metaTags.ToArray();
     this.AdditionalHeaders = additionalHeaders.ToArray();
     this.StatusCode = ReadUint();
     if (this.StatusCode == 0)
     {
         this.ErrorCode = ReadUint();
         this.ServerUrl = new MAPIString(Encoding.Unicode, "\0");
     }
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
 }
        /// <summary>
        /// Parse the GetMailboxUrlRequest structure.
        /// </summary>
        /// <param name="s">An stream containing GetMailboxUrlRequest structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);

            this.Flags = ReadUint();
            this.ServerDn = new MAPIString(Encoding.Unicode);
            this.ServerDn.Parse(s);
            this.AuxiliaryBufferSize = ReadUint();
            if (this.AuxiliaryBufferSize > 0)
            {
                this.AuxiliaryBuffer = new ExtendedBuffer();
                this.AuxiliaryBuffer.Parse(s);
            }
        }
 /// <summary>
 /// Parse the WStringsArray_r payload of session.
 /// </summary>
 /// <param name="s">The stream to parse</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     byte temp = ReadByte();
     if (temp == 0xFF)
     {
         this.MagicNumber = temp;
     }
     else
     {
         s.Position -= 1;
     }
     this.Count = ReadUint();
     List<MAPIString> temBytes = new List<MAPIString>();
     for (ulong i = 0; i < this.Count; i++)
     {
         MAPIString tempByte = new MAPIString(Encoding.Unicode);
         tempByte.Parse(s);
         temBytes.Add(tempByte);
     }
     this.Strings = temBytes.ToArray();
 }
        /// <summary>
        /// Parse the NotificationData structure.
        /// </summary>
        /// <param name="s">An stream containing NotificationData structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);
            this.NotificationFlags = new NotificationFlags();
            this.NotificationFlags.Parse(s);
            if (this.NotificationFlags.Value.NotificationType == NotificationTypesEnum.TableModified)
            {
                this.TableEventType = (TableEventTypeEnum)ReadUshort();
            }
            if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.TableModified && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowDeleted || TableEventType == TableEventTypeEnum.TableRowModified))
            {
                this.TableRowFolderID = new FolderID();
                this.TableRowFolderID.Parse(s);
            }
            if ((((int)NotificationFlags.Value.NotificationDataAvailability & 0x8000) != 0) && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowDeleted || TableEventType == TableEventTypeEnum.TableRowModified))
            {
                this.TableRowMessageID = new MessageID();
                this.TableRowMessageID.Parse(s);
            }
            if ((((int)NotificationFlags.Value.NotificationDataAvailability & 0x8000) != 0) && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowDeleted || TableEventType == TableEventTypeEnum.TableRowModified))
            {
                this.TableRowInstance = ReadUint();
            }
            if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.TableModified && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowModified))
            {
                this.InsertAfterTableRowFolderID = new FolderID();
                this.InsertAfterTableRowFolderID.Parse(s);
            }
            if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.TableModified && (((int)NotificationFlags.Value.NotificationDataAvailability & 0x8000) != 0) && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowModified))
            {
                this.InsertAfterTableRowID = new MessageID();
                this.InsertAfterTableRowID.Parse(s);
            }
            if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.TableModified && (((int)NotificationFlags.Value.NotificationDataAvailability & 0x8000) != 0) && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowModified))
            {
                this.InsertAfterTableRowInstance = ReadUint();
            }
            if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.TableModified && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowModified))
            {
                this.TableRowDataSize = ReadUshort();
            }
            if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.TableModified && (TableEventType == TableEventTypeEnum.TableRowAdded || TableEventType == TableEventTypeEnum.TableRowModified))
            {
                if (DecodingContext.SetColumnProTagMap_Handle != null && DecodingContext.SetColumnProTagMap_Handle.ContainsKey(this.NotificationHandle) )
                {
                    propertiesBySetColum = DecodingContext.SetColumnProTagMap_Handle[this.NotificationHandle];
                }
                else
                {
                    throw new MissingInformationException("Missing PropertyTags information for RopNotifyResponse", (ushort)RopIdType.RopNotify, new uint[] {0,NotificationHandle });
                }
                this.TableRowData = new PropertyRow(propertiesBySetColum);
                this.TableRowData.Parse(s);
            }
            if (NotificationFlags.Value.NotificationType != NotificationTypesEnum.TableModified && NotificationFlags.Value.NotificationType != NotificationTypesEnum.Extended)
            {

                this.FolderId = new FolderID();
                this.FolderId.Parse(s);
            }
            if (NotificationFlags.Value.NotificationType != NotificationTypesEnum.TableModified && NotificationFlags.Value.NotificationType != NotificationTypesEnum.Extended && (((int)NotificationFlags.Value.NotificationDataAvailability & 0x8000) != 0))
            {
                this.MessageId = new MessageID();
                this.MessageId.Parse(s);
            }
            if ((NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectCreated || NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectDeleted || NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectMoved || NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectCopied) && ((((int)NotificationFlags.Value.NotificationDataAvailability) & 0xC000) == 0xC000 || (((int)NotificationFlags.Value.NotificationDataAvailability) & 0xC000) == 0))
            {
                this.ParentFolderId = new FolderID();
                this.ParentFolderId.Parse(s);
            }
            if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectMoved || NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectCopied)
            {

                this.OldFolderId = new FolderID();
                this.OldFolderId.Parse(s);
            }
            if ((NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectMoved || NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectCopied) && (((int)NotificationFlags.Value.NotificationDataAvailability & 0x8000) != 0))
            {
                this.OldMessageId = new MessageID();
                this.OldMessageId.Parse(s);
            }
            if ((NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectMoved || NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectCopied) && (((int)NotificationFlags.Value.NotificationDataAvailability & 0x8000) == 0))
            {
                this.OldParentFolderId = new MessageID();
                this.OldParentFolderId.Parse(s);
            }
            if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectCreated || NotificationFlags.Value.NotificationType == NotificationTypesEnum.ObjectModified)
            {
                this.TagCount = ReadUshort();
                if (TagCount != 0x0000 && TagCount != 0xFFFF)
                {
                    List<PropertyTag> listTags = new List<PropertyTag>();
                    for (int i = 0; i < this.TagCount; i++)
                    {
                        PropertyTag tempTag = new PropertyTag();
                        tempTag.Parse(s);
                        listTags.Add(tempTag);
                    }
                    this.Tags = listTags.ToArray();
                }
            }
            if (((int)NotificationFlags.Value.NotificationDataAvailability & 0x1000) != 0)
            {
                this.TotalMessageCount = ReadUint();
            }
            if (((int)NotificationFlags.Value.NotificationDataAvailability & 0x2000) != 0)
            {
                this.UnreadMessageCount = ReadUint();
            }
            if (NotificationFlags.Value.NotificationType == NotificationTypesEnum.NewMail)
            {
                this.MessageFlags = ReadUint();
                this.UnicodeFlag = ReadByte();
                this.MessageClass = new MAPIString(Encoding.ASCII);
                this.MessageClass.Parse(s);
            }
        }
 /// <summary>
 /// Parse the WString_r payload of session.
 /// </summary>
 /// <param name="s">The stream to parse</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     byte temp = ReadByte();
     if (temp == 0xFF)
     {
         this.MagicNumber = temp;
     }
     else
     {
         s.Position -= 1;
     }
     this.Value = new MAPIString(Encoding.Unicode);
     this.Value.Parse(s);
 }
        /// <summary>
        /// Parse the RopGetOwningServersResponse structure.
        /// </summary>
        /// <param name="s">An stream containing RopGetOwningServersResponse structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);

            this.RopId = (RopIdType)ReadByte();
            this.InputHandleIndex = ReadByte();
            HelpMethod help = new HelpMethod();
            this.ReturnValue = help.FormatErrorCode(ReadUint());
            if ((ErrorCodes)ReturnValue == ErrorCodes.Success)
            {
                this.OwningServersCount = ReadUshort();
                this.CheapServersCount = ReadUshort();

                List<MAPIString> tmpOwning = new List<MAPIString>();
                for (int i = 0; i < this.OwningServersCount; i++)
                {
                    MAPIString subOwing = new MAPIString(Encoding.ASCII);
                    subOwing.Parse(s);
                    tmpOwning.Add(subOwing);
                }
                this.OwningServers = tmpOwning.ToArray();
            }
        }
        /// <summary>
        /// Parse the RopOptionsDataResponse structure.
        /// </summary>
        /// <param name="s">An stream containing RopOptionsDataResponse structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);

            this.RopId = (RopIdType)ReadByte();
            this.InputHandleIndex = ReadByte();
            HelpMethod help = new HelpMethod();
            this.ReturnValue = help.FormatErrorCode(ReadUint());

            if ((ErrorCodes)ReturnValue == ErrorCodes.Success)
            {
                this.Reserved = ReadByte();
                this.OptionalInfoSize = ReadUshort();
                this.OptionalInfo = ConvertArray(ReadBytes((int)this.OptionalInfoSize));
                this.HelpFileSize = ReadUshort();
                if (this.HelpFileSize != 0)
                {
                    this.HelpFile = ConvertArray(ReadBytes((int)this.HelpFileSize));
                    this.HelpFileName = new MAPIString(Encoding.ASCII);
                    this.HelpFileName.Parse(s);
                }
            }
        }
        /// <summary>
        /// Parse the RopGetReceiveFolderRequest structure.
        /// </summary>
        /// <param name="s">An stream containing RopGetReceiveFolderRequest structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);

            this.RopId = (RopIdType)ReadByte();
            this.LogonId = ReadByte();
            this.InputHandleIndex = ReadByte();
            this.MessageClass = new MAPIString(Encoding.ASCII);
            this.MessageClass.Parse(s);
        }
        /// <summary>
        /// Parse the RopGetAddressTypesResponse structure.
        /// </summary>
        /// <param name="s">An stream containing RopGetAddressTypesResponse structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);

            this.RopId = (RopIdType)ReadByte();
            this.InputHandleIndex = ReadByte();
            HelpMethod help = new HelpMethod();
            this.ReturnValue = help.FormatErrorCode(ReadUint());

            if ((ErrorCodes)ReturnValue == ErrorCodes.Success)
            {
                this.AddressTypeCount = ReadUshort();
                this.AddressTypeSize = ReadUshort();
                List<MAPIString> listAddressTypes = new List<MAPIString>();

                for (int i = 0; i < this.AddressTypeCount; i++)
                {
                    MAPIString tempAddressTypes = new MAPIString(Encoding.ASCII);
                    tempAddressTypes.Parse(s);
                    listAddressTypes.Add(tempAddressTypes);
                }
                this.AddressTypes = listAddressTypes.ToArray();

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

            this.RopId = (RopIdType)ReadByte();
            this.InputHandleIndex = ReadByte();
            HelpMethod help = new HelpMethod();
            this.ReturnValue = help.FormatErrorCode(ReadUint());
            if ((ErrorCodes)ReturnValue == ErrorCodes.Success)
            {
                this.FolderId = new FolderID();
                this.FolderId.Parse(s);
                this.ExplicitMessageClass = new MAPIString(Encoding.ASCII);
                this.ExplicitMessageClass.Parse(s);
            }
        }
 /// <summary>
 /// Parse the PtypMultipleString8 structure.
 /// </summary>
 /// <param name="s">A stream containing the PtypMultipleString8 structure</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     HelpMethod help = new HelpMethod();
     this.Count = help.ReadCount(this.countWide, s);
     List<MAPIString> tempvalue = new List<MAPIString>();
     MAPIString str;
     for (int i = 0; i < this.Count.GetHashCode(); )
     {
         str = new MAPIString(Encoding.ASCII);
         str.Parse(s);
         tempvalue.Add(str);
         i = i + str.Value.Length + 1;
     }
     this.Value = tempvalue.ToArray();
 }
        /// <summary>
        /// Parse the RopLogonRequest structure.
        /// </summary>
        /// <param name="s">An stream containing RopLogonRequest structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);

            this.RopId = (RopIdType)ReadByte();
            this.LogonId = ReadByte();
            this.OutputHandleIndex = ReadByte();
            this.LogonFlags = (LogonFlags)ReadByte();
            this.OpenFlags = (OpenFlags)ReadUint();
            this.StoreState = ReadUint();
            this.EssdnSize = ReadUshort();
            if (this.EssdnSize > 0)
            {
                this.Essdn = new MAPIString(Encoding.ASCII);
                this.Essdn.Parse(s);
            }
        }
 /// <summary>
 /// Parse the PtypString8 structure.
 /// </summary>
 /// <param name="s">A stream containing the PtypString8 structure</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.Value = new MAPIString(Encoding.ASCII);
     this.Value.Parse(s);
 }
        /// <summary>
        /// Parse the RopLogonResponse_PublicFolders structure.
        /// </summary>
        /// <param name="s">An stream containing RopLogonResponse_PublicFolders structure.</param>
        public override void Parse(Stream s)
        {
            base.Parse(s);

            this.RopId = (RopIdType)ReadByte();
            this.OutputHandleIndex = ReadByte();
            HelpMethod help = new HelpMethod();
            this.ReturnValue = help.FormatErrorCode(ReadUint());
            if ((ErrorCodes)ReturnValue == ErrorCodes.Success)
            {
                this.LogonFlags = (LogonFlags)ReadByte();
                this.FolderIds = new FolderID[13];
                for (int i = 0; i < 13; i++)
                {
                    FolderIds[i] = new FolderID();
                    FolderIds[i].Parse(s);
                }
                this.ReplId = ReadUshort();
                this.ReplGuid = ReadGuid();
                this.PerUserGuid = ReadGuid();
            }
            else if ((AdditionalErrorCodes)ReturnValue == AdditionalErrorCodes.WrongServer)
            {
                this.LogonFlags = (LogonFlags)ReadByte();
                this.ServerNameSize = ReadByte();
                this.ServerName = new MAPIString(Encoding.ASCII);
                this.ServerName.Parse(s);
            }
        }
 /// <summary>
 /// Parse the StoreObjectEntryID structure.
 /// </summary>
 /// <param name="s">A stream containing the StoreObjectEntryID structure</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.Flags = ReadUint();
     this.ProviderUID = ReadBytes(16);
     this.Version = ReadByte();
     this.Flag = ReadByte();
     this.DLLFileName = ReadBytes(14);
     this.WrappedFlags = ReadUint();
     this.WrappedProviderUID = ReadBytes(16);
     this.WrappedType = ReadUint();
     this.ServerShortname = new MAPIString(Encoding.ASCII);
     this.ServerShortname.Parse(s);
     this.MailboxDN = new MAPIString(Encoding.ASCII);
     this.MailboxDN.Parse(s);
 }
 /// <summary>
 /// Parse the PermanentEntryID payload of session.
 /// </summary>
 /// <param name="s">The stream to parse</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.IDType = ReadByte();
     this.R1 = ReadByte();
     this.R2 = ReadByte();
     this.R3 = ReadByte();
     this.ProviderUID = ReadGuid();
     this.R4 = ReadUint();
     this.DisplayTypeString = (DisplayTypeValues)ReadUint();
     this.DistinguishedName = new MAPIString(Encoding.ASCII);
     this.DistinguishedName.Parse(s);
 }
 /// <summary>
 /// Parse the AddressBookEntryID structure.
 /// </summary>
 /// <param name="s">A stream containing the AddressBookEntryID structure</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     this.Flags = ReadUint();
     this.ProviderUID = ReadBytes(16);
     this.Version = ReadUint();
     this.Type = (AddressbookEntryIDtype)ReadUint();
     this.X500DN = new MAPIString(Encoding.ASCII);
     this.X500DN.Parse(s);
 }
 /// <summary>
 /// Parse the HTTP payload of session.
 /// </summary>
 /// <param name="s">An stream of HTTP payload of session</param>
 public override void Parse(Stream s)
 {
     base.Parse(s);
     List<MAPIString> metaTags = new List<MAPIString>();
     List<MAPIString> additionalHeaders = new List<MAPIString>();
     ParseMAPIMethod parseMAPIMethod = new ParseMAPIMethod();
     parseMAPIMethod.ParseAddtionlHeader(s, out metaTags, out additionalHeaders);
     this.MetaTags = metaTags.ToArray();
     this.AdditionalHeaders = additionalHeaders.ToArray();
     this.StatusCode = ReadUint();
     if (this.StatusCode == 0)
     {
         this.ErrorCode = ReadUint();
         this.PollsMax = ReadUint();
         this.RetryCount = ReadUint();
         this.RetryDelay = ReadUint();
         this.DnPrefix = new MAPIString(Encoding.ASCII);
         this.DnPrefix.Parse(s);
         this.DisplayName = new MAPIString(Encoding.Unicode);
         this.DisplayName.Parse(s);
     }
     this.AuxiliaryBufferSize = ReadUint();
     if (this.AuxiliaryBufferSize > 0)
     {
         this.AuxiliaryBuffer = new ExtendedBuffer();
         this.AuxiliaryBuffer.Parse(s);
     }
     else
     {
         this.AuxiliaryBuffer = null;
     }
 }