Поделиться через


структура IMAGE_SECTION_HEADER (winnt.h)

Представляет формат заголовка раздела изображения.

Синтаксис

typedef struct _IMAGE_SECTION_HEADER {
  BYTE  Name[IMAGE_SIZEOF_SHORT_NAME];
  union {
    DWORD PhysicalAddress;
    DWORD VirtualSize;
  } Misc;
  DWORD VirtualAddress;
  DWORD SizeOfRawData;
  DWORD PointerToRawData;
  DWORD PointerToRelocations;
  DWORD PointerToLinenumbers;
  WORD  NumberOfRelocations;
  WORD  NumberOfLinenumbers;
  DWORD Characteristics;
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;

Члены

Name[IMAGE_SIZEOF_SHORT_NAME]

8-байтовая строка UTF-8 с заполнением null. Если строка имеет длину ровно восемь символов, то завершающийся пустой символ не существует. Для более длинных имен этот элемент содержит косую черту (/), за которой следует ASCII-представление десятичного числа, являющегося смещением в строковой таблице. Исполняемые образы не используют строковую таблицу и не поддерживают имена разделов длиной более восьми символов.

Misc

Misc.PhysicalAddress

Адрес файла.

Misc.VirtualSize

Общий размер раздела при загрузке в память в байтах. Если это значение больше элемента SizeOfRawData , раздел заполняется нулями. Это поле допустимо только для исполняемых образов и должно иметь значение 0 для объектных файлов.

VirtualAddress

Адрес первого байта раздела при загрузке в память относительно базы образа. Для файлов объектов это адрес первого байта перед применением перемещения.

SizeOfRawData

Размер инициализированных данных на диске в байтах. Это значение должно быть кратным члену FileAlignmentструктуры IMAGE_OPTIONAL_HEADER . Если это значение меньше элемента VirtualSize , оставшаяся часть раздела заполняется нулями. Если раздел содержит только неинициализированные данные, член равен нулю.

PointerToRawData

Указатель на первую страницу в файле COFF. Это значение должно быть кратным члену FileAlignmentструктуры IMAGE_OPTIONAL_HEADER . Если раздел содержит только неинициализированные данные, задайте для этого элемента нулевое значение.

PointerToRelocations

Файл, указатель на начало записей перемещения для раздела. Если перемещения отсутствуют, это значение равно нулю.

PointerToLinenumbers

Указатель на начало строковых записей раздела. Если номера строк COFF отсутствуют, это значение равно нулю.

NumberOfRelocations

Количество записей о перемещении для раздела. Это значение равно нулю для исполняемых образов.

NumberOfLinenumbers

Количество строковых записей для раздела.

Characteristics

Характеристики изображения. Определены следующие значения.

Flag Значение
0x00000000
Зарезервировано.
0x00000001
Зарезервировано.
0x00000002
Зарезервировано.
0x00000004
Зарезервировано.
IMAGE_SCN_TYPE_NO_PAD
0x00000008
Раздел не должен быть заполнен до следующей границы. Этот флаг устарел и заменяется IMAGE_SCN_ALIGN_1BYTES.
0x00000010
Зарезервировано.
IMAGE_SCN_CNT_CODE
0x00000020
Раздел содержит исполняемый код.
IMAGE_SCN_CNT_INITIALIZED_DATA
0x00000040
Раздел содержит инициализированные данные.
IMAGE_SCN_CNT_UNINITIALIZED_DATA
0x00000080
Раздел содержит неинициализированные данные.
IMAGE_SCN_LNK_OTHER
0x00000100
Зарезервировано.
IMAGE_SCN_LNK_INFO
0x00000200
Раздел содержит комментарии или другую информацию. Это допустимо только для объектных файлов.
0x00000400
Зарезервировано.
IMAGE_SCN_LNK_REMOVE
0x00000800
Раздел не станет частью образа. Это допустимо только для объектных файлов.
IMAGE_SCN_LNK_COMDAT
0x00001000
Раздел содержит данные COMDAT. Это допустимо только для объектных файлов.
0x00002000
Зарезервировано.
IMAGE_SCN_NO_DEFER_SPEC_EXC
0x00004000
Сброс спекулятивных исключений, обрабатывающих биты в записях TLB для этого раздела.
IMAGE_SCN_GPREL
0x00008000
Раздел содержит данные, на которые ссылается глобальный указатель.
0x00010000
Зарезервировано.
IMAGE_SCN_MEM_PURGEABLE
0x00020000
Зарезервировано.
IMAGE_SCN_MEM_LOCKED
0x00040000
Зарезервировано.
IMAGE_SCN_MEM_PRELOAD
0x00080000
Зарезервировано.
IMAGE_SCN_ALIGN_1BYTES
0x00100000
Выравнивание данных по 1-байтовой границе. Это допустимо только для объектных файлов.
IMAGE_SCN_ALIGN_2BYTES
0x00200000
Выравнивание данных по 2-байтовой границе. Это допустимо только для объектных файлов.
IMAGE_SCN_ALIGN_4BYTES
0x00300000
Выравнивание данных по 4-байтовой границе. Это допустимо только для объектных файлов.
IMAGE_SCN_ALIGN_8BYTES
0x00400000
Выравнивание данных по 8-байтовой границе. Это допустимо только для объектных файлов.
IMAGE_SCN_ALIGN_16BYTES
0x00500000
Выравнивание данных по 16-байтовой границе. Это допустимо только для объектных файлов.
IMAGE_SCN_ALIGN_32BYTES
0x00600000
Выравнивание данных по 32-байтовой границе. Это допустимо только для объектных файлов.
IMAGE_SCN_ALIGN_64BYTES
0x00700000
Выравнивание данных по 64-байтовой границе. Это допустимо только для объектных файлов.
IMAGE_SCN_ALIGN_128BYTES
0x00800000
Выравнивание данных по 128-байтовой границе. Это допустимо только для объектных файлов.
IMAGE_SCN_ALIGN_256BYTES
0x00900000
Выравнивание данных по 256-байтовой границе. Это допустимо только для объектных файлов.
IMAGE_SCN_ALIGN_512BYTES
0x00A00000
Выравнивание данных по 512-байтовой границе. Это допустимо только для объектных файлов.
IMAGE_SCN_ALIGN_1024BYTES
0x00B00000
Выравнивание данных по 1024-байтовой границе. Это допустимо только для объектных файлов.
IMAGE_SCN_ALIGN_2048BYTES
0x00C00000
Выравнивание данных по границе в 2048 байтов. Это допустимо только для объектных файлов.
IMAGE_SCN_ALIGN_4096BYTES
0x00D00000
Выравнивание данных по границе в 4096 байт. Это допустимо только для объектных файлов.
IMAGE_SCN_ALIGN_8192BYTES
0x00E00000
Выравнивание данных по границе в 8192 байта. Это допустимо только для объектных файлов.
IMAGE_SCN_LNK_NRELOC_OVFL
0x01000000
Раздел содержит расширенные перемещения. Количество перемещений для раздела превышает 16 бит, зарезервированных для него в заголовке раздела. Если поле NumberOfRelocations в заголовке раздела 0xffff, фактическое число перемещения сохраняется в поле VirtualAddress первого перемещения. Ошибка, если IMAGE_SCN_LNK_NRELOC_OVFL задано и в разделе меньше 0xffff перемещения.
IMAGE_SCN_MEM_DISCARDABLE
0x02000000
При необходимости раздел можно удалить.
IMAGE_SCN_MEM_NOT_CACHED
0x04000000
Раздел не может быть кэширован.
IMAGE_SCN_MEM_NOT_PAGED
0x08000000
Раздел не может быть разостранит.
IMAGE_SCN_MEM_SHARED
0x10000000
Раздел можно совместно использовать в памяти.
IMAGE_SCN_MEM_EXECUTE
0x20000000
Раздел можно выполнить в виде кода.
IMAGE_SCN_MEM_READ
0x40000000
Раздел можно прочитать.
IMAGE_SCN_MEM_WRITE
0x80000000
Раздел можно записать в .

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Верхняя часть winnt.h (включая Windows.h)

См. также раздел

ImageDirectoryEntryToDataEx

Структуры ImageHlp

ImageRvaToSection

ImageRvaToVa

LOADED_IMAGE