ホーム › System.ErrorReporting › WER_DUMP_CUSTOM_OPTIONS_V3
WER_DUMP_CUSTOM_OPTIONS_V3
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwSize | DWORD | 4 | +0 | +0 | 本構造体のバイトサイズ。使用前に設定が必要。 |
| dwMask | DWORD | 4 | +4 | +4 | 有効なオプションフィールドを示すビットマスク。 |
| dwDumpFlags | DWORD | 4 | +8 | +8 | ミニダンプの種類フラグ(MINIDUMP_TYPE相当)。 |
| bOnlyThisThread | BOOL | 4 | +12 | +12 | TRUEで例外スレッドのみをダンプする。 |
| dwExceptionThreadFlags | DWORD | 4 | +16 | +16 | 例外スレッドに適用するダンプフラグ。 |
| dwOtherThreadFlags | DWORD | 4 | +20 | +20 | 他スレッドに適用するダンプフラグ。 |
| dwExceptionThreadExFlags | DWORD | 4 | +24 | +24 | 例外スレッドの拡張ダンプフラグ。 |
| dwOtherThreadExFlags | DWORD | 4 | +28 | +28 | 他スレッドの拡張ダンプフラグ。 |
| dwPreferredModuleFlags | DWORD | 4 | +32 | +32 | 優先モジュールに適用するダンプフラグ。 |
| dwOtherModuleFlags | DWORD | 4 | +36 | +36 | 他モジュールに適用するダンプフラグ。 |
| wzPreferredModuleList | WCHAR | 512 | +40 | +40 | 優先的にダンプするモジュール名のリスト(ワイド文字列)。 |
| dwPreferredModuleResetFlags | DWORD | 4 | +552 | +552 | 優先モジュールからリセットするフラグ。 |
| dwOtherModuleResetFlags | DWORD | 4 | +556 | +556 | 他モジュールからリセットするフラグ。 |
| pvDumpKey | void* | 8/4 | +560 | +560 | ダンプを識別するための任意のキーへのポインタ。NULL可。 |
| hSnapshot | HANDLE | 8/4 | +568 | +564 | プロセススナップショットのハンドル。NULL可。 |
| dwThreadID | DWORD | 4 | +576 | +568 | ダンプ対象とするスレッドのID。0で全スレッド。 |
各言語での定義
#include <windows.h>
// WER_DUMP_CUSTOM_OPTIONS_V3 (x64 584 / x86 572 バイト)
typedef struct WER_DUMP_CUSTOM_OPTIONS_V3 {
DWORD dwSize;
DWORD dwMask;
DWORD dwDumpFlags;
BOOL bOnlyThisThread;
DWORD dwExceptionThreadFlags;
DWORD dwOtherThreadFlags;
DWORD dwExceptionThreadExFlags;
DWORD dwOtherThreadExFlags;
DWORD dwPreferredModuleFlags;
DWORD dwOtherModuleFlags;
WCHAR wzPreferredModuleList[256];
DWORD dwPreferredModuleResetFlags;
DWORD dwOtherModuleResetFlags;
void* pvDumpKey;
HANDLE hSnapshot;
DWORD dwThreadID;
} WER_DUMP_CUSTOM_OPTIONS_V3;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WER_DUMP_CUSTOM_OPTIONS_V3
{
public uint dwSize;
public uint dwMask;
public uint dwDumpFlags;
[MarshalAs(UnmanagedType.Bool)] public bool bOnlyThisThread;
public uint dwExceptionThreadFlags;
public uint dwOtherThreadFlags;
public uint dwExceptionThreadExFlags;
public uint dwOtherThreadExFlags;
public uint dwPreferredModuleFlags;
public uint dwOtherModuleFlags;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string wzPreferredModuleList;
public uint dwPreferredModuleResetFlags;
public uint dwOtherModuleResetFlags;
public IntPtr pvDumpKey;
public IntPtr hSnapshot;
public uint dwThreadID;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WER_DUMP_CUSTOM_OPTIONS_V3
Public dwSize As UInteger
Public dwMask As UInteger
Public dwDumpFlags As UInteger
<MarshalAs(UnmanagedType.Bool)> Public bOnlyThisThread As Boolean
Public dwExceptionThreadFlags As UInteger
Public dwOtherThreadFlags As UInteger
Public dwExceptionThreadExFlags As UInteger
Public dwOtherThreadExFlags As UInteger
Public dwPreferredModuleFlags As UInteger
Public dwOtherModuleFlags As UInteger
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> Public wzPreferredModuleList As String
Public dwPreferredModuleResetFlags As UInteger
Public dwOtherModuleResetFlags As UInteger
Public pvDumpKey As IntPtr
Public hSnapshot As IntPtr
Public dwThreadID As UInteger
End Structureimport ctypes
from ctypes import wintypes
class WER_DUMP_CUSTOM_OPTIONS_V3(ctypes.Structure):
_fields_ = [
("dwSize", wintypes.DWORD),
("dwMask", wintypes.DWORD),
("dwDumpFlags", wintypes.DWORD),
("bOnlyThisThread", wintypes.BOOL),
("dwExceptionThreadFlags", wintypes.DWORD),
("dwOtherThreadFlags", wintypes.DWORD),
("dwExceptionThreadExFlags", wintypes.DWORD),
("dwOtherThreadExFlags", wintypes.DWORD),
("dwPreferredModuleFlags", wintypes.DWORD),
("dwOtherModuleFlags", wintypes.DWORD),
("wzPreferredModuleList", ctypes.c_wchar * 256),
("dwPreferredModuleResetFlags", wintypes.DWORD),
("dwOtherModuleResetFlags", wintypes.DWORD),
("pvDumpKey", ctypes.c_void_p),
("hSnapshot", ctypes.c_void_p),
("dwThreadID", wintypes.DWORD),
]#[repr(C)]
pub struct WER_DUMP_CUSTOM_OPTIONS_V3 {
pub dwSize: u32,
pub dwMask: u32,
pub dwDumpFlags: u32,
pub bOnlyThisThread: i32,
pub dwExceptionThreadFlags: u32,
pub dwOtherThreadFlags: u32,
pub dwExceptionThreadExFlags: u32,
pub dwOtherThreadExFlags: u32,
pub dwPreferredModuleFlags: u32,
pub dwOtherModuleFlags: u32,
pub wzPreferredModuleList: [u16; 256],
pub dwPreferredModuleResetFlags: u32,
pub dwOtherModuleResetFlags: u32,
pub pvDumpKey: *mut core::ffi::c_void,
pub hSnapshot: *mut core::ffi::c_void,
pub dwThreadID: u32,
}import "golang.org/x/sys/windows"
type WER_DUMP_CUSTOM_OPTIONS_V3 struct {
dwSize uint32
dwMask uint32
dwDumpFlags uint32
bOnlyThisThread int32
dwExceptionThreadFlags uint32
dwOtherThreadFlags uint32
dwExceptionThreadExFlags uint32
dwOtherThreadExFlags uint32
dwPreferredModuleFlags uint32
dwOtherModuleFlags uint32
wzPreferredModuleList [256]uint16
dwPreferredModuleResetFlags uint32
dwOtherModuleResetFlags uint32
pvDumpKey uintptr
hSnapshot uintptr
dwThreadID uint32
}type
WER_DUMP_CUSTOM_OPTIONS_V3 = record
dwSize: DWORD;
dwMask: DWORD;
dwDumpFlags: DWORD;
bOnlyThisThread: BOOL;
dwExceptionThreadFlags: DWORD;
dwOtherThreadFlags: DWORD;
dwExceptionThreadExFlags: DWORD;
dwOtherThreadExFlags: DWORD;
dwPreferredModuleFlags: DWORD;
dwOtherModuleFlags: DWORD;
wzPreferredModuleList: array[0..255] of WideChar;
dwPreferredModuleResetFlags: DWORD;
dwOtherModuleResetFlags: DWORD;
pvDumpKey: Pointer;
hSnapshot: Pointer;
dwThreadID: DWORD;
end;const WER_DUMP_CUSTOM_OPTIONS_V3 = extern struct {
dwSize: u32,
dwMask: u32,
dwDumpFlags: u32,
bOnlyThisThread: i32,
dwExceptionThreadFlags: u32,
dwOtherThreadFlags: u32,
dwExceptionThreadExFlags: u32,
dwOtherThreadExFlags: u32,
dwPreferredModuleFlags: u32,
dwOtherModuleFlags: u32,
wzPreferredModuleList: [256]u16,
dwPreferredModuleResetFlags: u32,
dwOtherModuleResetFlags: u32,
pvDumpKey: ?*anyopaque,
hSnapshot: ?*anyopaque,
dwThreadID: u32,
};type
WER_DUMP_CUSTOM_OPTIONS_V3 {.bycopy.} = object
dwSize: uint32
dwMask: uint32
dwDumpFlags: uint32
bOnlyThisThread: int32
dwExceptionThreadFlags: uint32
dwOtherThreadFlags: uint32
dwExceptionThreadExFlags: uint32
dwOtherThreadExFlags: uint32
dwPreferredModuleFlags: uint32
dwOtherModuleFlags: uint32
wzPreferredModuleList: array[256, uint16]
dwPreferredModuleResetFlags: uint32
dwOtherModuleResetFlags: uint32
pvDumpKey: pointer
hSnapshot: pointer
dwThreadID: uint32struct WER_DUMP_CUSTOM_OPTIONS_V3
{
uint dwSize;
uint dwMask;
uint dwDumpFlags;
int bOnlyThisThread;
uint dwExceptionThreadFlags;
uint dwOtherThreadFlags;
uint dwExceptionThreadExFlags;
uint dwOtherThreadExFlags;
uint dwPreferredModuleFlags;
uint dwOtherModuleFlags;
wchar[256] wzPreferredModuleList;
uint dwPreferredModuleResetFlags;
uint dwOtherModuleResetFlags;
void* pvDumpKey;
void* hSnapshot;
uint dwThreadID;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; WER_DUMP_CUSTOM_OPTIONS_V3 サイズ: 572 バイト(x86)
dim st, 143 ; 4byte整数×143(構造体サイズ 572 / 4 切り上げ)
; dwSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; dwMask : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dwDumpFlags : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; bOnlyThisThread : BOOL (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwExceptionThreadFlags : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; dwOtherThreadFlags : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwExceptionThreadExFlags : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; dwOtherThreadExFlags : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; dwPreferredModuleFlags : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; dwOtherModuleFlags : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; wzPreferredModuleList : WCHAR (+40, 512byte) varptr(st)+40 を基点に操作(512byte:入れ子/配列)
; dwPreferredModuleResetFlags : DWORD (+552, 4byte) st.138 = 値 / 値 = st.138 (lpoke/lpeek も可)
; dwOtherModuleResetFlags : DWORD (+556, 4byte) st.139 = 値 / 値 = st.139 (lpoke/lpeek も可)
; pvDumpKey : void* (+560, 4byte) st.140 = 値 / 値 = st.140 (lpoke/lpeek も可)
; hSnapshot : HANDLE (+564, 4byte) st.141 = 値 / 値 = st.141 (lpoke/lpeek も可)
; dwThreadID : DWORD (+568, 4byte) st.142 = 値 / 値 = st.142 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; WER_DUMP_CUSTOM_OPTIONS_V3 サイズ: 584 バイト(x64)
dim st, 146 ; 4byte整数×146(構造体サイズ 584 / 4 切り上げ)
; dwSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; dwMask : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dwDumpFlags : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; bOnlyThisThread : BOOL (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwExceptionThreadFlags : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; dwOtherThreadFlags : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwExceptionThreadExFlags : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; dwOtherThreadExFlags : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; dwPreferredModuleFlags : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; dwOtherModuleFlags : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; wzPreferredModuleList : WCHAR (+40, 512byte) varptr(st)+40 を基点に操作(512byte:入れ子/配列)
; dwPreferredModuleResetFlags : DWORD (+552, 4byte) st.138 = 値 / 値 = st.138 (lpoke/lpeek も可)
; dwOtherModuleResetFlags : DWORD (+556, 4byte) st.139 = 値 / 値 = st.139 (lpoke/lpeek も可)
; pvDumpKey : void* (+560, 8byte) qpoke st,560,値 / qpeek(st,560) ※IronHSPのみ。3.7/3.8は lpoke st,560,下位 : lpoke st,564,上位
; hSnapshot : HANDLE (+568, 8byte) qpoke st,568,値 / qpeek(st,568) ※IronHSPのみ。3.7/3.8は lpoke st,568,下位 : lpoke st,572,上位
; dwThreadID : DWORD (+576, 4byte) st.144 = 値 / 値 = st.144 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global WER_DUMP_CUSTOM_OPTIONS_V3
#field int dwSize
#field int dwMask
#field int dwDumpFlags
#field bool bOnlyThisThread
#field int dwExceptionThreadFlags
#field int dwOtherThreadFlags
#field int dwExceptionThreadExFlags
#field int dwOtherThreadExFlags
#field int dwPreferredModuleFlags
#field int dwOtherModuleFlags
#field wchar wzPreferredModuleList 256
#field int dwPreferredModuleResetFlags
#field int dwOtherModuleResetFlags
#field intptr pvDumpKey
#field intptr hSnapshot
#field int dwThreadID
#endstruct
stdim st, WER_DUMP_CUSTOM_OPTIONS_V3 ; NSTRUCT 変数を確保
st->dwSize = 100
mes "dwSize=" + st->dwSize