CRASH.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:4k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /*++
  2. Copyright (c) 1993-1997  Microsoft Corporation
  3. Module Name:
  4.     crash.h
  5. Abstract:
  6.     This module implements support for handling crash dump files.
  7.     *** Use this file when linking againts crashxxx.lib
  8. Revision History:
  9. --*/
  10. #ifndef _CRASHLIB_
  11. #define _CRASHLIB_
  12. #ifdef __cplusplus
  13. #pragma warning(disable:4200)
  14. extern "C" {
  15. #endif
  16. typedef struct _USERMODE_CRASHDUMP_HEADER {
  17.     DWORD       Signature;
  18.     DWORD       ValidDump;
  19.     DWORD       MajorVersion;
  20.     DWORD       MinorVersion;
  21.     DWORD       MachineImageType;
  22.     DWORD       ThreadCount;
  23.     DWORD       ModuleCount;
  24.     DWORD       MemoryRegionCount;
  25.     DWORD       ThreadOffset;
  26.     DWORD       ModuleOffset;
  27.     DWORD       DataOffset;
  28.     DWORD       MemoryRegionOffset;
  29.     DWORD       DebugEventOffset;
  30.     DWORD       ThreadStateOffset;
  31.     DWORD       Spare0;
  32.     DWORD       Spare1;
  33. } USERMODE_CRASHDUMP_HEADER, *PUSERMODE_CRASHDUMP_HEADER;
  34. typedef struct _CRASH_MODULE {
  35.     DWORD       BaseOfImage;
  36.     DWORD       SizeOfImage;
  37.     DWORD       ImageNameLength;
  38.     CHAR        ImageName[0];
  39. } CRASH_MODULE, *PCRASH_MODULE;
  40. typedef struct _CRASH_THREAD {
  41.     DWORD       ThreadId;
  42.     DWORD       SuspendCount;
  43.     DWORD       PriorityClass;
  44.     DWORD       Priority;
  45.     DWORD       Teb;
  46.     DWORD       Spare0;
  47.     DWORD       Spare1;
  48.     DWORD       Spare2;
  49.     DWORD       Spare3;
  50.     DWORD       Spare4;
  51.     DWORD       Spare5;
  52.     DWORD       Spare6;
  53. } CRASH_THREAD, *PCRASH_THREAD;
  54. //
  55. // usermode crash dump data types
  56. //
  57. #define DMP_EXCEPTION                 1 // obsolete
  58. #define DMP_MEMORY_BASIC_INFORMATION  2
  59. #define DMP_THREAD_CONTEXT            3
  60. #define DMP_MODULE                    4
  61. #define DMP_MEMORY_DATA               5
  62. #define DMP_DEBUG_EVENT               6
  63. #define DMP_THREAD_STATE              7
  64. //
  65. // usermode crashdump callback function
  66. //
  67. typedef BOOL  (*PDMP_CREATE_DUMP_CALLBACK)(
  68.     DWORD       DataType,
  69.     PVOID*      DumpData,
  70.     LPDWORD     DumpDataLength,
  71.     PVOID       UserData
  72.     );
  73. BOOL
  74. DmpCreateUserDump(
  75.     IN LPSTR                       CrashDumpName,
  76.     IN PDMP_CREATE_DUMP_CALLBACK   DmpCallback,
  77.     IN PVOID                       lpv
  78.     );
  79. BOOL
  80. DmpInitialize (
  81.     IN  LPSTR               FileName,
  82.     OUT PCONTEXT            *Context,
  83.     OUT PEXCEPTION_RECORD   *Exception,
  84.     OUT PVOID               *DmpHeader
  85.     );
  86. VOID
  87. DmpUnInitialize (
  88.     VOID
  89.     );
  90. DWORD
  91. DmpReadMemory (
  92.     IN PVOID BaseAddress,
  93.     IN PVOID Buffer,
  94.     IN ULONG Size
  95.     );
  96. DWORD
  97. DmpWriteMemory (
  98.     IN PVOID BaseAddress,
  99.     IN PVOID Buffer,
  100.     IN ULONG Size
  101.     );
  102. PVOID
  103. VaToLocation (
  104.     IN PVOID VirtualAddress
  105.     );
  106. PVOID
  107. PhysicalToLocation (
  108.     IN PVOID PhysicalAddress
  109.     );
  110. PVOID
  111. PageToLocation (
  112.     IN ULONG Page
  113.     );
  114. ULONG
  115. GetPhysicalPage (
  116.     IN PVOID PhysicalAddress
  117.     );
  118. BOOL
  119. MapDumpFile(
  120.     IN  LPSTR  FileName
  121.     );
  122. ULONG
  123. PteToPfn (
  124.     IN ULONG Pte
  125.     );
  126. ULONG
  127. GetPhysicalPage (
  128.     IN PVOID PhysicalAddress
  129.     );
  130. DWORD
  131. DmpReadPhysicalMemory (
  132.     IN PVOID BaseAddress,
  133.     IN PVOID Buffer,
  134.     IN ULONG Size
  135.     );
  136. DWORD
  137. DmpWritePhysicalMemory (
  138.     IN PVOID BaseAddress,
  139.     IN PVOID Buffer,
  140.     IN ULONG Size
  141.     );
  142. BOOL
  143. DmpReadControlSpace(
  144.     IN USHORT   Processor,
  145.     IN PVOID    TargetBaseAddress,
  146.     OUT PVOID   UserInterfaceBuffer,
  147.     OUT ULONG   TransferCount,
  148.     OUT PULONG  ActualBytesRead
  149.     );
  150. BOOL
  151. DmpGetContext(
  152.     IN  ULONG     Processor,
  153.     OUT PVOID     Context
  154.     );
  155. INT
  156. DmpGetCurrentProcessor(
  157.     VOID
  158.     );
  159. BOOL
  160. DmpGetThread(
  161.     IN  ULONG           Processor,
  162.     OUT PCRASH_THREAD   Thread
  163.     );
  164. #ifdef __cplusplus
  165. }
  166. #pragma warning(default:4200)
  167. #endif
  168. #endif