Пример #1
0
        public int ReadFrom(byte[] buffer, int offset)
        {
            this.RecordType = (CatalogRecordType)EndianUtilities.ToInt16BigEndian(buffer, offset + 0);
            this.ParentId   = EndianUtilities.ToUInt32BigEndian(buffer, offset + 4);
            this.Name       = HfsPlusUtilities.ReadUniStr255(buffer, offset + 8);

            return(this.Size);
        }
Пример #2
0
        public int ReadFrom(byte[] buffer, int offset)
        {
            RecordType = (CatalogRecordType)Utilities.ToInt16BigEndian(buffer, offset + 0);
            ParentId   = Utilities.ToUInt32BigEndian(buffer, offset + 4);
            Name       = HfsPlusUtilities.ReadUniStr255(buffer, offset + 8);

            return(0);
        }
Пример #3
0
        public override int ReadFrom(byte[] buffer, int offset)
        {
            _keyLength = EndianUtilities.ToUInt16BigEndian(buffer, offset + 0);
            NodeId     = new CatalogNodeId(EndianUtilities.ToUInt32BigEndian(buffer, offset + 2));
            Name       = HfsPlusUtilities.ReadUniStr255(buffer, offset + 6);

            return(_keyLength + 2);
        }
Пример #4
0
        public override int ReadFrom(byte[] buffer, int offset)
        {
            this.keyLength  = EndianUtilities.ToUInt16BigEndian(buffer, offset + 0);
            this.pad        = EndianUtilities.ToUInt16BigEndian(buffer, offset + 2);
            this.FileId     = new CatalogNodeId(EndianUtilities.ToUInt32BigEndian(buffer, offset + 4));
            this.startBlock = EndianUtilities.ToUInt32BigEndian(buffer, offset + 8);
            this.Name       = HfsPlusUtilities.ReadUniStr255(buffer, offset + 12);

            return(this.keyLength + 2);
        }
Пример #5
0
        public override int ReadFrom(byte[] buffer, int offset)
        {
            _keyLength  = Utilities.ToUInt16BigEndian(buffer, offset + 0);
            _pad        = Utilities.ToUInt16BigEndian(buffer, offset + 2);
            _fileId     = new CatalogNodeId(Utilities.ToUInt32BigEndian(buffer, offset + 4));
            _startBlock = Utilities.ToUInt32BigEndian(buffer, offset + 8);
            _name       = HfsPlusUtilities.ReadUniStr255(buffer, offset + 12);

            return(_keyLength + 2);
        }
Пример #6
0
        public int CompareTo(CatalogKey other)
        {
            if (other == null)
            {
                throw new ArgumentNullException(nameof(other));
            }

            if (NodeId != other.NodeId)
            {
                return(NodeId < other.NodeId ? -1 : 1);
            }

            return(HfsPlusUtilities.FastUnicodeCompare(Name, other.Name));
        }
Пример #7
0
        public int CompareTo(AttributeKey other)
        {
            if (other == null)
            {
                throw new ArgumentNullException("other");
            }

            if (_fileId != other._fileId)
            {
                return(_fileId < other._fileId ? -1 : 1);
            }

            return(HfsPlusUtilities.FastUnicodeCompare(_name, other._name));
        }
Пример #8
0
        public override int CompareTo(BTreeKey other)
        {
            var attributeKey = other as AttributeKey;

            if (attributeKey == null)
            {
                throw new ArgumentNullException(nameof(other));
            }

            if (this.FileId != attributeKey.FileId)
            {
                return(this.FileId < attributeKey.FileId ? -1 : 1);
            }

            return(HfsPlusUtilities.FastUnicodeCompare(this.Name, attributeKey.Name));
        }
Пример #9
0
        public int ReadFrom(byte[] buffer, int offset)
        {
            Signature = EndianUtilities.ToUInt16BigEndian(buffer, offset + 0);
            if (!IsValid)
            {
                return(Size);
            }

            Version            = EndianUtilities.ToUInt16BigEndian(buffer, offset + 2);
            Attributes         = (VolumeAttributes)EndianUtilities.ToUInt32BigEndian(buffer, offset + 4);
            LastMountedVersion = EndianUtilities.ToUInt32BigEndian(buffer, offset + 8);
            JournalInfoBlock   = EndianUtilities.ToUInt32BigEndian(buffer, offset + 12);

            CreateDate  = HfsPlusUtilities.ReadHFSPlusDate(DateTimeKind.Local, buffer, offset + 16);
            ModifyDate  = HfsPlusUtilities.ReadHFSPlusDate(DateTimeKind.Utc, buffer, offset + 20);
            BackupDate  = HfsPlusUtilities.ReadHFSPlusDate(DateTimeKind.Utc, buffer, offset + 24);
            CheckedDate = HfsPlusUtilities.ReadHFSPlusDate(DateTimeKind.Utc, buffer, offset + 28);

            FileCount   = EndianUtilities.ToUInt32BigEndian(buffer, offset + 32);
            FolderCount = EndianUtilities.ToUInt32BigEndian(buffer, offset + 36);

            BlockSize   = EndianUtilities.ToUInt32BigEndian(buffer, offset + 40);
            TotalBlocks = EndianUtilities.ToUInt32BigEndian(buffer, offset + 44);
            FreeBlocks  = EndianUtilities.ToUInt32BigEndian(buffer, offset + 48);

            NextAllocation    = EndianUtilities.ToUInt32BigEndian(buffer, offset + 52);
            ResourceClumpSize = EndianUtilities.ToUInt32BigEndian(buffer, offset + 56);
            DataClumpSize     = EndianUtilities.ToUInt32BigEndian(buffer, offset + 60);
            NextCatalogId     = new CatalogNodeId(EndianUtilities.ToUInt32BigEndian(buffer, offset + 64));

            WriteCount      = EndianUtilities.ToUInt32BigEndian(buffer, offset + 68);
            EncodingsBitmap = EndianUtilities.ToUInt64BigEndian(buffer, offset + 72);

            FinderInfo = new uint[8];
            for (int i = 0; i < 8; ++i)
            {
                FinderInfo[i] = EndianUtilities.ToUInt32BigEndian(buffer, offset + 80 + i * 4);
            }

            AllocationFile = EndianUtilities.ToStruct <ForkData>(buffer, offset + 112);
            ExtentsFile    = EndianUtilities.ToStruct <ForkData>(buffer, offset + 192);
            CatalogFile    = EndianUtilities.ToStruct <ForkData>(buffer, offset + 272);
            AttributesFile = EndianUtilities.ToStruct <ForkData>(buffer, offset + 352);
            StartupFile    = EndianUtilities.ToStruct <ForkData>(buffer, offset + 432);

            return(512);
        }
Пример #10
0
        public virtual int ReadFrom(byte[] buffer, int offset)
        {
            RecordType          = (CatalogRecordType)EndianUtilities.ToInt16BigEndian(buffer, offset + 0);
            FileId              = EndianUtilities.ToUInt32BigEndian(buffer, offset + 8);
            CreateTime          = HfsPlusUtilities.ReadHFSPlusDate(DateTimeKind.Utc, buffer, offset + 12);
            ContentModifyTime   = HfsPlusUtilities.ReadHFSPlusDate(DateTimeKind.Utc, buffer, offset + 16);
            AttributeModifyTime = HfsPlusUtilities.ReadHFSPlusDate(DateTimeKind.Utc, buffer, offset + 20);
            AccessTime          = HfsPlusUtilities.ReadHFSPlusDate(DateTimeKind.Utc, buffer, offset + 24);
            BackupTime          = HfsPlusUtilities.ReadHFSPlusDate(DateTimeKind.Utc, buffer, offset + 28);

            uint special;

            FileSystemInfo   = HfsPlusUtilities.ReadBsdInfo(buffer, offset + 32, out special);
            UnixSpecialField = special;

            return(0);
        }