IMAGE_OPTIONAL_HEADER構造体

宣言文
Type IMAGE_OPTINAL_HEADER
    '基本領域
    Magic As Integer                                'イメージファイルの種類
    SizeOfCode As Long                              '全てのコードセクションの合計サイズ
                                                    '通常は.textセクションのサイズ
    SizeOfInitalizedData As Long                    '初期化済みのデータを格納するセクションのサイズ
                                                    '通常は.bssと.textを除く全てのセクションのサイズの合計
    SizeOfUninitalizedData As Long                  '未初期化済みのデータを格納するセクションのサイズ
                                                    '通常は.bssセクションのサイズ
    AddressOfEntryPoint As Long                     'メモリ上の開始アドレス
    BaseOfCode As Long                              'コードセクションのRVA(RVA=メモリ上でのオフセット値)
    BaseOfData As Long                              'データセクションのRVA
    
    'Windows固有のデータを設定する領域
    ImageBase As Long                               'イメージがメモリにロードされるときのアドレス
    SectionAlignment As Long                        'メモリ上での1ページのサイズ
    FileAlignment As Long                           'ファイル上での1ページのサイズ
    MajorOperatingSystemVersion As Integer          'ファイルを実行するのに最低限必要なOSのメジャーバージョン
    MinorOperatingSystemVersion As Integer          '同、マイナーバージョン
    MajorImageVersion As Integer                    'ファイルのメジャーバージョン
    MinorImageVersion As Integer                    '同、マイナーバージョン
    MajorSubsystemVersion As Integer                'ファイルを実行するのに
                                                    '最低限必要なサブシステムのメジャーバージョン
    MinorSubsystemVersion As Integer                '同、マイナーバージョン
    Reserved1 As Long                               '予約済み
    SizeOfImage As Long                             'メモリ上のイメージのサイズ
    SizeOfHeaders As Long                           'ファイル上のファイルの先頭位置から
                                                    '最後のIMAGE_SECTION_HEADERまでのサイズ
    CheckSum As Long                                'ファイルのCRCのチェックサム(通常は0)
    Subsystem As Integer                            'ファイルが使うサブシステムのタイプ
    DllCharacteristics As Integer                   'DLLの初期化関数が呼び出される環境を指すフラグ群
    SizeOfStackReserve As Long                      '初期スレッドのスタックのために予約された仮想メモリの量
    SizeOfStackCommit As Long                       '初期スレッドで実際に使われるスタックのサイズ
    SizeOfHeapReserve As Long                       'プロセスの初期ヒープとして確保される仮想メモリのサイズ
    SizeOfHeapCommit As Long                        'プロセスのヒープとしてコミットされるメモリのサイズ
    LoaerFlags As Long                              'デバッグサポート用のフラグらしい。詳細不明。
    NumberOfRvaAndSizes As Long                     'DataDirectory配列の数
    DataDirectory(IMAGE_NUMBEROF_DIRECTIRY_ENRIES - 1) As IMAGE_DATA_DIRECTORY
End Type
Subsystemの定数
IMAGE_SUBSYSTEM_UNKNOWN = 0                          サブシステムが不明
IMAGE_SUBSYSTEM_NATIVE = 1                           サブシステムを必要としない(デバイスドライバなど)
IMAGE_SUBSYSTEM_WINDOWS_GUI = 2                      WindowsGUIサブシステム内で実行される
IMAGE_SUBSYSTEM_WIDNOWS_CUI = 3                      Windowsキャラクタサブシステム内で実行される
                                                     (コンソールアプリケーションなど)
IMAGE_SUBSYSTEM_OS2_CUI = 5                          OS/2キャラクタサブシステム内で実行される
                                                     (OS/2.1xアプリケーションのみ)
IMAGE_SUBSYSTEM_POSIX_CUI = 7                        Posixキャラクタサブシステム内で実行される
Structure IMAGE_OPTINAL_HEADER
    '基本領域
    Magic As Short                                'イメージファイルの種類
    SizeOfCode As Integer                              '全てのコードセクションの合計サイズ
                                                    '通常は.textセクションのサイズ
    SizeOfInitalizedData As Integer                    '初期化済みのデータを格納するセクションのサイズ
                                                    '通常は.bssと.textを除く全てのセクションのサイズの合計
    SizeOfUninitalizedData As Integer                  '未初期化済みのデータを格納するセクションのサイズ
                                                    '通常は.bssセクションのサイズ
    AddressOfEntryPoint As Integer                     'メモリ上の開始アドレス
    BaseOfCode As Integer                              'コードセクションのRVA(RVA=メモリ上でのオフセット値)
    BaseOfData As Integer                              'データセクションのRVA
    
    'Windows固有のデータを設定する領域
    ImageBase As Integer                               'イメージがメモリにロードされるときのアドレス
    SectionAlignment As Integer                        'メモリ上での1ページのサイズ
    FileAlignment As Integer                           'ファイル上での1ページのサイズ
    MajorOperatingSystemVersion As Short          'ファイルを実行するのに最低限必要なOSのメジャーバージョン
    MinorOperatingSystemVersion As Short          '同、マイナーバージョン
    MajorImageVersion As Short                    'ファイルのメジャーバージョン
    MinorImageVersion As Short                    '同、マイナーバージョン
    MajorSubsystemVersion As Short                'ファイルを実行するのに
                                                    '最低限必要なサブシステムのメジャーバージョン
    MinorSubsystemVersion As Short                '同、マイナーバージョン
    Reserved1 As Integer                               '予約済み
    SizeOfImage As Integer                             'メモリ上のイメージのサイズ
    SizeOfHeaders As Integer                           'ファイル上のファイルの先頭位置から
                                                    '最後のIMAGE_SECTION_HEADERまでのサイズ
    CheckSum As Integer                                'ファイルのCRCのチェックサム(通常は0)
    Subsystem As Short                            'ファイルが使うサブシステムのタイプ
    DllCharacteristics As Short                   'DLLの初期化関数が呼び出される環境を指すフラグ群
    SizeOfStackReserve As Integer                      '初期スレッドのスタックのために予約された仮想メモリの量
    SizeOfStackCommit As Integer                       '初期スレッドで実際に使われるスタックのサイズ
    SizeOfHeapReserve As Integer                       'プロセスの初期ヒープとして確保される仮想メモリのサイズ
    SizeOfHeapCommit As Integer                        'プロセスのヒープとしてコミットされるメモリのサイズ
    LoaerFlags As Integer                              'デバッグサポート用のフラグらしい。詳細不明。
    NumberOfRvaAndSizes As Integer                     'DataDirectory配列の数
    DataDirectory(IMAGE_NUMBEROF_DIRECTIRY_ENRIES - 1) As IMAGE_DATA_DIRECTORY
End Structure