Win32 API 日本語リファレンス
ホームSystem.ErrorReporting › WER_DUMP_CUSTOM_OPTIONS_V3

WER_DUMP_CUSTOM_OPTIONS_V3

構造体
サイズx64: 584 バイト / x86: 572 バイト

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

フィールド

フィールドサイズx64x86説明
dwSizeDWORD4+0+0本構造体のバイトサイズ。使用前に設定が必要。
dwMaskDWORD4+4+4有効なオプションフィールドを示すビットマスク。
dwDumpFlagsDWORD4+8+8ミニダンプの種類フラグ(MINIDUMP_TYPE相当)。
bOnlyThisThreadBOOL4+12+12TRUEで例外スレッドのみをダンプする。
dwExceptionThreadFlagsDWORD4+16+16例外スレッドに適用するダンプフラグ。
dwOtherThreadFlagsDWORD4+20+20他スレッドに適用するダンプフラグ。
dwExceptionThreadExFlagsDWORD4+24+24例外スレッドの拡張ダンプフラグ。
dwOtherThreadExFlagsDWORD4+28+28他スレッドの拡張ダンプフラグ。
dwPreferredModuleFlagsDWORD4+32+32優先モジュールに適用するダンプフラグ。
dwOtherModuleFlagsDWORD4+36+36他モジュールに適用するダンプフラグ。
wzPreferredModuleListWCHAR512+40+40優先的にダンプするモジュール名のリスト(ワイド文字列)。
dwPreferredModuleResetFlagsDWORD4+552+552優先モジュールからリセットするフラグ。
dwOtherModuleResetFlagsDWORD4+556+556他モジュールからリセットするフラグ。
pvDumpKeyvoid*8/4+560+560ダンプを識別するための任意のキーへのポインタ。NULL可。
hSnapshotHANDLE8/4+568+564プロセススナップショットのハンドル。NULL可。
dwThreadIDDWORD4+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 Structure
import 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: uint32
struct 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