ホーム › System.Diagnostics.Debug.Extensions › TARGET_DEBUG_INFO_v1
TARGET_DEBUG_INFO_v1
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| SizeOfStruct | DWORD | 4 | +0 | +0 | この構造体のバイトサイズ。 |
| Id | ULONGLONG | 8 | +8 | +8 | 対象を一意に識別するID(64ビット)。 |
| Source | ULONGLONG | 8 | +16 | +16 | 情報の出所を示す64ビット値。 |
| EntryDate | ULONGLONG | 8 | +24 | +24 | 解析開始日時(64ビット時刻)。 |
| SysUpTime | ULONGLONG | 8 | +32 | +32 | システム稼働時間。 |
| AppUpTime | ULONGLONG | 8 | +40 | +40 | アプリケーション稼働時間。 |
| CrashTime | ULONGLONG | 8 | +48 | +48 | クラッシュ発生時刻。 |
| Mode | ULONGLONG | 8 | +56 | +56 | 解析モードを示す値。 |
| OsInfo | OS_INFO_v1 | 192 | +64 | +64 | 対象OS情報を格納するOS_INFO_v1構造体。 |
| Cpu | CPU_INFO_v1 | 1040 | +256 | +256 | 対象CPU情報を格納するCPU_INFO_v1構造体。 |
| DumpFile | CHAR | 260 | +1296 | +1296 | ダンプファイルパスのNULL終端文字列。 |
| FailureData | void* | 8/4 | +1560 | +1556 | 障害データへのポインタ。NULL可。 |
| StackTr | CHAR | 4096 | +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 Structureimport 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