/// <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; }
/// <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()) { }
/// <summary> /// Constructor /// </summary> /// <param name="reader"></param> /// <param name="store"></param> public COFFBrowserBase(IFileReaderProperty reader, ICOFFDataStore store) { this.ReaderProperty = reader; this.DataStore = store; }
/// <summary> /// Construct the base PE browser /// </summary> /// <param name="reader"></param> public COFFBrowserBase(IFileReaderProperty reader) : this(reader, null) { }