示例#1
0
            public static FileDescriptor Create(EndianReader reader, BlockStream block)
            {
                FileDescriptor file = new FileDescriptor();

                file.Name = reader.ReadString(0x28);
                byte namelen = reader.ReadByte();

                file.Flags     = (byte)(namelen & 0xC0);
                file.BlockSize = ReadUInt24LE(reader);
                if (ReadUInt24LE(reader) != file.BlockSize)
                {
                    throw new FormatException();
                }
                file.Block      = ReadUInt24LE(reader);
                file.Parent     = reader.ReadUInt16();
                file.Size       = reader.ReadUInt32();
                file.UpdateTime = reader.ReadUInt32();
                file.AccessTime = reader.ReadUInt32();

                if ((file.Flags & 0x80) == 0)
                {
                    file.Data = new Substream(block, block.GetBlockOffset(file.Block), file.Size);
                }

                return(file);
            }