diff --git a/MAPIInspector/Source/Parsers/MSOXCDATA.cs b/MAPIInspector/Source/Parsers/MSOXCDATA.cs index 5d38fbf..7e937f0 100644 --- a/MAPIInspector/Source/Parsers/MSOXCDATA.cs +++ b/MAPIInspector/Source/Parsers/MSOXCDATA.cs @@ -3892,6 +3892,20 @@ public string this[string key] } } + /// + /// The AnnotatedComment class is a comment node that takes up no space in the stream. It is used to annotate other nodes with comments. + /// + public class AnnotatedComment : AnnotatedData + { + /// + /// Initializes a new instance of the Information class with parameters. + /// + /// The comment + public AnnotatedComment(string comment) => this.ParsedValue = comment; + public static implicit operator AnnotatedComment(string comment) => new AnnotatedComment(comment); + public override int Size { get { return 0; } } + } + /// /// The AnnotatedBytes class to a byte stream with an alternate version of it (typically ConvertByteArrayToString) /// @@ -3904,7 +3918,7 @@ public class AnnotatedBytes : AnnotatedData private int size; /// - /// Initializes a new instance of the Information class with parameters. + /// Initializes a new instance of the AnnotatedBytes class with parameters. /// /// Size of the byte array public AnnotatedBytes(int size) @@ -4808,12 +4822,14 @@ public override void Parse(Stream s) { PropertyValue propValue = new PropertyValue(tempPropTag.PropertyType); propValue.Parse(s); + propValue.PropertyTag = $"{tempPropTag.PropertyType}:{tempPropTag.PropertyId}"; rowPropValue = propValue; } else { TypedPropertyValue typePropValue = new TypedPropertyValue(); typePropValue.Parse(s); + typePropValue.PropertyTag = $"{tempPropTag.PropertyType}:{tempPropTag.PropertyId}"; rowPropValue = typePropValue; } } @@ -4823,12 +4839,14 @@ public override void Parse(Stream s) { FlaggedPropertyValue flagPropValue = new FlaggedPropertyValue(tempPropTag.PropertyType); flagPropValue.Parse(s); + flagPropValue.PropertyTag = $"{tempPropTag.PropertyType}:{tempPropTag.PropertyId}"; rowPropValue = flagPropValue; } else { FlaggedPropertyValueWithType flagPropValue = new FlaggedPropertyValueWithType(); flagPropValue.Parse(s); + flagPropValue.PropertyTag = $"{tempPropTag.PropertyType}:{tempPropTag.PropertyId}"; rowPropValue = flagPropValue; } } @@ -6444,10 +6462,15 @@ public class PropertyValue : BaseStructure private PropertyDataType propertyType; /// - /// Boole value indicates if this property value is for address book. + /// Bool value indicates if this property value is for address book. /// private bool isAddressBook; + /// + /// Source property tag information + /// + public AnnotatedComment PropertyTag; + /// /// Initializes a new instance of the PropertyValue class /// @@ -6786,6 +6809,11 @@ public class TypedPropertyValue : BaseStructure /// public object PropertyValue; + /// + /// Source property tag information + /// + public AnnotatedComment PropertyTag; + /// /// The Count wide size of ptypMutiple type. /// @@ -6904,6 +6932,11 @@ public class FlaggedPropertyValue : BaseStructure /// private CountWideEnum countWide; + /// + /// Source property tag information + /// + public AnnotatedComment PropertyTag; + /// /// Initializes a new instance of the FlaggedPropertyValue class /// @@ -6962,6 +6995,11 @@ public class FlaggedPropertyValueWithType : BaseStructure /// public object PropertyValue; + /// + /// Source property tag information + /// + public AnnotatedComment PropertyTag; + /// /// The Count wide size. /// diff --git a/MAPIInspector/Source/Parsers/MSOXCFXICS.cs b/MAPIInspector/Source/Parsers/MSOXCFXICS.cs index d5e8f50..35bf1b4 100644 --- a/MAPIInspector/Source/Parsers/MSOXCFXICS.cs +++ b/MAPIInspector/Source/Parsers/MSOXCFXICS.cs @@ -7159,6 +7159,8 @@ protected SyntacticalBase(FastTransferStream stream) /// /// Stream contains the serialized object public abstract void Parse(FastTransferStream stream); + + public override string ToString() => string.Empty; } /// @@ -7215,12 +7217,12 @@ public class MetaPropValue : SyntacticalBase /// /// The property type. /// - public ushort PropType; + public PropertyDataType PropType; /// /// The property id. /// - public ushort PropID; + public PidTagPropertyEnum PropID; /// /// The property value. @@ -7254,16 +7256,16 @@ public static bool Verify(FastTransferStream stream) /// A FastTransferStream. public override void Parse(FastTransferStream stream) { - this.PropType = stream.ReadUInt16(); - this.PropID = stream.ReadUInt16(); + this.PropType = (PropertyDataType)stream.ReadUInt16(); + this.PropID = (PidTagPropertyEnum)stream.ReadUInt16(); - if (this.PropID != 0x4011 && this.PropID != 0x4008) + if (this.PropID != PidTagPropertyEnum.MetaTagNewFXFolder && this.PropID != PidTagPropertyEnum.MetaTagDnPrefix) { this.PropValue = stream.ReadUInt32(); } else { - if (this.PropID != 0x4011) + if (this.PropID != PidTagPropertyEnum.MetaTagNewFXFolder) { FolderReplicaInfo folderReplicaInfo = new FolderReplicaInfo(); folderReplicaInfo.Parse(stream);