<html><head> <META http-equiv="content-type" content="text/html; charset=utf-8"> <title>sal.io.format.fmt_pe</title> </head><body> <h1>sal.io.format.fmt_pe</h1> <!-- Generated by Ddoc from src/sal/io/format/fmt_pe.d --> 次の資料を元に作成しています.<br> 「Microsoft Platform SDK」 のヘッダファイル<br> 「PECOFF仕様」 <a href="http://www.microsoft.com/whdc/system/platform/firmware/PECOFFeula.mspx">http://www.microsoft.com/whdc/system/platform/firmware/PECOFFeula.mspx</a> (2008/07/28 版)<br> 日本語資料が欲しい... <br><br> <br><br> <table><tr><td>IMAGE_DOS_HEADER </td> <td>MS-DOS用ヘッダ </td></tr> <tr><td>Stab Program </td> <td>MS-DOSでの実行時用プログラム </td></tr> <tr><td>PE Header </td> <td>PEイメージファイルヘッダ </td></tr> <tr><td>PE Optional Header</td> <td>PEイメージファイルオプションヘッダ </td></tr> <tr><td>Data Dicationary </td> <td>データディクショナリ </td></tr> <tr><td>Section Data </td> <td>セクションデータ </td></tr> <tr><td>COFF Line Number </td> <td>COFF行番号 </td></tr> <tr><td>COFF Symbols </td> <td>COFF行シンボル </td></tr> <tr><td>COFF Debug </td> <td>COFFデバッグ情報 </td></tr> </table> <br><br> <dl><dt><big>invariant ushort <u>IMAGE_DOS_SIGNATURE</u>; </big></dt> <dd>MZ <br><br> </dd> <dt><big>invariant uint <u>IMAGE_NT_SIGNATURE</u>; </big></dt> <dd>PE\0\0 <br><br> </dd> <dt><big>enum <u>IMAGE_FILE_MACHINE</u>; </big></dt> <dd>Machine for IMAGE_FILE_HEADER. <br><br> <dl><dt><big><u>I386</u></big></dt> <dd>Intel 386. <br><br> </dd> <dt><big><u>R3000</u></big></dt> <dd>MIPS little-endian, 0x160 big-endian <br><br> </dd> <dt><big><u>R4000</u></big></dt> <dd>MIPS little-endian <br><br> </dd> <dt><big><u>R10000</u></big></dt> <dd>MIPS little-endian <br><br> </dd> <dt><big><u>WCEMIPSV2</u></big></dt> <dd>MIPS little-endian WCE v2 <br><br> </dd> <dt><big><u>ALPHA</u></big></dt> <dd>Alpha_AXP <br><br> </dd> <dt><big><u>SH3</u></big></dt> <dd><u>SH3</u> little-endian <br><br> </dd> <dt><big><u>SH3E</u></big></dt> <dd><u>SH3E</u> little-endian <br><br> </dd> <dt><big><u>SH4</u></big></dt> <dd><u>SH4</u> little-endian <br><br> </dd> <dt><big><u>SH5</u></big></dt> <dd><u>SH5</u> <br><br> </dd> <dt><big><u>ARM</u></big></dt> <dd><u>ARM</u> Little-Endian <br><br> </dd> <dt><big><u>POWERPC</u></big></dt> <dd>IBM PowerPC Little-Endian <br><br> </dd> <dt><big><u>IA64</u></big></dt> <dd>Intel 64 <br><br> </dd> <dt><big><u>MIPS16</u></big></dt> <dd>MIPS <br><br> </dd> <dt><big><u>ALPHA64</u></big></dt> <dd><u>ALPHA64</u> <br><br> </dd> <dt><big><u>MIPSFPU</u></big></dt> <dd>MIPS <br><br> </dd> <dt><big><u>MIPSFPU16</u></big></dt> <dd>MIPS <br><br> </dd> <dt><big><u>AXP64</u></big></dt> <dd>same ALPHA64 <br><br> </dd> <dt><big><u>TRICORE</u></big></dt> <dd>Infineon <br><br> </dd> <dt><big><u>EBC</u></big></dt> <dd>EFI Byte Code <br><br> </dd> <dt><big><u>AMD64</u></big></dt> <dd><u>AMD64</u> (K8) <br><br> </dd> <dt><big><u>M32R</u></big></dt> <dd><u>M32R</u> little-endian <br><br> </dd> </dl> </dd> <dt><big>invariant int <u>IMAGE_NUMBEROF_DIRECTORY_ENTRIES</u>; </big></dt> <dd>ディレクトリエントリ <br><br> </dd> <dt><big>invariant int <u>IMAGE_SIZEOF_SHORT_NAME</u>; </big></dt> <dd>セクション名の長さ <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_FILE_RELOCS_STRIPPED</u>; </big></dt> <dd>ファイルから再配置情報削除済 <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_FILE_EXECUTABLE_IMAGE</u>; </big></dt> <dd>実行可能ファイル <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_FILE_LINE_NUMS_STRIPPED</u>; </big></dt> <dd>[非推奨] COFF行番号削除済 <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_FILE_LOCAL_SYMS_STRIPPED</u>; </big></dt> <dd>[非推奨] COFFシンボル削除済 <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_FILE_AGGRESIVE_WS_TRIM</u>; </big></dt> <dd>[非推奨] 旧版 working set 削除済 <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_FILE_LARGE_ADDRESS_AWARE</u>; </big></dt> <dd>2GBアドレス以上のハンドル可 <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_FILE_BYTES_REVERSED_LO</u>; </big></dt> <dd>[非推奨] リトルエンディアン <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_FILE_32BIT_MACHINE</u>; </big></dt> <dd>32bit-wordアーキテクチャ <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_FILE_DEBUG_STRIPPED</u>; </big></dt> <dd>デバッグ情報削除済 <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP</u>; </big></dt> <dd>メディア上のイメージ,スワップより実行 <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_FILE_NET_RUN_FROM_SWAP</u>; </big></dt> <dd>ネット上のイメージ,スワップより実行 <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_FILE_SYSTEM</u>; </big></dt> <dd>システムファイル <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_FILE_DLL</u>; </big></dt> <dd>DLL <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_FILE_UP_SYSTEM_ONLY</u>; </big></dt> <dd>ユニプロセッサ上でのみ実行すべき <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_FILE_BYTES_REVERSED_HI</u>; </big></dt> <dd>[非推奨] ビッグエンディアン <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_DLLCHARACTERISTICS_NO_ISOLATION</u>; </big></dt> <dd>isolationを認識するがimageを分離しない <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_DLLCHARACTERISTICS_NO_SEH</u>; </big></dt> <dd>SEHを使用しない. SEハンドラは、存在しないかもしれない <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_DLLCHARACTERISTICS_NO_BIND</u>; </big></dt> <dd>バインドしない <br><br> </dd> <dt><big>invariant ushort <u>IMAGE_DLLCHARACTERISTICS_WDM_DRIVER</u>; </big></dt> <dd>ドライバがWDMモデルを使用する <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_TYPE_NO_PAD</u>; </big></dt> <dd>予約 <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_CNT_CODE</u>; </big></dt> <dd>実行コードを含むセクション <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_CNT_INITIALIZED_DATA</u>; </big></dt> <dd>初期化データを含むセクション <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_CNT_UNINITIALIZED_DATA</u>; </big></dt> <dd>未初期化データを含むセクション <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_LNK_OTHER</u>; </big></dt> <dd>予約 <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_LNK_INFO</u>; </big></dt> <dd>コメント、他情報を含むセクション <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_LNK_REMOVE</u>; </big></dt> <dd>イメージの一部でないものを含む <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_LNK_COMDAT</u>; </big></dt> <dd>comdat を含むセクション <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_LNK_NRELOC_OVFL</u>; </big></dt> <dd>extended 再配置を含むセクション <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_MEM_DISCARDABLE</u>; </big></dt> <dd>破棄可能なセクション <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_MEM_NOT_CACHED</u>; </big></dt> <dd>キャッシュ不可なセクション <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_MEM_NOT_PAGED</u>; </big></dt> <dd>ページ不可なセクション <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_MEM_SHARED</u>; </big></dt> <dd>共有不可なセクション <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_MEM_EXECUTE</u>; </big></dt> <dd>実行可能なセクション <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_MEM_READ</u>; </big></dt> <dd>読み取り可能なセクション <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_MEM_WRITE</u>; </big></dt> <dd>書き込み可能なセクション <br><br> </dd> <dt><big>invariant uint <u>IMAGE_SCN_SCALE_INDEX</u>; </big></dt> <dd>TLSのインデックススケーリング <br><br> </dd> <dt><big>enum <u>IMAGE_SUBSYSTEM</u>; </big></dt> <dd>サブシステム. <br><br> <dl><dt><big><u>UNKNOWN</u></big></dt> <dd>不明. <br><br> </dd> <dt><big><u>NATIVE</u></big></dt> <dd>デバイスドライバ, Native プロセス用 <br><br> </dd> <dt><big><u>WINDOWS_GUI</u></big></dt> <dd>GUIサブシステム <br><br> </dd> <dt><big><u>WINDOWS_CUI</u></big></dt> <dd>CUIサブシステム <br><br> </dd> <dt><big><u>OS2_CUI</u></big></dt> <dd>OS/2 CUI サブシステム <br><br> </dd> <dt><big><u>POSIX_CUI</u></big></dt> <dd>POSIX CUI サブシステム <br><br> </dd> <dt><big><u>NATIVE_WINDOWS</u></big></dt> <dd>Native Windows 9x ドライバ <br><br> </dd> <dt><big><u>WINDOWS_CE_GUI</u></big></dt> <dd>Windows CEサブシステム <br><br> </dd> <dt><big><u>EFI_APPLICATION</u></big></dt> <dd><br><br> </dd> <dt><big><u>EFI_BOOT_SERVICE_DRIVER</u></big></dt> <dd><br><br> </dd> <dt><big><u>EFI_RUNTIME_DRIVER</u></big></dt> <dd><br><br> </dd> <dt><big><u>EFI_ROM</u></big></dt> <dd><br><br> </dd> <dt><big><u>XBOX</u></big></dt> <dd><br><br> </dd> </dl> </dd> <dt><big>struct <u>IMAGE_DOS_HEADER</u>; </big></dt> <dd>DOS .EXE ヘッダ. <br><br> <dl><dt><big>ushort <u>e_magic</u>; </big></dt> <dd>Magic "MZ" 固定 <br><br> </dd> <dt><big>ushort <u>e_cblp</u>; </big></dt> <dd>ファイルの最終ページバイト数 <br><br> </dd> <dt><big>ushort <u>e_cp</u>; </big></dt> <dd>ファイルのページ数 <br><br> </dd> <dt><big>ushort <u>e_crlc</u>; </big></dt> <dd>再配置 <br><br> </dd> <dt><big>ushort <u>e_cparhdr</u>; </big></dt> <dd>パラグラフ中のヘッダサイズ <br><br> </dd> <dt><big>ushort <u>e_minalloc</u>; </big></dt> <dd>エキストラパラグラフに必要な最小値 <br><br> </dd> <dt><big>ushort <u>e_maxalloc</u>; </big></dt> <dd>エキストラパラグラフに必要な最大値 <br><br> </dd> <dt><big>ushort <u>e_ss</u>; </big></dt> <dd>初期SS(スタックセグメント) <br><br> </dd> <dt><big>ushort <u>e_sp</u>; </big></dt> <dd>初期SP(スタックポインタ) <br><br> </dd> <dt><big>ushort <u>e_csum</u>; </big></dt> <dd>チェックサム <br><br> </dd> <dt><big>ushort <u>e_ip</u>; </big></dt> <dd>初期IP(インストラクションポインタ) <br><br> </dd> <dt><big>ushort <u>e_cs</u>; </big></dt> <dd>初期CS(コードセグメント) <br><br> </dd> <dt><big>ushort <u>e_lfarlc</u>; </big></dt> <dd>再配置テーブルのファイルアドレス <br><br> </dd> <dt><big>ushort <u>e_ovno</u>; </big></dt> <dd>オーバレイ番号 <br><br> </dd> <dt><big>ushort[4u] <u>e_res</u>; </big></dt> <dd>予約 <br><br> </dd> <dt><big>ushort <u>e_oemid</u>; </big></dt> <dd>OEM ID <br><br> </dd> <dt><big>ushort <u>e_oeminfo</u>; </big></dt> <dd>OEM 情報 <br><br> </dd> <dt><big>ushort[10u] <u>e_res2</u>; </big></dt> <dd>予約 <br><br> </dd> <dt><big>uint <u>e_lfanew</u>; </big></dt> <dd>PEヘッダが格納されている位置 <br><br> </dd> </dl> </dd> <dt><big>struct <u>IMAGE_NT_HEADERS32</u>; </big></dt> <dd>PEヘッダ. <br><br> <dl><dt><big>uint <u>Signature</u>; </big></dt> <dd>"PE\0\0" 固定 <br><br> </dd> <dt><big>IMAGE_FILE_HEADER <u>FileHeader</u>; </big></dt> <dd>PEヘッダ情報 <br><br> </dd> <dt><big>IMAGE_OPTIONAL_HEADER32 <u>OptionalHeader</u>; </big></dt> <dd>オプショナルヘッダ <br><br> </dd> </dl> </dd> <dt><big>struct <u>IMAGE_FILE_HEADER</u>; </big></dt> <dd>ファイルヘッダ. <br><br> <dl><dt><big>IMAGE_FILE_MACHINE <u>Machine</u>; </big></dt> <dd>see IMAG_FILE_MACHINE <br><br> </dd> <dt><big>ushort <u>NumberOfSections</u>; </big></dt> <dd>セクション数 <br><br> </dd> <dt><big>uint <u>TimeDateStamp</u>; </big></dt> <dd>EXE作成日 <br><br> </dd> <dt><big>uint <u>PointerToSymbolTable</u>; </big></dt> <dd>シンボルテーブル位置(EXEでは0) <br><br> </dd> <dt><big>uint <u>NumberOfSymbols</u>; </big></dt> <dd>シンボル数(EXEでは0) <br><br> </dd> <dt><big>ushort <u>SizeOfOptionalHeader</u>; </big></dt> <dd>オプションヘッダサイズ <br><br> </dd> <dt><big>ushort <u>Characteristics</u>; </big></dt> <dd>ファイル属性 <br><br> </dd> </dl> </dd> <dt><big>struct <u>IMAGE_DATA_DIRECTORY</u>; </big></dt> <dd><u>IMAGE_DATA_DIRECTORY</u>. <br><br> <dl><dt><big>uint <u>VirtualAddress</u>; </big></dt> <dd>仮想アドレス <br><br> </dd> <dt><big>uint <u>Size</u>; </big></dt> <dd>サイズ <br><br> </dd> </dl> </dd> <dt><big>struct <u>IMAGE_OPTIONAL_HEADER32</u>; </big></dt> <dd>オプショナルヘッダ. <br><br> <dl><dt><big>ushort <u>Magic</u>; </big></dt> <dd><u>Magic</u> <br><br> </dd> <dt><big>ubyte <u>MajorLinkerVersion</u>; </big></dt> <dd>リンカメジャーバージョン <br><br> </dd> <dt><big>ubyte <u>MinorLinkerVersion</u>; </big></dt> <dd>リンカマイナーバージョン <br><br> </dd> <dt><big>uint <u>SizeOfCode</u>; </big></dt> <dd>コードセクションのサイズ <br><br> </dd> <dt><big>uint <u>SizeOfInitializedData</u>; </big></dt> <dd>初期化されたデータセクションサイズ <br><br> </dd> <dt><big>uint <u>SizeOfUninitializedData</u>; </big></dt> <dd>未初期化データセクションサイズ <br><br> </dd> <dt><big>uint <u>AddressOfEntryPoint</u>; </big></dt> <dd>エントリポイント [ImageBase] <br><br> </dd> <dt><big>uint <u>BaseOfCode</u>; </big></dt> <dd>メモリにロード後のコードセクション位置 <br><br> </dd> <dt><big>uint <u>BaseOfData</u>; </big></dt> <dd>メモリにロード後のデータセクション位置 <br><br> </dd> <dt><big>uint <u>ImageBase</u>; </big></dt> <dd>メモリ上のどこに、EXEファイルイメージをロードするかの位置. <br><br> 0x00400000 通常のEXEファイル<br> 0x10000000 DLLファイル<br> 0x00010000 WindowsCEのEXEファイル<br> <br><br> </dd> <dt><big>uint <u>SectionAlignment</u>; </big></dt> <dd>各セクションがメモリにロードされるときの境界をバイト単位で指定. <br><br> </dd> <dt><big>uint <u>FileAlignment</u>; </big></dt> <dd>ファイル上のアライメントを指定. <br><br> </dd> <dt><big>ushort <u>MajorOperatingSystemVersion</u>; </big></dt> <dd>OS Major Version (多くの場合4) <br><br> </dd> <dt><big>ushort <u>MinorOperatingSystemVersion</u>; </big></dt> <dd>OS Minor Versoin (多くの場合0) <br><br> </dd> <dt><big>ushort <u>MajorImageVersion</u>; </big></dt> <dd>EXE Major Version (動作には影響無し) <br><br> </dd> <dt><big>ushort <u>MinorImageVersion</u>; </big></dt> <dd>EXE Minor Version (動作には影響無し) <br><br> </dd> <dt><big>ushort <u>MajorSubsystemVersion</u>; </big></dt> <dd>Subsystem Major Version (OSと一緒でよい) <br><br> </dd> <dt><big>ushort <u>MinorSubsystemVersion</u>; </big></dt> <dd>Subsystem Minor Version (OSと一緒でよい) <br><br> </dd> <dt><big>uint <u>Win32VersionValue</u>; </big></dt> <dd>予約 (0でなければならない) <br><br> </dd> <dt><big>uint <u>SizeOfImage</u>; </big></dt> <dd>メモリ上にロードした際のイメージサイズ <br><br> </dd> <dt><big>uint <u>SizeOfHeaders</u>; </big></dt> <dd>ヘッダ情報総バイト数 <br><br> </dd> <dt><big>uint <u>CheckSum</u>; </big></dt> <dd>チェックサム(EXEの場合は0で良い、参照:imagehelp.dll) <br><br> </dd> <dt><big>IMAGE_SUBSYSTEM <u>Subsystem</u>; </big></dt> <dd>サブシステム <br><br> </dd> <dt><big>ushort <u>DllCharacteristics</u>; </big></dt> <dd>DLLの特性(0でも問題はない) <br><br> </dd> <dt><big>uint <u>SizeOfStackReserve</u>; </big></dt> <dd>スタックサイズ <br><br> </dd> <dt><big>uint <u>SizeOfStackCommit</u>; </big></dt> <dd>コミットするスタックサイズ <br><br> </dd> <dt><big>uint <u>SizeOfHeapReserve</u>; </big></dt> <dd>ローカルヒープサイズ <br><br> </dd> <dt><big>uint <u>SizeOfHeapCommit</u>; </big></dt> <dd>コミットするローカルヒープサイズ <br><br> </dd> <dt><big>uint <u>LoaderFlags</u>; </big></dt> <dd>予約(0でなければならない) <br><br> </dd> <dt><big>uint <u>NumberOfRvaAndSizes</u>; </big></dt> <dd>データディクショナリエントリ数(通常16) <br><br> </dd> <dt><big>IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES] <u>DataDirectory</u>; </big></dt> <dd>次の16個の要素からなる. <table><tr><td>Export Table </td></tr> <tr><td>Import Table </td></tr> <tr><td>Resource Table </td></tr> <tr><td>Exception Table </td></tr> <tr><td>Certificate Table </td></tr> <tr><td>Base Relocation Table </td></tr> <tr><td>Debug </td></tr> <tr><td>Architecture </td></tr> <tr><td>Global Ptr </td></tr> <tr><td>TLS Table </td></tr> <tr><td>Load Config Table </td></tr> <tr><td>Bound Import </td></tr> <tr><td>IAT </td></tr> <tr><td>Delay Import Descriptor</td></tr> <tr><td>Reserved </td></tr> </table> <br><br> </dd> </dl> </dd> <dt><big>struct <u>IMAGE_SECTION_HEADER</u>; </big></dt> <dd>セクションヘッダ. <br><br> <dl><dt><big>ubyte[IMAGE_SIZEOF_SHORT_NAME] <u>Name</u>; </big></dt> <dd>セクション名. 一般的に以下のセクションがある. <table><tr><td>.text</td> <td>ネイティブコード</td></tr> <tr><td>.data</td> <td>グローバル変数領域、初期値</td></tr> <tr><td>.idata</td> <td>インポート関数情報</td></tr> <tr><td>.edata</td> <td>エクスポート関数情報</td></tr> <tr><td>.rsrc</td> <td>リソース情報</td></tr> <tr><td>.debug</td> <td>デバッグ情報</td></tr> <tr><td>.reloc</td> <td>再配置情報</td></tr> <tr><td>.tls</td> <td>スレッドごとの静的変数に関する情報</td></tr> </table> <br><br> </dd> <dt><big>uint <u>VirtualSize</u>; </big></dt> <dd>メモリ上セクションサイズ <br><br> </dd> <dt><big>uint <u>VirtualAddress</u>; </big></dt> <dd>メモリ上のセクション位置 <br><br> </dd> <dt><big>uint <u>SizeOfRawData</u>; </big></dt> <dd>ファイル上のセクションサイズ <br><br> </dd> <dt><big>uint <u>PointerToRawData</u>; </big></dt> <dd>ファイル上のセクション位置 <br><br> </dd> <dt><big>uint <u>PointerToRelocations</u>; </big></dt> <dd>再配置エントリ情報ファイル上の位置(EXEの場合0) <br><br> </dd> <dt><big>uint <u>PointerToLinenumbers</u>; </big></dt> <dd>行番号エントリ情報ファイル上の位置 <br><br> </dd> <dt><big>ushort <u>NumberOfRelocations</u>; </big></dt> <dd>再配置エントリ数(EXEの場合0) <br><br> </dd> <dt><big>ushort <u>NumberOfLinenumbers</u>; </big></dt> <dd>行番号エントリ数 <br><br> </dd> <dt><big>uint <u>Characteristics</u>; </big></dt> <dd>セクションの特性 <br><br> </dd> </dl> </dd> </dl> <hr><small>Page generated by <a href="http://www.digitalmars.com/d/2.0/ddoc.html">Ddoc</a>. </small> </body></html>