/// <summary>
        /// Intelligently dtermine the default reader type from the file type
        /// </summary>
        /// <param name="fileExtension"></param>
        public static EnumReaderType FromFileExtension(IFileReaderProperty fileProperty)
        {
            switch (fileProperty.FileType)
            {
                case EnumFileType.EXE:
                    return EnumReaderType.BINARY_READER;

                default:
                    return EnumReaderType.BINARY_READER;
            }
        }
        public static IFileBrowser GetFileBrowser(IFileReaderProperty fileProperty)
        {
            switch (fileProperty.FileType)
            {
                case EnumFileType.EXE:
                    return new COFFFileBrowser(fileProperty);

                default:
                    return null;
            }
        }
        /// <summary>
        /// get the file reader from the file property
        /// </summary>
        /// <param name="readerProperty"></param>
        /// <returns></returns>
        public static IFileReadStrategy Instance(IFileReaderProperty readerProperty)
        {
            IFileReadStrategy readStrategy = null;

            if(readerProperty.BufferType.HasFlag(EnumReaderBufferType.MEMORY_MAPPED_VIEW_ACCESSOR))
                readStrategy = new MemorySequentialAccess(readerProperty);
            else
                throw new NotImplementedException("Unreachable code");

            return readStrategy;
        }
Example #4
0
        /// <summary>
        /// Basic constructor
        /// </summary>
        /// <param name="memoryFile"></param>
        public MemorySequentialAccess(IFileReaderProperty readerProperty)
        {
            if (readerProperty == null)
            {
                throw new ArgumentNullException("readerProperty");
            }
            if (readerProperty.TryValidate() == false)
            {
                throw new InvalidOperationException("readerProperty has invalid data");
            }
            this.ReaderProperty = readerProperty;

            this.MemoryFile = MemoryMappedFile.CreateFromFile(readerProperty.FullFilePath, FileMode.Open, readerProperty.UniqueFileName);
        }
        public static IFileReadStrategy Instance(IFileReaderProperty readerProperty)
        {
            IFileReadStrategy readStrategy = null;

            switch (readerProperty.ReaderType)
            {
            case EnumCOFFReaderType.MEMORY_SEQ_READ:
                readStrategy = new MemorySequentialAccess(readerProperty);
                break;

            case EnumCOFFReaderType.MEMORY_ACCESSOR_READ:
                readStrategy = new MemoryRandomAccess(readerProperty);
                break;

            case EnumCOFFReaderType.BINARY_READ:
                break;

            default:
                throw new NotImplementedException("Unreachable code");
            }

            return(readStrategy);
        }
 /// <summary>
 /// Constructor using Direct file path data and store
 /// </summary>
 /// <param name="fileProperty"></param>
 /// <param name="store"></param>
 public COFFFileBrowser(IFileReaderProperty fileProperty, IFileDataStore store)
 {
     this.Property = fileProperty;
     this.Store = store;
     this.ReaderStrategy = FactoryFileReadStrategy.Instance(this.Property);
 }
 /// <summary>
 /// Default constructor
 /// </summary>
 public COFFFileBrowser(IFileReaderProperty fileProperty) : this(fileProperty, FileDataStoreFactory.COFFStore()) { }
Example #8
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="reader"></param>
 /// <param name="store"></param>
 public COFFBrowserBase(IFileReaderProperty reader, ICOFFDataStore store)
 {
     this.ReaderProperty = reader;
     this.DataStore      = store;
 }
Example #9
0
 /// <summary>
 /// Construct the base PE browser
 /// </summary>
 /// <param name="reader"></param>
 public COFFBrowserBase(IFileReaderProperty reader)
     : this(reader, null)
 {
 }