コード例 #1
0
        public static ExthHeader Read(Stream stream, long offset)
        {
            ExthHeader result = new ExthHeader();

            stream.Seek(offset, SeekOrigin.Begin);
            if (stream.TryReadString(4, out string identifier))
            {
                result.Identifier = identifier;
            }
            if (stream.TryReadUint(out uint length))
            {
                result.Length = length;
            }
            if (stream.TryReadUint(out uint count))
            {
                result.RecordCount = count;
            }

            for (int i = 0; i < count; i++)
            {
                var exthRecord = ReadRecord(stream, stream.Position);
                if (exthRecord != null)
                {
                    result.RecordList.Add(exthRecord);
                }
            }

            uint padding = (4 - length % 4) % 4;

            stream.Seek(offset + length + padding, SeekOrigin.Begin); //skip to end, included padding

            return(result);
        }
コード例 #2
0
        public static bool TryRead(Stream stream, long offset, out ExthHeader exthHeader)
        {
            bool result = false;

            exthHeader = null;
            stream.Seek(offset, SeekOrigin.Begin);
            if (stream.CheckStart(4, Identifier))
            {
                exthHeader = Read(stream, offset);
                result     = true;
            }

            if (!result)
            {
                stream.Seek(offset, SeekOrigin.Begin);
            }

            return(result);
        }
コード例 #3
0
 public static void Write(ExthHeader file, Stream stream)
 {
 }