コード例 #1
0
        public MYP(MythicPackage package, Stream stream)
        {
            this._stream = stream;
            this.Package = package;
            BinaryReader reader = new BinaryReader(stream);

            this.Header = new MYP.MYPHeader();
            this.Header.Load(reader);
            this.MFTTables.Add(new MYP.MFTHeader()
            {
                Length        = this.Header.EntriesPerMFT,
                NextMFTOffset = this.Header.MFTOffset
            });
            long num1 = this.Header.MFTOffset;
            uint num2 = this.Header.EntriesPerMFT;

            reader.BaseStream.Position = num1;
            while (num1 > 0L)
            {
                reader.BaseStream.Position = num1;
                this.MFT        = new MYP.MFTHeader();
                this.MFT.Offset = reader.BaseStream.Position;
                this.MFT.Load(reader);
                this.MFTTables.Add(this.MFT);
                num1 = this.MFT.NextMFTOffset;
                for (int index = 0; (long)index < (long)num2; ++index)
                {
                    MYP.MFTEntry mftEntry = new MYP.MFTEntry();
                    mftEntry.Changed = false;
                    mftEntry.Load(this, reader, index);
                    if (mftEntry.Hash != 0L)
                    {
                        this.Enteries[mftEntry.Hash] = mftEntry;
                    }
                }
                num2 = this.MFT.Length;
            }
        }