示例#1
0
        /// <summary>
        /// Reads <see cref="V8Commit.Entities.V8FileSystem.V8ContainerHeader"/>
        /// from <see cref="_reader"/>
        /// </summary>
        /// <returns>
        /// Returns <see cref="V8Commit.Entities.V8FileSystem.V8ContainerHeader"/>
        /// with data
        /// </returns>
        /// <permission cref="System.Security.PermissionSet">Only
        /// this class can access this method.
        /// </permission>
        private V8ContainerHeader ReadContainerHeader()
        {
            V8ContainerHeader container = new V8ContainerHeader();

            container.RefToNextPage = _reader.ReadInt32();
            container.PageSize      = _reader.ReadInt32();
            container.PagesCount    = _reader.ReadInt32();
            container.ReservedField = _reader.ReadInt32();

            return(container);
        }
示例#2
0
        /// <summary>
        /// Checks the stream matching 1CV8 file
        /// </summary>
        /// <param name="stream">
        /// <see cref="System.IO.MemoryStream"/>, passed by reference,
        /// that contains the data to be checked
        /// </param>
        /// <returns>
        /// Returns the result of the comparison
        /// <see cref="System.IO.MemoryStream"/> with file description 1CV8
        /// </returns>
        /// <example> This sample shows how to use
        /// the IsV8FileSystem method from your plugin
        /// <code>
        ///
        /// using (FileV8Reader v8Reader = new FileV8Reader(Input))
        /// {
        ///     var fileSystem = v8Reader.ReadV8FileSystem();
        ///     foreach (var reference in fileSystem.References)
        ///     {
        ///         v8Reader.Seek(reference.RefToData, SeekOrigin.Begin);
        ///         using (MemoryStream memStream = new MemoryStream())
        ///         {
        ///             using (MemoryStream memReader = new MemoryStream(v8Reader.ReadBytes(v8Reader.ReadBlockHeader())))
        ///             {
        ///                 if (reference.IsInFlated)
        ///                 {
        ///                     using (DeflateStream deflateStream = new DeflateStream(memReader, CompressionMode.Decompress))
        ///                     {
        ///                         deflateStream.CopyTo(memStream);
        ///                     }
        ///                 }
        ///                 else
        ///                 {
        ///                     memReader.CopyTo(memStream);
        ///                 }
        ///             }
        ///
        ///             if (v8Reader.IsV8FileSystem(memStream))
        ///             {
        ///                 // some yours сode
        ///             }
        ///             else
        ///             {
        ///                 // some yours сode
        ///             }
        ///         }
        ///     }
        /// }
        ///
        /// </code>
        /// </example>
        /// <permission cref="System.Security.PermissionSet">Everyone
        /// can access this method.
        /// </permission>
        public bool IsV8FileSystem(MemoryStream stream)
        {
            if (stream.Capacity < V8ContainerHeader.Size() + V8BlockHeader.Size())
            {
                return(false);
            }

            stream.Seek(0, SeekOrigin.Begin);
            using (FileV8Reader tmpV8Reader = new FileV8Reader(new BinaryReader(stream, Encoding.Default, true)))
            {
                try
                {
                    tmpV8Reader.ReadContainerHeader();
                    tmpV8Reader.ReadBlockHeader();
                }
                catch
                {
                    return(false);
                }
            }

            return(true);
        }