public MODULE(PROJECTINFORMATION ProjectInformation, XlBinaryReader Data) { this.NameRecord = new MODULENAME(ProjectInformation, Data); this.NameUnicodeRecord = new MODULENAMEUNICODE(Data); this.StreamNameRecord = new MODULESTREAMNAME(ProjectInformation, Data); this.DocStringRecord = new MODULEDOCSTRING(Data); this.OffsetRecord = new MODULEOFFSET(Data); this.HelpContextRecord = new MODULEHELPCONTEXT(Data); this.CookieRecord = new MODULECOOKIE(Data); this.TypeRecord = new MODULETYPE(Data); if (Data.PeekUInt16() == (UInt16)0x0025) { this.ReadOnlyRecord = new MODULEREADONLY(Data); } if (Data.PeekUInt16() == (UInt16)0x0028) { this.PrivateRecord = new MODULEPRIVATE(Data); } this.Terminator = Data.ReadUInt16(); this.Reserved = Data.ReadUInt32(); Validate(); }
public REFERENCE(PROJECTINFORMATION ProjectInformation, XlBinaryReader Data) { this.NameRecord = new REFERENCENAME(ProjectInformation, Data); var peek = Data.PeekUInt16(); if (peek == 0x002F) { this.ReferenceRecord = new REFERENCECONTROL(ProjectInformation, Data); } else if (peek == 0x0033) { // todo: Test this, documentation says 0x0033 is REFERENCECONTROL too but this seems odd this.ReferenceRecord = new REFERENCEORIGINAL(Data); } else if (peek == 0x000D) { this.ReferenceRecord = new REFERENCEREGISTERED(Data); } else if (peek == 0x000E) { this.ReferenceRecord = new REFERENCEPROJECT(ProjectInformation, Data); } else { throw new WrongValueException("peek", peek, "0x002F, 0x0033, 0x000D or 0x000E"); } Validate(); }
public REFERENCECONTROL(PROJECTINFORMATION ProjectInformation, XlBinaryReader Data) { this.Id = Data.ReadUInt16(); this.SizeTwiddled = Data.ReadUInt32(); this.SizeOfLibidTwiddled = Data.ReadUInt32(); this.LibidTwiddled = Data.ReadBytes(this.SizeOfLibidTwiddled); this.Reserved1 = Data.ReadUInt32(); this.Reserved2 = Data.ReadUInt16(); UInt16 peek = Data.PeekUInt16(); if (peek == (UInt16)0x0016) { // REFERENCENAME record this.NameRecordExtended = new REFERENCENAME(ProjectInformation, Data); } this.Reserved3 = Data.ReadUInt16(); this.SizeExtended = Data.ReadUInt32(); this.SizeOfLibidExtended = Data.ReadUInt32(); this.LibidExtended = Data.ReadBytes(this.SizeOfLibidExtended); this.Reserved4 = Data.ReadUInt32(); this.Reserved5 = Data.ReadUInt16(); this.OriginalTypeLib = Data.ReadGuid(); this.Cookie = Data.ReadUInt32(); Validate(); }
public PROJECTREFERENCES(PROJECTINFORMATION ProjectInformation, XlBinaryReader Data) { var result = new List <REFERENCE>(); // Read without progressing the pointer. // 0x000F indicates the beginning of a PROJECTMODULES Record, so we're done once we encounter that. while (Data.PeekUInt16() != 0x000F) { var reference = new REFERENCE(ProjectInformation, Data); result.Add(reference); } this.ReferenceArray = result.ToArray(); }