minidump_format.h.svn-base
来自「SumatraPDF是一款小型开源的pdf阅读工具。虽然玲珑小巧(只有800多K」· SVN-BASE 代码 · 共 1,125 行 · 第 1/4 页
SVN-BASE
1,125 行
MDVectorSaveAreaPPC vector_save;} MDRawContextPPC; /* Based on ppc_thread_state *//* For (MDRawContextPPC).context_flags. These values indicate the type of * context stored in the structure. MD_CONTEXT_PPC is Breakpad-defined. Its * value was chosen to avoid likely conflicts with MD_CONTEXT_* for other * CPUs. */#define MD_CONTEXT_PPC 0x20000000#define MD_CONTEXT_PPC_BASE (MD_CONTEXT_PPC | 0x00000001)#define MD_CONTEXT_PPC_FLOATING_POINT (MD_CONTEXT_PPC | 0x00000008)#define MD_CONTEXT_PPC_VECTOR (MD_CONTEXT_PPC | 0x00000020)#define MD_CONTEXT_PPC_FULL MD_CONTEXT_PPC_BASE#define MD_CONTEXT_PPC_ALL (MD_CONTEXT_PPC_FULL | \ MD_CONTEXT_PPC_FLOATING_POINT | \ MD_CONTEXT_PPC_VECTOR)/* * WinVer.h */typedef struct { u_int32_t signature; u_int32_t struct_version; u_int32_t file_version_hi; u_int32_t file_version_lo; u_int32_t product_version_hi; u_int32_t product_version_lo; u_int32_t file_flags_mask; /* Identifies valid bits in fileFlags */ u_int32_t file_flags; u_int32_t file_os; u_int32_t file_type; u_int32_t file_subtype; u_int32_t file_date_hi; u_int32_t file_date_lo;} MDVSFixedFileInfo; /* VS_FIXEDFILEINFO *//* For (MDVSFixedFileInfo).signature */#define MD_VSFIXEDFILEINFO_SIGNATURE 0xfeef04bd /* VS_FFI_SIGNATURE *//* For (MDVSFixedFileInfo).version */#define MD_VSFIXEDFILEINFO_VERSION 0x00010000 /* VS_FFI_STRUCVERSION *//* For (MDVSFixedFileInfo).file_flags_mask and * (MDVSFixedFileInfo).file_flags */#define MD_VSFIXEDFILEINFO_FILE_FLAGS_DEBUG 0x00000001 /* VS_FF_DEBUG */#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PRERELEASE 0x00000002 /* VS_FF_PRERELEASE */#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PATCHED 0x00000004 /* VS_FF_PATCHED */#define MD_VSFIXEDFILEINFO_FILE_FLAGS_PRIVATEBUILD 0x00000008 /* VS_FF_PRIVATEBUILD */#define MD_VSFIXEDFILEINFO_FILE_FLAGS_INFOINFERRED 0x00000010 /* VS_FF_INFOINFERRED */#define MD_VSFIXEDFILEINFO_FILE_FLAGS_SPECIALBUILD 0x00000020 /* VS_FF_SPECIALBUILD *//* For (MDVSFixedFileInfo).file_os: high 16 bits */#define MD_VSFIXEDFILEINFO_FILE_OS_UNKNOWN 0 /* VOS_UNKNOWN */#define MD_VSFIXEDFILEINFO_FILE_OS_DOS (1 << 16) /* VOS_DOS */#define MD_VSFIXEDFILEINFO_FILE_OS_OS216 (2 << 16) /* VOS_OS216 */#define MD_VSFIXEDFILEINFO_FILE_OS_OS232 (3 << 16) /* VOS_OS232 */#define MD_VSFIXEDFILEINFO_FILE_OS_NT (4 << 16) /* VOS_NT */#define MD_VSFIXEDFILEINFO_FILE_OS_WINCE (5 << 16) /* VOS_WINCE *//* Low 16 bits */#define MD_VSFIXEDFILEINFO_FILE_OS__BASE 0 /* VOS__BASE */#define MD_VSFIXEDFILEINFO_FILE_OS__WINDOWS16 1 /* VOS__WINDOWS16 */#define MD_VSFIXEDFILEINFO_FILE_OS__PM16 2 /* VOS__PM16 */#define MD_VSFIXEDFILEINFO_FILE_OS__PM32 3 /* VOS__PM32 */#define MD_VSFIXEDFILEINFO_FILE_OS__WINDOWS32 4 /* VOS__WINDOWS32 *//* For (MDVSFixedFileInfo).file_type */#define MD_VSFIXEDFILEINFO_FILE_TYPE_UNKNOWN 0 /* VFT_UNKNOWN */#define MD_VSFIXEDFILEINFO_FILE_TYPE_APP 1 /* VFT_APP */#define MD_VSFIXEDFILEINFO_FILE_TYPE_DLL 2 /* VFT_DLL */#define MD_VSFIXEDFILEINFO_FILE_TYPE_DRV 3 /* VFT_DLL */#define MD_VSFIXEDFILEINFO_FILE_TYPE_FONT 4 /* VFT_FONT */#define MD_VSFIXEDFILEINFO_FILE_TYPE_VXD 5 /* VFT_VXD */#define MD_VSFIXEDFILEINFO_FILE_TYPE_STATIC_LIB 7 /* VFT_STATIC_LIB *//* For (MDVSFixedFileInfo).file_subtype */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_UNKNOWN 0 /* VFT2_UNKNOWN *//* with file_type = MD_VSFIXEDFILEINFO_FILETYPE_DRV */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_PRINTER 1 /* VFT2_DRV_PRINTER */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_KEYBOARD 2 /* VFT2_DRV_KEYBOARD */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_LANGUAGE 3 /* VFT2_DRV_LANGUAGE */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_DISPLAY 4 /* VFT2_DRV_DISPLAY */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_MOUSE 5 /* VFT2_DRV_MOUSE */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_NETWORK 6 /* VFT2_DRV_NETWORK */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_SYSTEM 7 /* VFT2_DRV_SYSTEM */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_INSTALLABLE 8 /* VFT2_DRV_INSTALLABLE */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_SOUND 9 /* VFT2_DRV_SOUND */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_COMM 10 /* VFT2_DRV_COMM */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_INPUTMETHOD 11 /* VFT2_DRV_INPUTMETHOD */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_DRV_VERSIONED_PRINTER 12 /* VFT2_DRV_VERSIONED_PRINTER *//* with file_type = MD_VSFIXEDFILEINFO_FILETYPE_FONT */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_RASTER 1 /* VFT2_FONT_RASTER */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_VECTOR 2 /* VFT2_FONT_VECTOR */#define MD_VSFIXEDFILEINFO_FILE_SUBTYPE_FONT_TRUETYPE 3 /* VFT2_FONT_TRUETYPE *//* * DbgHelp.h *//* An MDRVA is an offset into the minidump file. The beginning of the * MDRawHeader is at offset 0. */typedef u_int32_t MDRVA; /* RVA */typedef struct { u_int32_t data_size; MDRVA rva;} MDLocationDescriptor; /* MINIDUMP_LOCATION_DESCRIPTOR */typedef struct { /* The base address of the memory range on the host that produced the * minidump. */ u_int64_t start_of_memory_range; MDLocationDescriptor memory;} MDMemoryDescriptor; /* MINIDUMP_MEMORY_DESCRIPTOR */typedef struct { u_int32_t signature; u_int32_t version; u_int32_t stream_count; MDRVA stream_directory_rva; /* A |stream_count|-sized array of * MDRawDirectory structures. */ u_int32_t checksum; /* Can be 0. In fact, that's all that's * been found in minidump files. */ u_int32_t time_date_stamp; /* time_t */ u_int64_t flags;} MDRawHeader; /* MINIDUMP_HEADER *//* For (MDRawHeader).signature and (MDRawHeader).version. Note that only the * low 16 bits of (MDRawHeader).version are MD_HEADER_VERSION. Per the * documentation, the high 16 bits are implementation-specific. */#define MD_HEADER_SIGNATURE 0x504d444d /* 'PMDM' */ /* MINIDUMP_SIGNATURE */#define MD_HEADER_VERSION 0x0000a793 /* 42899 */ /* MINIDUMP_VERSION *//* For (MDRawHeader).flags: */typedef enum { /* MD_NORMAL is the standard type of minidump. It includes full * streams for the thread list, module list, exception, system info, * and miscellaneous info. A memory list stream is also present, * pointing to the same stack memory contained in the thread list, * as well as a 256-byte region around the instruction address that * was executing when the exception occurred. Stack memory is from * 4 bytes below a thread's stack pointer up to the top of the * memory region encompassing the stack. */ MD_NORMAL = 0x00000000, MD_WITH_DATA_SEGS = 0x00000001, MD_WITH_FULL_MEMORY = 0x00000002, MD_WITH_HANDLE_DATA = 0x00000004, MD_FILTER_MEMORY = 0x00000008, MD_SCAN_MEMORY = 0x00000010, MD_WITH_UNLOADED_MODULES = 0x00000020, MD_WITH_INDIRECTLY_REFERENCED_MEMORY = 0x00000040, MD_FILTER_MODULE_PATHS = 0x00000080, MD_WITH_PROCESS_THREAD_DATA = 0x00000100, MD_WITH_PRIVATE_READ_WRITE_MEMORY = 0x00000200, MD_WITHOUT_OPTIONAL_DATA = 0x00000400, MD_WITH_FULL_MEMORY_INFO = 0x00000800, MD_WITH_THREAD_INFO = 0x00001000, MD_WITH_CODE_SEGS = 0x00002000} MDType; /* MINIDUMP_TYPE */typedef struct { u_int32_t stream_type; MDLocationDescriptor location;} MDRawDirectory; /* MINIDUMP_DIRECTORY *//* For (MDRawDirectory).stream_type */typedef enum { MD_UNUSED_STREAM = 0, MD_RESERVED_STREAM_0 = 1, MD_RESERVED_STREAM_1 = 2, MD_THREAD_LIST_STREAM = 3, /* MDRawThreadList */ MD_MODULE_LIST_STREAM = 4, /* MDRawModuleList */ MD_MEMORY_LIST_STREAM = 5, /* MDRawMemoryList */ MD_EXCEPTION_STREAM = 6, /* MDRawExceptionStream */ MD_SYSTEM_INFO_STREAM = 7, /* MDRawSystemInfo */ MD_THREAD_EX_LIST_STREAM = 8, MD_MEMORY_64_LIST_STREAM = 9, MD_COMMENT_STREAM_A = 10, MD_COMMENT_STREAM_W = 11, MD_HANDLE_DATA_STREAM = 12, MD_FUNCTION_TABLE_STREAM = 13, MD_UNLOADED_MODULE_LIST_STREAM = 14, MD_MISC_INFO_STREAM = 15, /* MDRawMiscInfo */ MD_LAST_RESERVED_STREAM = 0x0000ffff, /* Breakpad extension types. 0x4767 = "Gg" */ MD_BREAKPAD_INFO_STREAM = 0x47670001, /* MDRawBreakpadInfo */ MD_ASSERTION_INFO_STREAM = 0x47670002 /* MDRawAssertionInfo */} MDStreamType; /* MINIDUMP_STREAM_TYPE */typedef struct { u_int32_t length; /* Length of buffer in bytes (not characters), * excluding 0-terminator */ u_int16_t buffer[1]; /* UTF-16-encoded, 0-terminated */} MDString; /* MINIDUMP_STRING */static const size_t MDString_minsize = offsetof(MDString, buffer[0]);typedef struct { u_int32_t thread_id; u_int32_t suspend_count; u_int32_t priority_class; u_int32_t priority; u_int64_t teb; /* Thread environment block */ MDMemoryDescriptor stack; MDLocationDescriptor thread_context; /* MDRawContext[CPU] */} MDRawThread; /* MINIDUMP_THREAD */typedef struct { u_int32_t number_of_threads; MDRawThread threads[1];} MDRawThreadList; /* MINIDUMP_THREAD_LIST */static const size_t MDRawThreadList_minsize = offsetof(MDRawThreadList, threads[0]);typedef struct { u_int64_t base_of_image; u_int32_t size_of_image; u_int32_t checksum; /* 0 if unknown */ u_int32_t time_date_stamp; /* time_t */ MDRVA module_name_rva; /* MDString, pathname or filename */ MDVSFixedFileInfo version_info; /* The next field stores a CodeView record and is populated when a module's * debug information resides in a PDB file. It identifies the PDB file. */ MDLocationDescriptor cv_record; /* The next field is populated when a module's debug information resides * in a DBG file. It identifies the DBG file. This field is effectively * obsolete with modules built by recent toolchains. */ MDLocationDescriptor misc_record; /* Alignment problem: reserved0 and reserved1 are defined by the platform * SDK as 64-bit quantities. However, that results in a structure whose * alignment is unpredictable on different CPUs and ABIs. If the ABI * specifies full alignment of 64-bit quantities in structures (as ppc * does), there will be padding between miscRecord and reserved0. If * 64-bit quantities can be aligned on 32-bit boundaries (as on x86), * this padding will not exist. (Note that the structure up to this point * contains 1 64-bit member followed by 21 32-bit members.) * As a workaround, reserved0 and reserved1 are instead defined here as * four 32-bit quantities. This should be harmless, as there are
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?