IMAGE_SECTION_HEADER

PE フォーマットファイルのセクションヘッダヘッダの情報を定義します。

#define IMAGE_SIZEOF_SHORT_NAME     8

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

セクション名を表す8文字以内の ASCII 文字列が格納されます。文字列の長さが8文字の場合には、終端のヌル文字は付加されません。実行イメージでは8文字以上の文字列はサポートされません。

PhysicalAddress
VirtualSize

実行イメージでは、メモリ上にロードされたときの、セクションデータのサイズが格納されます。このサイズが SizeOfRawData メンバよりも大きい場合には、セクションの残りの部分は 0 で埋められます。

VirtualAddress

実行イメージファイルでは、メモリにロードされたときの、イメージのベースアドレスに対するセクションの先頭バイトの RVA が格納されます。

SizeOfRawData

イメージファイルでは、ディスク上のセクションデータのサイズが格納されます。この値は、ファイルアライメント値の倍数に切り上げられます。

PointerToRawData

セクションデータの先頭へのファイルオフセットが格納されます。この値はファイルアライメント値の倍数になります。

PointerToRelocations

セクションの再配置エントリへのファイルオフセットが格納されます。実行イメージでは 0 になります。

PointerToLinenumbers

セクションの行番号エントリへのファイルオフセットが格納されます。通常、実行イメージでは 0 になります。

NumberOfRelocations

セクション内の再配置エントリの数が格納されます。実行イメージでは 0 になります。

NumberOfLinenumbers

セクション内の行番号エントリの数が格納されます。通常、実行イメージでは 0 になります。

Characteristics

セクションの特性を示すフラグが格納されます。

意味
0x00000000 (IMAGE_SCN_TYPE_REG)

予約されています。

0x00000001 (IMAGE_SCN_TYPE_DSECT)
0x00000002 (IMAGE_SCN_TYPE_NOLOAD)
0x00000004 (IMAGE_SCN_TYPE_GROUP)
0x00000008 (IMAGE_SCN_TYPE_NO_PAD)

セクションは次の境界まで埋め文字されません。これは、 IMAGE_SCN_ALIGN_1BYTES フラグに取って代わられており、現在では使われません。これはオブジェクトファイルでのみ有効です。

0x00000010 (IMAGE_SCN_TYPE_COPY)

予約されています。

0x00000020 (IMAGE_SCN_CNT_CODE)

セクションに実行コードが含まれています。

0x00000040 (IMAGE_SCN_CNT_INITIALIZED_DATA)

セクションに初期化されたデータが含まれています。

0x00000080 (IMAGE_SCN_CNT_UNINITIALIZED_DATA)

セクションに初期化されていないデータが含まれています。

0x00000100 (IMAGE_SCN_LNK_OTHER)

予約されています。

0x00000200 (IMAGE_SCN_LNK_INFO)

セクションにコメントまたは他の情報が含まれています。オブジェクトファイルでリンカに情報を渡したい場合などに使用されます。これはオブジェクトファイルでのみ有効です。

0x00000400 (IMAGE_SCN_TYPE_OVER)

予約されています。

0x00000800 (IMAGE_SCN_LNK_REMOVE)

セクションはリンク時に削除されて、作成される実行イメージには含まれません。通常、 IMAGE_SCN_LNK_INFO フラグと組み合わせて指定されます。これはオブジェクトファイルでのみ有効です。

0x00001000 (IMAGE_SCN_LNK_COMDAT)

セクションに COMDAT データが含まれています。これはオブジェクトファイルでのみ有効です。

0x00002000

予約されています。

0x00004000 (IMAGE_SCN_NO_DEFER_SPEC_EXC)
0x00008000 (IMAGE_SCN_MEM_FARDATA)
0x00010000 (IMAGE_SCN_MEM_SYSHEAP)
0x00020000 (IMAGE_SCN_MEM_PURGEABLE, IMAGE_SCN_MEM_16BIT)
0x00040000 (IMAGE_SCN_MEM_LOCKED)
0x00080000 (IMAGE_SCN_MEM_PRELOAD)
0x00100000 (IMAGE_SCN_ALIGN_1BYTES)

データをそれぞれ 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192 バイト境界に合わせます。これらはオブジェクトファイルでのみ有効です。

0x00200000 (IMAGE_SCN_ALIGN_2BYTES)
0x00300000 (IMAGE_SCN_ALIGN_4BYTES)
0x00400000 (IMAGE_SCN_ALIGN_8BYTES)
0x00500000 (IMAGE_SCN_ALIGN_16BYTES)
0x00600000 (IMAGE_SCN_ALIGN_32BYTES)
0x00700000 (IMAGE_SCN_ALIGN_64BYTES)
0x00800000 (IMAGE_SCN_ALIGN_128BYTES)
0x00900000 (IMAGE_SCN_ALIGN_256BYTES)
0x00A00000 (IMAGE_SCN_ALIGN_512BYTES)
0x00B00000 (IMAGE_SCN_ALIGN_1024BYTES)
0x00C00000 (IMAGE_SCN_ALIGN_2048BYTES)
0x00D00000 (IMAGE_SCN_ALIGN_4096BYTES)
0x00E00000 (IMAGE_SCN_ALIGN_8192BYTES)
0x00F00000 (IMAGE_SCN_ALIGN_MASK)

使用されません。

0x01000000 (IMAGE_SCN_LNK_NRELOC_OVFL)

セクションに拡張された再配置が含まれています。

0x02000000 (IMAGE_SCN_MEM_DISCARDABLE)

セクションはプロセスが開始された後で必要があれば破棄できます。例えば、再配置情報を含むセクションなどで使用されます。

0x04000000 (IMAGE_SCN_MEM_NOT_CACHED)

セクションはキャッシュできません。

0x08000000 (IMAGE_SCN_MEM_NOT_PAGED)

セクションはページアウトできません。

0x10000000 (IMAGE_SCN_MEM_SHARED)

セクションを、このイメージのすべての実行インスタンスにおけるメモリ中で共有できます。

0x20000000 (IMAGE_SCN_MEM_EXECUTE)

プロセスに対してメモリ中のセクションデータへの実行アクセスを許可します。

0x40000000 (IMAGE_SCN_MEM_READ)

プロセスに対してメモリ中のセクションデータへの読み取りアクセスを許可します。

0x80000000 (IMAGE_SCN_MEM_WRITE)

プロセスに対してメモリ中のセクションデータへの書き込みアクセスを許可します。

対応情報

Windows 95 以降 / Windows NT 3.1 以降

変数との対応

HSP 変数 メンバ
メンバ名 オフセット サイズ
scthdr.0 Name 0 8
scthdr.1
scthdr.2 Misc VirtualSize / PhysicalAddress 8 4
scthdr.3 VirtualAddress 12 4
scthdr.4 SizeOfRawData 16 4
scthdr.5 PointerToRawData 20 4
scthdr.6 PointerToRelocations 24 4
scthdr.7 PointerToLinenumbers 28 4
scthdr.8 下位ワード NumberOfRelocations 32 2
上位ワード NumberOfLinenumbers 34 2
scthdr.9 Characteristics 36 4