home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / sdktools / image / include / crash.h next >
Encoding:
C/C++ Source or Header  |  1997-10-05  |  3.8 KB  |  207 lines

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