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 + -
显示快捷键?