Example #1
0
        /// <summary>
        /// Set the data list
        /// </summary>
        /// <typeparam name="TLayoutModel"></typeparam>
        /// <param name="enumVal"></param>
        /// <returns></returns>
        public void SetData <TLayoutModel>(EnumReaderLayoutType enumVal, TLayoutModel modelList,
                                           int position = -1)
            where TLayoutModel : class
        {
            if (this.FileData.ContainsKey(enumVal) == true)
            {
                this.FileData[enumVal] = modelList;
            }
            else
            {
                this.FileData.Add(enumVal, modelList);
            }

            int fIndex = this.LayoutOrder.FindIndex(e => e == enumVal);

            if (fIndex == position)
            {
                return;
            }
            if (fIndex >= 0)
            {
                this.LayoutOrder.Insert(position, enumVal);
            }
            else
            {
                this.LayoutOrder.Add(enumVal);
            }
        }
Example #2
0
 /// <summary>
 /// Delete the model
 /// </summary>
 /// <param name="enumVal"></param>
 public void Delete(EnumReaderLayoutType enumVal)
 {
     this.LayoutOrder.Remove(enumVal);
     if (this.FileData.ContainsKey(enumVal) == true)
     {
         this.FileData.Remove(enumVal);
     }
 }
Example #3
0
        internal LayoutModel <OptionalHeaderDataDirImageOnly> GetDataDirectory(EnumReaderLayoutType dataDirType)
        {
            if (!(dataDirType >= EnumReaderLayoutType.OPT_HEADER_DATADIR_EXPORT_TABLE &&
                  dataDirType <= EnumReaderLayoutType.OPT_HEADER_DATADIR_RESERVED))
            {
                throw new System.ArgumentOutOfRangeException("dataDirType");
            }

            return(this.DataStore.GetData <LayoutModel <OptionalHeaderDataDirImageOnly> >(dataDirType));
        }
Example #4
0
        /// <summary>
        /// Get the data
        /// </summary>
        /// <typeparam name="TLayoutModel"></typeparam>
        /// <param name="enumVal"></param>
        /// <returns></returns>
        public TLayoutModel GetData <TLayoutModel>(EnumReaderLayoutType enumVal)
            where TLayoutModel : class
        {
            TLayoutModel model = null;

            if (this.FileData.ContainsKey(enumVal) == true)
            {
                model = this.FileData[enumVal] as TLayoutModel;
            }

            return(model);
        }
Example #5
0
        /// <summary>
        /// Each data directory gives the address and size of a table or string that Windows uses.
        /// These data directory entries are all loaded into memory so that the system can use them
        /// at run time. A data directory is an 8byte field.
        /// </summary>
        internal void ReadOptHeaderDataDirectoriesImageOnly()
        {
            // Read the data directories
            OptHeaderDataDirectoriesImageOnly dirsImage = new OptHeaderDataDirectoriesImageOnly();

            for (int indx = 0; indx < this.DataStore.NumberOfDataDirImageOnly; ++indx)
            {
                EnumReaderLayoutType enumVal = (EnumReaderLayoutType)
                                               ((int)EnumReaderLayoutType.OPT_HEADER_DATADIR_EXPORT_TABLE + indx);
                dirsImage.Add(enumVal,
                              this.ReaderStrategy.ReadLayout <OptionalHeaderDataDirImageOnly>());
            }

            this.DataStore.OptHDataDirImages = dirsImage;
        }
Example #6
0
        /// <summary>
        /// Get the data
        /// </summary>
        /// <typeparam name="TLayoutModel"></typeparam>
        /// <param name="index"></param>
        /// <returns></returns>
        public TLayoutModel GetData <TLayoutModel>(int index)
            where TLayoutModel : class
        {
            if (!(index >= 0 && index < this.FileData.Count))
            {
                return(null);
            }

            EnumReaderLayoutType enumVal = this.LayoutOrder[index];

            TLayoutModel model = null;

            if (this.FileData.ContainsKey(enumVal) == true)
            {
                model = this.FileData[enumVal] as TLayoutModel;
            }

            return(model);
        }
Example #7
0
 /// <summary>
 /// Basic Constructor
 /// </summary>
 /// <param name="layoutType"></param>
 public COFFReaderHandler(EnumReaderLayoutType layoutType)
 {
     this.LayoutType = layoutType;
 }