예제 #1
0
파일: HotHeap.cs 프로젝트: EmilZhou/dnlib
		/// <summary>
		/// Creates a hot heap instance
		/// </summary>
		/// <param name="version">Hot heap version</param>
		public static HotHeap Create(HotHeapVersion version) {
			switch (version) {
			case HotHeapVersion.CLR20: return new HotHeap20();
			case HotHeapVersion.CLR40: return new HotHeap40();
			default: throw new ArgumentException("Invalid version");
			}
		}
예제 #2
0
파일: HotStream.cs 프로젝트: EmilZhou/dnlib
		/// <summary>
		/// Creates a <see cref="HotStream"/> instance
		/// </summary>
		/// <param name="version">Hot heap version</param>
		/// <param name="imageStream">Heap stream</param>
		/// <param name="streamHeader">Stream header info</param>
		/// <param name="fullStream">Stream for the full PE file</param>
		/// <param name="baseOffset">Offset in <paramref name="fullStream"/> where the data starts</param>
		/// <returns>A <see cref="HotStream"/> instance or <c>null</c> if <paramref name="version"/>
		/// is invalid</returns>
		public static HotStream Create(HotHeapVersion version, IImageStream imageStream, StreamHeader streamHeader, IImageStream fullStream, FileOffset baseOffset) {
			switch (version) {
			case HotHeapVersion.CLR20: return new HotStreamCLR20(imageStream, streamHeader, fullStream, baseOffset);
			case HotHeapVersion.CLR40: return new HotStreamCLR40(imageStream, streamHeader, fullStream, baseOffset);
			default: return null;
			}
		}
예제 #3
0
        /// <summary>
        ///     Creates a <see cref="HotStream" /> instance
        /// </summary>
        /// <param name="version">Hot heap version</param>
        /// <param name="imageStream">Heap stream</param>
        /// <param name="streamHeader">Stream header info</param>
        /// <param name="fullStream">Stream for the full PE file</param>
        /// <param name="baseOffset">Offset in <paramref name="fullStream" /> where the data starts</param>
        /// <returns>
        ///     A <see cref="HotStream" /> instance or <c>null</c> if <paramref name="version" />
        ///     is invalid
        /// </returns>
        public static HotStream Create(HotHeapVersion version, IImageStream imageStream, StreamHeader streamHeader, IImageStream fullStream, FileOffset baseOffset)
        {
            switch (version)
            {
            case HotHeapVersion.CLR20: return(new HotStreamCLR20(imageStream, streamHeader, fullStream, baseOffset));

            case HotHeapVersion.CLR40: return(new HotStreamCLR40(imageStream, streamHeader, fullStream, baseOffset));

            default: return(null);
            }
        }
예제 #4
0
        /// <summary>
        /// Creates a hot heap instance
        /// </summary>
        /// <param name="metadata">Metadata owner</param>
        /// <param name="version">Hot heap version</param>
        public static HotHeap Create(MetaData metadata, HotHeapVersion version)
        {
            switch (version)
            {
            case HotHeapVersion.CLR20: return(new HotHeap20(metadata));

            case HotHeapVersion.CLR40: return(new HotHeap40(metadata));

            default: throw new ArgumentException("Invalid version");
            }
        }
예제 #5
0
파일: HotTable.cs 프로젝트: EmilZhou/dnlib
		/// <summary>
		/// Constructor
		/// </summary>
		/// <param name="version">Hot heap version</param>
		/// <param name="mdTable">The MD table</param>
		internal HotTable(HotHeapVersion version, IMDTable mdTable) {
			this.mdTable = mdTable;
			this.version = version;

			switch (version) {
			case HotHeapVersion.CLR20:
				hotTableHeaderSize = 0x12;
				break;
			case HotHeapVersion.CLR40:
				hotTableHeaderSize = 0x16;
				break;
			default:
				throw new ArgumentException("Invalid hot heap version");
			}

			this.alignedHotTableHeaderSize = Utils.AlignUp(this.hotTableHeaderSize, HT_ALIGNMENT);
		}
예제 #6
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="version">Hot heap version</param>
        /// <param name="mdTable">The MD table</param>
        internal HotTable(HotHeapVersion version, IMDTable mdTable)
        {
            this.mdTable = mdTable;
            this.version = version;

            switch (version)
            {
            case HotHeapVersion.CLR20:
                hotTableHeaderSize = 0x12;
                break;

            case HotHeapVersion.CLR40:
                hotTableHeaderSize = 0x16;
                break;

            default:
                throw new ArgumentException("Invalid hot heap version");
            }

            this.alignedHotTableHeaderSize = Utils.AlignUp(this.hotTableHeaderSize, HT_ALIGNMENT);
        }