Win32 API 日本語リファレンス
ホームSystem.Diagnostics.Debug › MINIDUMP_UNLOADED_MODULE

MINIDUMP_UNLOADED_MODULE

構造体
サイズx64: 24 バイト / x86: 24 バイトパッキング4

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
BaseOfImageULONGLONG8+0+0アンロード済みモジュールの基底アドレス。
SizeOfImageDWORD4+8+8モジュールのメモリ上サイズ。
CheckSumDWORD4+12+12モジュールのチェックサム。
TimeDateStampDWORD4+16+16モジュールの日時スタンプ(UNIXエポック秒)。
ModuleNameRvaDWORD4+20+20モジュール名文字列へのRVA。

各言語での定義

#include <windows.h>

// MINIDUMP_UNLOADED_MODULE  (x64 24 / x86 24 バイト)
#pragma pack(push, 4)
typedef struct MINIDUMP_UNLOADED_MODULE {
    ULONGLONG BaseOfImage;
    DWORD SizeOfImage;
    DWORD CheckSum;
    DWORD TimeDateStamp;
    DWORD ModuleNameRva;
} MINIDUMP_UNLOADED_MODULE;
#pragma pack(pop)
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, Pack = 4, CharSet = CharSet.Unicode)]
public struct MINIDUMP_UNLOADED_MODULE
{
    public ulong BaseOfImage;
    public uint SizeOfImage;
    public uint CheckSum;
    public uint TimeDateStamp;
    public uint ModuleNameRva;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, Pack:=4, CharSet:=CharSet.Unicode)>
Public Structure MINIDUMP_UNLOADED_MODULE
    Public BaseOfImage As ULong
    Public SizeOfImage As UInteger
    Public CheckSum As UInteger
    Public TimeDateStamp As UInteger
    Public ModuleNameRva As UInteger
End Structure
import ctypes
from ctypes import wintypes

class MINIDUMP_UNLOADED_MODULE(ctypes.Structure):
    _pack_ = 4
    _fields_ = [
        ("BaseOfImage", ctypes.c_ulonglong),
        ("SizeOfImage", wintypes.DWORD),
        ("CheckSum", wintypes.DWORD),
        ("TimeDateStamp", wintypes.DWORD),
        ("ModuleNameRva", wintypes.DWORD),
    ]
#[repr(C, packed(4))]
pub struct MINIDUMP_UNLOADED_MODULE {
    pub BaseOfImage: u64,
    pub SizeOfImage: u32,
    pub CheckSum: u32,
    pub TimeDateStamp: u32,
    pub ModuleNameRva: u32,
}
import "golang.org/x/sys/windows"

type MINIDUMP_UNLOADED_MODULE struct {
	BaseOfImage uint64
	SizeOfImage uint32
	CheckSum uint32
	TimeDateStamp uint32
	ModuleNameRva uint32
}
type
  MINIDUMP_UNLOADED_MODULE = packed record
    BaseOfImage: UInt64;
    SizeOfImage: DWORD;
    CheckSum: DWORD;
    TimeDateStamp: DWORD;
    ModuleNameRva: DWORD;
  end;
const MINIDUMP_UNLOADED_MODULE = extern struct {
    BaseOfImage: u64,
    SizeOfImage: u32,
    CheckSum: u32,
    TimeDateStamp: u32,
    ModuleNameRva: u32,
};
type
  MINIDUMP_UNLOADED_MODULE {.packed.} = object
    BaseOfImage: uint64
    SizeOfImage: uint32
    CheckSum: uint32
    TimeDateStamp: uint32
    ModuleNameRva: uint32
align(4)
struct MINIDUMP_UNLOADED_MODULE
{
    ulong BaseOfImage;
    uint SizeOfImage;
    uint CheckSum;
    uint TimeDateStamp;
    uint ModuleNameRva;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MINIDUMP_UNLOADED_MODULE サイズ: 24 バイト(x64)
dim st, 6    ; 4byte整数×6(構造体サイズ 24 / 4 切り上げ)
; BaseOfImage : ULONGLONG (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; SizeOfImage : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; CheckSum : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; TimeDateStamp : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; ModuleNameRva : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MINIDUMP_UNLOADED_MODULE, pack=4
    #field int64 BaseOfImage
    #field int SizeOfImage
    #field int CheckSum
    #field int TimeDateStamp
    #field int ModuleNameRva
#endstruct

stdim st, MINIDUMP_UNLOADED_MODULE        ; NSTRUCT 変数を確保
st->BaseOfImage = 100
mes "BaseOfImage=" + st->BaseOfImage