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

TARGET_DEBUG_INFO_v1

構造体
サイズx64: 5664 バイト / x86: 5656 バイト

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

フィールド

フィールドサイズx64x86説明
SizeOfStructDWORD4+0+0この構造体のバイトサイズ。
IdULONGLONG8+8+8対象を一意に識別するID(64ビット)。
SourceULONGLONG8+16+16情報の出所を示す64ビット値。
EntryDateULONGLONG8+24+24解析開始日時(64ビット時刻)。
SysUpTimeULONGLONG8+32+32システム稼働時間。
AppUpTimeULONGLONG8+40+40アプリケーション稼働時間。
CrashTimeULONGLONG8+48+48クラッシュ発生時刻。
ModeULONGLONG8+56+56解析モードを示す値。
OsInfoOS_INFO_v1192+64+64対象OS情報を格納するOS_INFO_v1構造体。
CpuCPU_INFO_v11040+256+256対象CPU情報を格納するCPU_INFO_v1構造体。
DumpFileCHAR260+1296+1296ダンプファイルパスのNULL終端文字列。
FailureDatavoid*8/4+1560+1556障害データへのポインタ。NULL可。
StackTrCHAR4096+1568+1560スタックトレースを表す文字列。

各言語での定義

#include <windows.h>

// OS_INFO_v1  (x64 192 / x86 192 バイト)
typedef struct OS_INFO_v1 {
    OS_TYPE Type;
    _Anonymous_e__Union Anonymous;
    DWORD ProductType;
    DWORD Suite;
    _s_e__Struct s;
    DWORD SrvPackNumber;
    CHAR Language[30];
    CHAR OsString[64];
    CHAR ServicePackString[64];
} OS_INFO_v1;

// DEBUG_PROCESSOR_IDENTIFICATION_ALPHA  (x64 8 / x86 8 バイト)
typedef struct DEBUG_PROCESSOR_IDENTIFICATION_ALPHA {
    DWORD Type;
    DWORD Revision;
} DEBUG_PROCESSOR_IDENTIFICATION_ALPHA;

// DEBUG_PROCESSOR_IDENTIFICATION_AMD64  (x64 28 / x86 28 バイト)
typedef struct DEBUG_PROCESSOR_IDENTIFICATION_AMD64 {
    DWORD Family;
    DWORD Model;
    DWORD Stepping;
    CHAR VendorString[16];
} DEBUG_PROCESSOR_IDENTIFICATION_AMD64;

// DEBUG_PROCESSOR_IDENTIFICATION_IA64  (x64 32 / x86 32 バイト)
typedef struct DEBUG_PROCESSOR_IDENTIFICATION_IA64 {
    DWORD Model;
    DWORD Revision;
    DWORD Family;
    DWORD ArchRev;
    CHAR VendorString[16];
} DEBUG_PROCESSOR_IDENTIFICATION_IA64;

// DEBUG_PROCESSOR_IDENTIFICATION_X86  (x64 28 / x86 28 バイト)
typedef struct DEBUG_PROCESSOR_IDENTIFICATION_X86 {
    DWORD Family;
    DWORD Model;
    DWORD Stepping;
    CHAR VendorString[16];
} DEBUG_PROCESSOR_IDENTIFICATION_X86;

// DEBUG_PROCESSOR_IDENTIFICATION_ARM  (x64 24 / x86 24 バイト)
typedef struct DEBUG_PROCESSOR_IDENTIFICATION_ARM {
    DWORD Model;
    DWORD Revision;
    CHAR VendorString[16];
} DEBUG_PROCESSOR_IDENTIFICATION_ARM;

// DEBUG_PROCESSOR_IDENTIFICATION_ARM64  (x64 24 / x86 24 バイト)
typedef struct DEBUG_PROCESSOR_IDENTIFICATION_ARM64 {
    DWORD Model;
    DWORD Revision;
    CHAR VendorString[16];
} DEBUG_PROCESSOR_IDENTIFICATION_ARM64;

// DEBUG_PROCESSOR_IDENTIFICATION_ALL  (x64 32 / x86 32 バイト)
typedef struct DEBUG_PROCESSOR_IDENTIFICATION_ALL {
    DEBUG_PROCESSOR_IDENTIFICATION_ALPHA Alpha;
    DEBUG_PROCESSOR_IDENTIFICATION_AMD64 Amd64;
    DEBUG_PROCESSOR_IDENTIFICATION_IA64 Ia64;
    DEBUG_PROCESSOR_IDENTIFICATION_X86 X86;
    DEBUG_PROCESSOR_IDENTIFICATION_ARM Arm;
    DEBUG_PROCESSOR_IDENTIFICATION_ARM64 Arm64;
} DEBUG_PROCESSOR_IDENTIFICATION_ALL;

// CPU_INFO_v1  (x64 1040 / x86 1040 バイト)
typedef struct CPU_INFO_v1 {
    DWORD Type;
    DWORD NumCPUs;
    DWORD CurrentProc;
    DEBUG_PROCESSOR_IDENTIFICATION_ALL ProcInfo[32];
    DWORD Mhz;
} CPU_INFO_v1;

// TARGET_DEBUG_INFO_v1  (x64 5664 / x86 5656 バイト)
typedef struct TARGET_DEBUG_INFO_v1 {
    DWORD SizeOfStruct;
    ULONGLONG Id;
    ULONGLONG Source;
    ULONGLONG EntryDate;
    ULONGLONG SysUpTime;
    ULONGLONG AppUpTime;
    ULONGLONG CrashTime;
    ULONGLONG Mode;
    OS_INFO_v1 OsInfo;
    CPU_INFO_v1 Cpu;
    CHAR DumpFile[260];
    void* FailureData;
    CHAR StackTr[4096];
} TARGET_DEBUG_INFO_v1;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct OS_INFO_v1
{
    public int Type;
    public _Anonymous_e__Union Anonymous;
    public uint ProductType;
    public uint Suite;
    public _s_e__Struct s;
    public uint SrvPackNumber;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 30)] public sbyte[] Language;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public sbyte[] OsString;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public sbyte[] ServicePackString;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DEBUG_PROCESSOR_IDENTIFICATION_ALPHA
{
    public uint Type;
    public uint Revision;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DEBUG_PROCESSOR_IDENTIFICATION_AMD64
{
    public uint Family;
    public uint Model;
    public uint Stepping;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public sbyte[] VendorString;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DEBUG_PROCESSOR_IDENTIFICATION_IA64
{
    public uint Model;
    public uint Revision;
    public uint Family;
    public uint ArchRev;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public sbyte[] VendorString;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DEBUG_PROCESSOR_IDENTIFICATION_X86
{
    public uint Family;
    public uint Model;
    public uint Stepping;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public sbyte[] VendorString;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DEBUG_PROCESSOR_IDENTIFICATION_ARM
{
    public uint Model;
    public uint Revision;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public sbyte[] VendorString;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DEBUG_PROCESSOR_IDENTIFICATION_ARM64
{
    public uint Model;
    public uint Revision;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public sbyte[] VendorString;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DEBUG_PROCESSOR_IDENTIFICATION_ALL
{
    public DEBUG_PROCESSOR_IDENTIFICATION_ALPHA Alpha;
    public DEBUG_PROCESSOR_IDENTIFICATION_AMD64 Amd64;
    public DEBUG_PROCESSOR_IDENTIFICATION_IA64 Ia64;
    public DEBUG_PROCESSOR_IDENTIFICATION_X86 X86;
    public DEBUG_PROCESSOR_IDENTIFICATION_ARM Arm;
    public DEBUG_PROCESSOR_IDENTIFICATION_ARM64 Arm64;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct CPU_INFO_v1
{
    public uint Type;
    public uint NumCPUs;
    public uint CurrentProc;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public DEBUG_PROCESSOR_IDENTIFICATION_ALL[] ProcInfo;
    public uint Mhz;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct TARGET_DEBUG_INFO_v1
{
    public uint SizeOfStruct;
    public ulong Id;
    public ulong Source;
    public ulong EntryDate;
    public ulong SysUpTime;
    public ulong AppUpTime;
    public ulong CrashTime;
    public ulong Mode;
    public OS_INFO_v1 OsInfo;
    public CPU_INFO_v1 Cpu;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 260)] public sbyte[] DumpFile;
    public IntPtr FailureData;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4096)] public sbyte[] StackTr;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure OS_INFO_v1
    Public Type As Integer
    Public Anonymous As _Anonymous_e__Union
    Public ProductType As UInteger
    Public Suite As UInteger
    Public s As _s_e__Struct
    Public SrvPackNumber As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=30)> Public Language() As SByte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public OsString() As SByte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public ServicePackString() As SByte
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DEBUG_PROCESSOR_IDENTIFICATION_ALPHA
    Public Type As UInteger
    Public Revision As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DEBUG_PROCESSOR_IDENTIFICATION_AMD64
    Public Family As UInteger
    Public Model As UInteger
    Public Stepping As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public VendorString() As SByte
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DEBUG_PROCESSOR_IDENTIFICATION_IA64
    Public Model As UInteger
    Public Revision As UInteger
    Public Family As UInteger
    Public ArchRev As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public VendorString() As SByte
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DEBUG_PROCESSOR_IDENTIFICATION_X86
    Public Family As UInteger
    Public Model As UInteger
    Public Stepping As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public VendorString() As SByte
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DEBUG_PROCESSOR_IDENTIFICATION_ARM
    Public Model As UInteger
    Public Revision As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public VendorString() As SByte
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DEBUG_PROCESSOR_IDENTIFICATION_ARM64
    Public Model As UInteger
    Public Revision As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public VendorString() As SByte
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DEBUG_PROCESSOR_IDENTIFICATION_ALL
    Public Alpha As DEBUG_PROCESSOR_IDENTIFICATION_ALPHA
    Public Amd64 As DEBUG_PROCESSOR_IDENTIFICATION_AMD64
    Public Ia64 As DEBUG_PROCESSOR_IDENTIFICATION_IA64
    Public X86 As DEBUG_PROCESSOR_IDENTIFICATION_X86
    Public Arm As DEBUG_PROCESSOR_IDENTIFICATION_ARM
    Public Arm64 As DEBUG_PROCESSOR_IDENTIFICATION_ARM64
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure CPU_INFO_v1
    Public Type As UInteger
    Public NumCPUs As UInteger
    Public CurrentProc As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=32)> Public ProcInfo() As DEBUG_PROCESSOR_IDENTIFICATION_ALL
    Public Mhz As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure TARGET_DEBUG_INFO_v1
    Public SizeOfStruct As UInteger
    Public Id As ULong
    Public Source As ULong
    Public EntryDate As ULong
    Public SysUpTime As ULong
    Public AppUpTime As ULong
    Public CrashTime As ULong
    Public Mode As ULong
    Public OsInfo As OS_INFO_v1
    Public Cpu As CPU_INFO_v1
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=260)> Public DumpFile() As SByte
    Public FailureData As IntPtr
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=4096)> Public StackTr() As SByte
End Structure
import ctypes
from ctypes import wintypes

class OS_INFO_v1(ctypes.Structure):
    _fields_ = [
        ("Type", ctypes.c_int),
        ("Anonymous", _Anonymous_e__Union),
        ("ProductType", wintypes.DWORD),
        ("Suite", wintypes.DWORD),
        ("s", _s_e__Struct),
        ("SrvPackNumber", wintypes.DWORD),
        ("Language", ctypes.c_byte * 30),
        ("OsString", ctypes.c_byte * 64),
        ("ServicePackString", ctypes.c_byte * 64),
    ]

class DEBUG_PROCESSOR_IDENTIFICATION_ALPHA(ctypes.Structure):
    _fields_ = [
        ("Type", wintypes.DWORD),
        ("Revision", wintypes.DWORD),
    ]

class DEBUG_PROCESSOR_IDENTIFICATION_AMD64(ctypes.Structure):
    _fields_ = [
        ("Family", wintypes.DWORD),
        ("Model", wintypes.DWORD),
        ("Stepping", wintypes.DWORD),
        ("VendorString", ctypes.c_byte * 16),
    ]

class DEBUG_PROCESSOR_IDENTIFICATION_IA64(ctypes.Structure):
    _fields_ = [
        ("Model", wintypes.DWORD),
        ("Revision", wintypes.DWORD),
        ("Family", wintypes.DWORD),
        ("ArchRev", wintypes.DWORD),
        ("VendorString", ctypes.c_byte * 16),
    ]

class DEBUG_PROCESSOR_IDENTIFICATION_X86(ctypes.Structure):
    _fields_ = [
        ("Family", wintypes.DWORD),
        ("Model", wintypes.DWORD),
        ("Stepping", wintypes.DWORD),
        ("VendorString", ctypes.c_byte * 16),
    ]

class DEBUG_PROCESSOR_IDENTIFICATION_ARM(ctypes.Structure):
    _fields_ = [
        ("Model", wintypes.DWORD),
        ("Revision", wintypes.DWORD),
        ("VendorString", ctypes.c_byte * 16),
    ]

class DEBUG_PROCESSOR_IDENTIFICATION_ARM64(ctypes.Structure):
    _fields_ = [
        ("Model", wintypes.DWORD),
        ("Revision", wintypes.DWORD),
        ("VendorString", ctypes.c_byte * 16),
    ]

class DEBUG_PROCESSOR_IDENTIFICATION_ALL(ctypes.Structure):
    _fields_ = [
        ("Alpha", DEBUG_PROCESSOR_IDENTIFICATION_ALPHA),
        ("Amd64", DEBUG_PROCESSOR_IDENTIFICATION_AMD64),
        ("Ia64", DEBUG_PROCESSOR_IDENTIFICATION_IA64),
        ("X86", DEBUG_PROCESSOR_IDENTIFICATION_X86),
        ("Arm", DEBUG_PROCESSOR_IDENTIFICATION_ARM),
        ("Arm64", DEBUG_PROCESSOR_IDENTIFICATION_ARM64),
    ]

class CPU_INFO_v1(ctypes.Structure):
    _fields_ = [
        ("Type", wintypes.DWORD),
        ("NumCPUs", wintypes.DWORD),
        ("CurrentProc", wintypes.DWORD),
        ("ProcInfo", DEBUG_PROCESSOR_IDENTIFICATION_ALL * 32),
        ("Mhz", wintypes.DWORD),
    ]

class TARGET_DEBUG_INFO_v1(ctypes.Structure):
    _fields_ = [
        ("SizeOfStruct", wintypes.DWORD),
        ("Id", ctypes.c_ulonglong),
        ("Source", ctypes.c_ulonglong),
        ("EntryDate", ctypes.c_ulonglong),
        ("SysUpTime", ctypes.c_ulonglong),
        ("AppUpTime", ctypes.c_ulonglong),
        ("CrashTime", ctypes.c_ulonglong),
        ("Mode", ctypes.c_ulonglong),
        ("OsInfo", OS_INFO_v1),
        ("Cpu", CPU_INFO_v1),
        ("DumpFile", ctypes.c_byte * 260),
        ("FailureData", ctypes.c_void_p),
        ("StackTr", ctypes.c_byte * 4096),
    ]
#[repr(C)]
pub struct OS_INFO_v1 {
    pub Type: i32,
    pub Anonymous: _Anonymous_e__Union,
    pub ProductType: u32,
    pub Suite: u32,
    pub s: _s_e__Struct,
    pub SrvPackNumber: u32,
    pub Language: [i8; 30],
    pub OsString: [i8; 64],
    pub ServicePackString: [i8; 64],
}

#[repr(C)]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_ALPHA {
    pub Type: u32,
    pub Revision: u32,
}

#[repr(C)]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_AMD64 {
    pub Family: u32,
    pub Model: u32,
    pub Stepping: u32,
    pub VendorString: [i8; 16],
}

#[repr(C)]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_IA64 {
    pub Model: u32,
    pub Revision: u32,
    pub Family: u32,
    pub ArchRev: u32,
    pub VendorString: [i8; 16],
}

#[repr(C)]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_X86 {
    pub Family: u32,
    pub Model: u32,
    pub Stepping: u32,
    pub VendorString: [i8; 16],
}

#[repr(C)]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_ARM {
    pub Model: u32,
    pub Revision: u32,
    pub VendorString: [i8; 16],
}

#[repr(C)]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_ARM64 {
    pub Model: u32,
    pub Revision: u32,
    pub VendorString: [i8; 16],
}

#[repr(C)]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_ALL {
    pub Alpha: DEBUG_PROCESSOR_IDENTIFICATION_ALPHA,
    pub Amd64: DEBUG_PROCESSOR_IDENTIFICATION_AMD64,
    pub Ia64: DEBUG_PROCESSOR_IDENTIFICATION_IA64,
    pub X86: DEBUG_PROCESSOR_IDENTIFICATION_X86,
    pub Arm: DEBUG_PROCESSOR_IDENTIFICATION_ARM,
    pub Arm64: DEBUG_PROCESSOR_IDENTIFICATION_ARM64,
}

#[repr(C)]
pub struct CPU_INFO_v1 {
    pub Type: u32,
    pub NumCPUs: u32,
    pub CurrentProc: u32,
    pub ProcInfo: [DEBUG_PROCESSOR_IDENTIFICATION_ALL; 32],
    pub Mhz: u32,
}

#[repr(C)]
pub struct TARGET_DEBUG_INFO_v1 {
    pub SizeOfStruct: u32,
    pub Id: u64,
    pub Source: u64,
    pub EntryDate: u64,
    pub SysUpTime: u64,
    pub AppUpTime: u64,
    pub CrashTime: u64,
    pub Mode: u64,
    pub OsInfo: OS_INFO_v1,
    pub Cpu: CPU_INFO_v1,
    pub DumpFile: [i8; 260],
    pub FailureData: *mut core::ffi::c_void,
    pub StackTr: [i8; 4096],
}
import "golang.org/x/sys/windows"

type OS_INFO_v1 struct {
	Type int32
	Anonymous _Anonymous_e__Union
	ProductType uint32
	Suite uint32
	s _s_e__Struct
	SrvPackNumber uint32
	Language [30]int8
	OsString [64]int8
	ServicePackString [64]int8
}

type DEBUG_PROCESSOR_IDENTIFICATION_ALPHA struct {
	Type uint32
	Revision uint32
}

type DEBUG_PROCESSOR_IDENTIFICATION_AMD64 struct {
	Family uint32
	Model uint32
	Stepping uint32
	VendorString [16]int8
}

type DEBUG_PROCESSOR_IDENTIFICATION_IA64 struct {
	Model uint32
	Revision uint32
	Family uint32
	ArchRev uint32
	VendorString [16]int8
}

type DEBUG_PROCESSOR_IDENTIFICATION_X86 struct {
	Family uint32
	Model uint32
	Stepping uint32
	VendorString [16]int8
}

type DEBUG_PROCESSOR_IDENTIFICATION_ARM struct {
	Model uint32
	Revision uint32
	VendorString [16]int8
}

type DEBUG_PROCESSOR_IDENTIFICATION_ARM64 struct {
	Model uint32
	Revision uint32
	VendorString [16]int8
}

type DEBUG_PROCESSOR_IDENTIFICATION_ALL struct {
	Alpha DEBUG_PROCESSOR_IDENTIFICATION_ALPHA
	Amd64 DEBUG_PROCESSOR_IDENTIFICATION_AMD64
	Ia64 DEBUG_PROCESSOR_IDENTIFICATION_IA64
	X86 DEBUG_PROCESSOR_IDENTIFICATION_X86
	Arm DEBUG_PROCESSOR_IDENTIFICATION_ARM
	Arm64 DEBUG_PROCESSOR_IDENTIFICATION_ARM64
}

type CPU_INFO_v1 struct {
	Type uint32
	NumCPUs uint32
	CurrentProc uint32
	ProcInfo [32]DEBUG_PROCESSOR_IDENTIFICATION_ALL
	Mhz uint32
}

type TARGET_DEBUG_INFO_v1 struct {
	SizeOfStruct uint32
	Id uint64
	Source uint64
	EntryDate uint64
	SysUpTime uint64
	AppUpTime uint64
	CrashTime uint64
	Mode uint64
	OsInfo OS_INFO_v1
	Cpu CPU_INFO_v1
	DumpFile [260]int8
	FailureData uintptr
	StackTr [4096]int8
}
type
  OS_INFO_v1 = record
    Type: Integer;
    Anonymous: _Anonymous_e__Union;
    ProductType: DWORD;
    Suite: DWORD;
    s: _s_e__Struct;
    SrvPackNumber: DWORD;
    Language: array[0..29] of Shortint;
    OsString: array[0..63] of Shortint;
    ServicePackString: array[0..63] of Shortint;
  end;

  DEBUG_PROCESSOR_IDENTIFICATION_ALPHA = record
    Type: DWORD;
    Revision: DWORD;
  end;

  DEBUG_PROCESSOR_IDENTIFICATION_AMD64 = record
    Family: DWORD;
    Model: DWORD;
    Stepping: DWORD;
    VendorString: array[0..15] of Shortint;
  end;

  DEBUG_PROCESSOR_IDENTIFICATION_IA64 = record
    Model: DWORD;
    Revision: DWORD;
    Family: DWORD;
    ArchRev: DWORD;
    VendorString: array[0..15] of Shortint;
  end;

  DEBUG_PROCESSOR_IDENTIFICATION_X86 = record
    Family: DWORD;
    Model: DWORD;
    Stepping: DWORD;
    VendorString: array[0..15] of Shortint;
  end;

  DEBUG_PROCESSOR_IDENTIFICATION_ARM = record
    Model: DWORD;
    Revision: DWORD;
    VendorString: array[0..15] of Shortint;
  end;

  DEBUG_PROCESSOR_IDENTIFICATION_ARM64 = record
    Model: DWORD;
    Revision: DWORD;
    VendorString: array[0..15] of Shortint;
  end;

  DEBUG_PROCESSOR_IDENTIFICATION_ALL = record
    Alpha: DEBUG_PROCESSOR_IDENTIFICATION_ALPHA;
    Amd64: DEBUG_PROCESSOR_IDENTIFICATION_AMD64;
    Ia64: DEBUG_PROCESSOR_IDENTIFICATION_IA64;
    X86: DEBUG_PROCESSOR_IDENTIFICATION_X86;
    Arm: DEBUG_PROCESSOR_IDENTIFICATION_ARM;
    Arm64: DEBUG_PROCESSOR_IDENTIFICATION_ARM64;
  end;

  CPU_INFO_v1 = record
    Type: DWORD;
    NumCPUs: DWORD;
    CurrentProc: DWORD;
    ProcInfo: array[0..31] of DEBUG_PROCESSOR_IDENTIFICATION_ALL;
    Mhz: DWORD;
  end;

  TARGET_DEBUG_INFO_v1 = record
    SizeOfStruct: DWORD;
    Id: UInt64;
    Source: UInt64;
    EntryDate: UInt64;
    SysUpTime: UInt64;
    AppUpTime: UInt64;
    CrashTime: UInt64;
    Mode: UInt64;
    OsInfo: OS_INFO_v1;
    Cpu: CPU_INFO_v1;
    DumpFile: array[0..259] of Shortint;
    FailureData: Pointer;
    StackTr: array[0..4095] of Shortint;
  end;
const OS_INFO_v1 = extern struct {
    Type: i32,
    Anonymous: _Anonymous_e__Union,
    ProductType: u32,
    Suite: u32,
    s: _s_e__Struct,
    SrvPackNumber: u32,
    Language: [30]i8,
    OsString: [64]i8,
    ServicePackString: [64]i8,
};

const DEBUG_PROCESSOR_IDENTIFICATION_ALPHA = extern struct {
    Type: u32,
    Revision: u32,
};

const DEBUG_PROCESSOR_IDENTIFICATION_AMD64 = extern struct {
    Family: u32,
    Model: u32,
    Stepping: u32,
    VendorString: [16]i8,
};

const DEBUG_PROCESSOR_IDENTIFICATION_IA64 = extern struct {
    Model: u32,
    Revision: u32,
    Family: u32,
    ArchRev: u32,
    VendorString: [16]i8,
};

const DEBUG_PROCESSOR_IDENTIFICATION_X86 = extern struct {
    Family: u32,
    Model: u32,
    Stepping: u32,
    VendorString: [16]i8,
};

const DEBUG_PROCESSOR_IDENTIFICATION_ARM = extern struct {
    Model: u32,
    Revision: u32,
    VendorString: [16]i8,
};

const DEBUG_PROCESSOR_IDENTIFICATION_ARM64 = extern struct {
    Model: u32,
    Revision: u32,
    VendorString: [16]i8,
};

const DEBUG_PROCESSOR_IDENTIFICATION_ALL = extern struct {
    Alpha: DEBUG_PROCESSOR_IDENTIFICATION_ALPHA,
    Amd64: DEBUG_PROCESSOR_IDENTIFICATION_AMD64,
    Ia64: DEBUG_PROCESSOR_IDENTIFICATION_IA64,
    X86: DEBUG_PROCESSOR_IDENTIFICATION_X86,
    Arm: DEBUG_PROCESSOR_IDENTIFICATION_ARM,
    Arm64: DEBUG_PROCESSOR_IDENTIFICATION_ARM64,
};

const CPU_INFO_v1 = extern struct {
    Type: u32,
    NumCPUs: u32,
    CurrentProc: u32,
    ProcInfo: [32]DEBUG_PROCESSOR_IDENTIFICATION_ALL,
    Mhz: u32,
};

const TARGET_DEBUG_INFO_v1 = extern struct {
    SizeOfStruct: u32,
    Id: u64,
    Source: u64,
    EntryDate: u64,
    SysUpTime: u64,
    AppUpTime: u64,
    CrashTime: u64,
    Mode: u64,
    OsInfo: OS_INFO_v1,
    Cpu: CPU_INFO_v1,
    DumpFile: [260]i8,
    FailureData: ?*anyopaque,
    StackTr: [4096]i8,
};
type
  OS_INFO_v1 {.bycopy.} = object
    Type: int32
    Anonymous: _Anonymous_e__Union
    ProductType: uint32
    Suite: uint32
    s: _s_e__Struct
    SrvPackNumber: uint32
    Language: array[30, int8]
    OsString: array[64, int8]
    ServicePackString: array[64, int8]

  DEBUG_PROCESSOR_IDENTIFICATION_ALPHA {.bycopy.} = object
    Type: uint32
    Revision: uint32

  DEBUG_PROCESSOR_IDENTIFICATION_AMD64 {.bycopy.} = object
    Family: uint32
    Model: uint32
    Stepping: uint32
    VendorString: array[16, int8]

  DEBUG_PROCESSOR_IDENTIFICATION_IA64 {.bycopy.} = object
    Model: uint32
    Revision: uint32
    Family: uint32
    ArchRev: uint32
    VendorString: array[16, int8]

  DEBUG_PROCESSOR_IDENTIFICATION_X86 {.bycopy.} = object
    Family: uint32
    Model: uint32
    Stepping: uint32
    VendorString: array[16, int8]

  DEBUG_PROCESSOR_IDENTIFICATION_ARM {.bycopy.} = object
    Model: uint32
    Revision: uint32
    VendorString: array[16, int8]

  DEBUG_PROCESSOR_IDENTIFICATION_ARM64 {.bycopy.} = object
    Model: uint32
    Revision: uint32
    VendorString: array[16, int8]

  DEBUG_PROCESSOR_IDENTIFICATION_ALL {.bycopy.} = object
    Alpha: DEBUG_PROCESSOR_IDENTIFICATION_ALPHA
    Amd64: DEBUG_PROCESSOR_IDENTIFICATION_AMD64
    Ia64: DEBUG_PROCESSOR_IDENTIFICATION_IA64
    X86: DEBUG_PROCESSOR_IDENTIFICATION_X86
    Arm: DEBUG_PROCESSOR_IDENTIFICATION_ARM
    Arm64: DEBUG_PROCESSOR_IDENTIFICATION_ARM64

  CPU_INFO_v1 {.bycopy.} = object
    Type: uint32
    NumCPUs: uint32
    CurrentProc: uint32
    ProcInfo: array[32, DEBUG_PROCESSOR_IDENTIFICATION_ALL]
    Mhz: uint32

  TARGET_DEBUG_INFO_v1 {.bycopy.} = object
    SizeOfStruct: uint32
    Id: uint64
    Source: uint64
    EntryDate: uint64
    SysUpTime: uint64
    AppUpTime: uint64
    CrashTime: uint64
    Mode: uint64
    OsInfo: OS_INFO_v1
    Cpu: CPU_INFO_v1
    DumpFile: array[260, int8]
    FailureData: pointer
    StackTr: array[4096, int8]
struct OS_INFO_v1
{
    int Type;
    _Anonymous_e__Union Anonymous;
    uint ProductType;
    uint Suite;
    _s_e__Struct s;
    uint SrvPackNumber;
    byte[30] Language;
    byte[64] OsString;
    byte[64] ServicePackString;
}

struct DEBUG_PROCESSOR_IDENTIFICATION_ALPHA
{
    uint Type;
    uint Revision;
}

struct DEBUG_PROCESSOR_IDENTIFICATION_AMD64
{
    uint Family;
    uint Model;
    uint Stepping;
    byte[16] VendorString;
}

struct DEBUG_PROCESSOR_IDENTIFICATION_IA64
{
    uint Model;
    uint Revision;
    uint Family;
    uint ArchRev;
    byte[16] VendorString;
}

struct DEBUG_PROCESSOR_IDENTIFICATION_X86
{
    uint Family;
    uint Model;
    uint Stepping;
    byte[16] VendorString;
}

struct DEBUG_PROCESSOR_IDENTIFICATION_ARM
{
    uint Model;
    uint Revision;
    byte[16] VendorString;
}

struct DEBUG_PROCESSOR_IDENTIFICATION_ARM64
{
    uint Model;
    uint Revision;
    byte[16] VendorString;
}

struct DEBUG_PROCESSOR_IDENTIFICATION_ALL
{
    DEBUG_PROCESSOR_IDENTIFICATION_ALPHA Alpha;
    DEBUG_PROCESSOR_IDENTIFICATION_AMD64 Amd64;
    DEBUG_PROCESSOR_IDENTIFICATION_IA64 Ia64;
    DEBUG_PROCESSOR_IDENTIFICATION_X86 X86;
    DEBUG_PROCESSOR_IDENTIFICATION_ARM Arm;
    DEBUG_PROCESSOR_IDENTIFICATION_ARM64 Arm64;
}

struct CPU_INFO_v1
{
    uint Type;
    uint NumCPUs;
    uint CurrentProc;
    DEBUG_PROCESSOR_IDENTIFICATION_ALL[32] ProcInfo;
    uint Mhz;
}

struct TARGET_DEBUG_INFO_v1
{
    uint SizeOfStruct;
    ulong Id;
    ulong Source;
    ulong EntryDate;
    ulong SysUpTime;
    ulong AppUpTime;
    ulong CrashTime;
    ulong Mode;
    OS_INFO_v1 OsInfo;
    CPU_INFO_v1 Cpu;
    byte[260] DumpFile;
    void* FailureData;
    byte[4096] StackTr;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; TARGET_DEBUG_INFO_v1 サイズ: 5656 バイト(x86)
dim st, 1414    ; 4byte整数×1414(構造体サイズ 5656 / 4 切り上げ)
; SizeOfStruct : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; Id : ULONGLONG (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; Source : ULONGLONG (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; EntryDate : ULONGLONG (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; SysUpTime : ULONGLONG (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; AppUpTime : ULONGLONG (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; CrashTime : ULONGLONG (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; Mode : ULONGLONG (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; OsInfo : OS_INFO_v1 (+64, 192byte)  varptr(st)+64 を基点に操作(192byte:入れ子/配列)
; Cpu : CPU_INFO_v1 (+256, 1040byte)  varptr(st)+256 を基点に操作(1040byte:入れ子/配列)
; DumpFile : CHAR (+1296, 260byte)  varptr(st)+1296 を基点に操作(260byte:入れ子/配列)
; FailureData : void* (+1556, 4byte)  st.389 = 値  /  値 = st.389   (lpoke/lpeek も可)
; StackTr : CHAR (+1560, 4096byte)  varptr(st)+1560 を基点に操作(4096byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; TARGET_DEBUG_INFO_v1 サイズ: 5664 バイト(x64)
dim st, 1416    ; 4byte整数×1416(構造体サイズ 5664 / 4 切り上げ)
; SizeOfStruct : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; Id : ULONGLONG (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; Source : ULONGLONG (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; EntryDate : ULONGLONG (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; SysUpTime : ULONGLONG (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; AppUpTime : ULONGLONG (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; CrashTime : ULONGLONG (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; Mode : ULONGLONG (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; OsInfo : OS_INFO_v1 (+64, 192byte)  varptr(st)+64 を基点に操作(192byte:入れ子/配列)
; Cpu : CPU_INFO_v1 (+256, 1040byte)  varptr(st)+256 を基点に操作(1040byte:入れ子/配列)
; DumpFile : CHAR (+1296, 260byte)  varptr(st)+1296 を基点に操作(260byte:入れ子/配列)
; FailureData : void* (+1560, 8byte)  qpoke st,1560,値 / qpeek(st,1560)  ※IronHSPのみ。3.7/3.8は lpoke st,1560,下位 : lpoke st,1564,上位
; StackTr : CHAR (+1568, 4096byte)  varptr(st)+1568 を基点に操作(4096byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global OS_INFO_v1
    #field int Type
    #field byte Anonymous 8
    #field int ProductType
    #field int Suite
    #field _s_e__Struct s
    #field int SrvPackNumber
    #field byte Language 30
    #field byte OsString 64
    #field byte ServicePackString 64
#endstruct

#defstruct global CPU_INFO_v1
    #field int Type
    #field int NumCPUs
    #field int CurrentProc
    #field byte ProcInfo 1024
    #field int Mhz
#endstruct

#defstruct global TARGET_DEBUG_INFO_v1
    #field int SizeOfStruct
    #field int64 Id
    #field int64 Source
    #field int64 EntryDate
    #field int64 SysUpTime
    #field int64 AppUpTime
    #field int64 CrashTime
    #field int64 Mode
    #field OS_INFO_v1 OsInfo
    #field CPU_INFO_v1 Cpu
    #field byte DumpFile 260
    #field intptr FailureData
    #field byte StackTr 4096
#endstruct

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