Example #1
0
        private Mod ParseSingleModule(int modi, MSFStreamEntireFile ef)
        {
            int begin = ReadOffset;
            var ret   = new Mod();

            ret.UnusedModuleHeader = ExtractInt32();
            ParseSectionContribution();

            ret.Flags                = ExtractInt16();
            ret.StreamNumber         = ExtractInt16();
            ret.SymbolSize           = ExtractUInt32();
            ret.LineNumberBytes      = ExtractUInt32();
            ret.C13LineNumberBytes   = ExtractUInt32();
            ret.NumContributingFiles = ExtractInt16();
            ret.Padding              = ExtractInt16();
            ret.FileNameOffset       = ExtractInt32();
            ret.SourceFileNameIndex  = ExtractInt32();
            ret.PDBPathIndex         = ExtractInt32();
            ret.SourceFileName       = ExtractTerminatedString();
            ret.ObjectFileName       = ExtractTerminatedString();

            if (ReadOffset - begin < ModuleSubstreamSize.ExtractedValue)
            {
                Extract4ByteAlignment();
            }

            var seq = new ByteSequence(FlattenedBuffer, begin, ReadOffset - begin);

            ret.OriginalSequence = seq;

            ef.RegisterDBIModuleStream(modi, ret.StreamNumber.ExtractedValue, ret.SymbolSize.ExtractedValue, ret.LineNumberBytes.ExtractedValue, ret.C13LineNumberBytes.ExtractedValue);

            return(ret);
        }
Example #2
0
        private void ParseModules(MSFStreamEntireFile ef)
        {
            int modi  = 0;
            int begin = ReadOffset;

            ModulesBeginOffset = begin;

            while (ReadOffset - begin < ModuleSubstreamSize.ExtractedValue)
            {
                var mod = ParseSingleModule(modi, ef);
                Mods.Add(mod);

                ++modi;
            }
        }
Example #3
0
        public MSFStreamDBI(int streamindex, byte[] entirefile, int streamsize, List <int> blocks, int blocksize, MSFStreamEntireFile ef)
            : base(streamindex, entirefile, streamsize, blocks, blocksize)
        {
            Mods          = new List <Mod>();
            Contributions = new List <SectionContribution>();

            ParseHeaders();
            ParseModules(ef);
            ParseSectionContributions();

            // TODO
            //ParseSectionMap();
            //ParseFiles();

            ef.RegisterDBIStreams(GlobalsStreamIndex.ExtractedValue, PublicsStreamIndex.ExtractedValue, SymbolsStreamIndex.ExtractedValue);
        }
Example #4
0
 public MSF(string filename)
 {
     EntireFile      = new MSFStreamEntireFile(File.ReadAllBytes(filename));
     EntireFile.Name = "(Entire file)";
 }