Пример #1
0
        public int ReadFrom(byte[] buffer, int offset)
        {
            Signature             = Utilities.ToUInt32BigEndian(buffer, offset + 0);
            Version               = Utilities.ToUInt32BigEndian(buffer, offset + 4);
            HeaderSize            = Utilities.ToUInt32BigEndian(buffer, offset + 8);
            Flags                 = Utilities.ToUInt32BigEndian(buffer, offset + 12);
            RunningDataForkOffset = Utilities.ToUInt64BigEndian(buffer, offset + 16);
            DataForkOffset        = Utilities.ToUInt64BigEndian(buffer, offset + 24);
            DataForkLength        = Utilities.ToUInt64BigEndian(buffer, offset + 32);
            RsrcForkOffset        = Utilities.ToUInt64BigEndian(buffer, offset + 40);
            RsrcForkLength        = Utilities.ToUInt64BigEndian(buffer, offset + 48);
            SegmentNumber         = Utilities.ToUInt32BigEndian(buffer, offset + 56);
            SegmentCount          = Utilities.ToUInt32BigEndian(buffer, offset + 60);
            SegmentGuid           = Utilities.ToGuidBigEndian(buffer, offset + 64);

            DataForkChecksum = Utilities.ToStruct <UdifChecksum>(buffer, offset + 80);
            XmlOffset        = Utilities.ToUInt64BigEndian(buffer, offset + 216);
            XmlLength        = Utilities.ToUInt64BigEndian(buffer, offset + 224);

            MasterChecksum = Utilities.ToStruct <UdifChecksum>(buffer, offset + 352);
            ImageVariant   = Utilities.ToUInt32BigEndian(buffer, offset + 488);
            SectorCount    = Utilities.ToInt64BigEndian(buffer, offset + 492);

            return(Size);
        }
Пример #2
0
        public int ReadFrom(byte[] buffer, int offset)
        {
            Signature   = Utilities.ToUInt32BigEndian(buffer, offset + 0);
            InfoVersion = Utilities.ToUInt32BigEndian(buffer, offset + 4);
            FirstSector = Utilities.ToInt64BigEndian(buffer, offset + 8);
            SectorCount = Utilities.ToInt64BigEndian(buffer, offset + 16);
            DataStart   = Utilities.ToUInt64BigEndian(buffer, offset + 24);
            DecompressBufferRequested = Utilities.ToUInt32BigEndian(buffer, offset + 32);
            BlocksDescriptor          = Utilities.ToUInt32BigEndian(buffer, offset + 36);

            CheckSum = Utilities.ToStruct <UdifChecksum>(buffer, offset + 60);

            Runs = new List <CompressedRun>();
            int numRuns = Utilities.ToInt32BigEndian(buffer, offset + 200);

            for (int i = 0; i < numRuns; ++i)
            {
                Runs.Add(Utilities.ToStruct <CompressedRun>(buffer, offset + 204 + (i * 40)));
            }

            return(0);
        }