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 字节、null 填充的 UTF-8 字符串。 如果字符串长度正好为 8 个字符,则没有终止 null 字符。 对于较长的名称,此成员包含 (/) 的正斜杠,后跟十进制数的 ASCII 表示形式,该数字是字符串表中的偏移量。 可执行映像不使用字符串表,并且不支持长度超过 8 个字符的节名称。

Misc

Misc.PhysicalAddress

文件地址。

Misc.VirtualSize

加载到内存中的节的总大小(以字节为单位)。 如果此值大于 SizeOfRawData 成员,则节将填充零。 此字段仅对可执行映像有效,对于对象文件,应设置为 0。

VirtualAddress

加载到内存中的节的第一个字节的地址,相对于映像基。 对于对象文件,这是应用重定位之前第一个字节的地址。

SizeOfRawData

磁盘上初始化的数据的大小(以字节为单位)。 此值必须是 IMAGE_OPTIONAL_HEADER 结构的 FileAlignment 成员的倍数。 如果此值小于 VirtualSize 成员,则部分的其余部分将填充零。 如果节仅包含未初始化的数据,则成员为零。

PointerToRawData

指向 COFF 文件中第一页的文件指针。 此值必须是 IMAGE_OPTIONAL_HEADER 结构的 FileAlignment 成员的倍数。 如果节仅包含未初始化的数据,请将此成员设置为零。

PointerToRelocations

指向节重定位条目开头的文件指针。 如果没有重定位,则此值为零。

PointerToLinenumbers

指向节行号条目开头的文件指针。 如果没有 COFF 行号,则此值为零。

NumberOfRelocations

节的重定位条目数。 对于可执行映像,此值为零。

NumberOfLinenumbers

节的行号条目数。

Characteristics

图像的特征。 定义了以下值。

标志 含义
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