internal ImageSection(ImageSectionHeader header, bool mapped_as_image, IntPtr base_ptr) { Name = header.GetName(); int data_offset = mapped_as_image ? header.VirtualAddress : header.PointerToRawData; int data_size = mapped_as_image ? header.VirtualSize : header.SizeOfRawData; Data = new SafeHGlobalBuffer(base_ptr + data_offset, data_size, false); RelativeVirtualAddress = header.VirtualAddress; }
internal ImageSection(ImageSectionHeader header, bool mapped_as_image, IntPtr base_ptr) { Name = header.GetName(); int data_offset = mapped_as_image ? header.VirtualAddress : header.PointerToRawData; int data_size = mapped_as_image ? header.VirtualSize : header.SizeOfRawData; Data = new SafeHGlobalBuffer(base_ptr + data_offset, data_size, false); RelativeVirtualAddress = header.VirtualAddress; Characteristics = (ImageSectionCharacteristics)(uint)header.Characteristics; Characteristics &= ImageSectionCharacteristics.Code | ImageSectionCharacteristics.Execute | ImageSectionCharacteristics.InitiailizedData | ImageSectionCharacteristics.Read | ImageSectionCharacteristics.Shared | ImageSectionCharacteristics.UninitializedData | ImageSectionCharacteristics.Write; }