ホーム › System.Diagnostics.Debug › IMAGE_DEBUG_DIRECTORY
IMAGE_DEBUG_DIRECTORY
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Characteristics | DWORD | 4 | +0 | +0 | 予約済みです。 |
| TimeDateStamp | DWORD | 4 | +4 | +4 | デバッグ情報が作成された日時。 |
| MajorVersion | WORD | 2 | +8 | +8 | デバッグ情報形式のメジャーバージョン番号。 |
| MinorVersion | WORD | 2 | +10 | +10 | デバッグ情報形式のマイナーバージョン番号。 |
| Type | IMAGE_DEBUG_TYPE | 4 | +12 | +12 | デバッグ情報の形式。このフィールドにより、複数のデバッガーをサポートできます。詳細については、PE 形式仕様の「Debug Type」を参照してください。 |
| SizeOfData | DWORD | 4 | +16 | +16 | デバッグ情報のサイズ (バイト単位)。この値にはデバッグディレクトリ自体は含まれません。 |
| AddressOfRawData | DWORD | 4 | +20 | +20 | イメージが読み込まれたときのデバッグ情報のアドレス (イメージベースからの相対値)。 |
| PointerToRawData | DWORD | 4 | +24 | +24 | デバッグ情報へのファイルポインター。 |
公式ドキュメント
デバッグディレクトリの形式を表します。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// IMAGE_DEBUG_DIRECTORY (x64 28 / x86 28 バイト)
typedef struct IMAGE_DEBUG_DIRECTORY {
DWORD Characteristics;
DWORD TimeDateStamp;
WORD MajorVersion;
WORD MinorVersion;
IMAGE_DEBUG_TYPE Type;
DWORD SizeOfData;
DWORD AddressOfRawData;
DWORD PointerToRawData;
} IMAGE_DEBUG_DIRECTORY;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IMAGE_DEBUG_DIRECTORY
{
public uint Characteristics;
public uint TimeDateStamp;
public ushort MajorVersion;
public ushort MinorVersion;
public uint Type;
public uint SizeOfData;
public uint AddressOfRawData;
public uint PointerToRawData;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IMAGE_DEBUG_DIRECTORY
Public Characteristics As UInteger
Public TimeDateStamp As UInteger
Public MajorVersion As UShort
Public MinorVersion As UShort
Public Type As UInteger
Public SizeOfData As UInteger
Public AddressOfRawData As UInteger
Public PointerToRawData As UInteger
End Structureimport ctypes
from ctypes import wintypes
class IMAGE_DEBUG_DIRECTORY(ctypes.Structure):
_fields_ = [
("Characteristics", wintypes.DWORD),
("TimeDateStamp", wintypes.DWORD),
("MajorVersion", ctypes.c_ushort),
("MinorVersion", ctypes.c_ushort),
("Type", wintypes.DWORD),
("SizeOfData", wintypes.DWORD),
("AddressOfRawData", wintypes.DWORD),
("PointerToRawData", wintypes.DWORD),
]#[repr(C)]
pub struct IMAGE_DEBUG_DIRECTORY {
pub Characteristics: u32,
pub TimeDateStamp: u32,
pub MajorVersion: u16,
pub MinorVersion: u16,
pub Type: u32,
pub SizeOfData: u32,
pub AddressOfRawData: u32,
pub PointerToRawData: u32,
}import "golang.org/x/sys/windows"
type IMAGE_DEBUG_DIRECTORY struct {
Characteristics uint32
TimeDateStamp uint32
MajorVersion uint16
MinorVersion uint16
Type uint32
SizeOfData uint32
AddressOfRawData uint32
PointerToRawData uint32
}type
IMAGE_DEBUG_DIRECTORY = record
Characteristics: DWORD;
TimeDateStamp: DWORD;
MajorVersion: Word;
MinorVersion: Word;
Type: DWORD;
SizeOfData: DWORD;
AddressOfRawData: DWORD;
PointerToRawData: DWORD;
end;const IMAGE_DEBUG_DIRECTORY = extern struct {
Characteristics: u32,
TimeDateStamp: u32,
MajorVersion: u16,
MinorVersion: u16,
Type: u32,
SizeOfData: u32,
AddressOfRawData: u32,
PointerToRawData: u32,
};type
IMAGE_DEBUG_DIRECTORY {.bycopy.} = object
Characteristics: uint32
TimeDateStamp: uint32
MajorVersion: uint16
MinorVersion: uint16
Type: uint32
SizeOfData: uint32
AddressOfRawData: uint32
PointerToRawData: uint32struct IMAGE_DEBUG_DIRECTORY
{
uint Characteristics;
uint TimeDateStamp;
ushort MajorVersion;
ushort MinorVersion;
uint Type;
uint SizeOfData;
uint AddressOfRawData;
uint PointerToRawData;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; IMAGE_DEBUG_DIRECTORY サイズ: 28 バイト(x64)
dim st, 7 ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; Characteristics : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; TimeDateStamp : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; MajorVersion : WORD (+8, 2byte) wpoke st,8,値 / 値 = wpeek(st,8)
; MinorVersion : WORD (+10, 2byte) wpoke st,10,値 / 値 = wpeek(st,10)
; Type : IMAGE_DEBUG_TYPE (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; SizeOfData : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; AddressOfRawData : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; PointerToRawData : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global IMAGE_DEBUG_DIRECTORY
#field int Characteristics
#field int TimeDateStamp
#field short MajorVersion
#field short MinorVersion
#field int Type
#field int SizeOfData
#field int AddressOfRawData
#field int PointerToRawData
#endstruct
stdim st, IMAGE_DEBUG_DIRECTORY ; NSTRUCT 変数を確保
st->Characteristics = 100
mes "Characteristics=" + st->Characteristics