|
|
1.1 root 1: /*++
2:
3: Copyright (c) 1993 Microsoft Corporation
4:
5: Module Name:
6:
7: drwatson.h
8:
9: Abstract:
10:
11: Common header file for drwatson data structures.
12:
13: Author:
14:
15: Wesley Witt (wesw) 1-May-1993
16:
17: Environment:
18:
19: User Mode
20:
21: --*/
22:
23: typedef struct _RUNTIME_FUNCTION {
24: ULONG BeginAddress;
25: ULONG EndAddress;
26: PVOID ExceptionHandler;
27: PVOID HandlerData;
28: ULONG PrologEndAddress;
29: } RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;
30:
31: typedef struct _tagOPTIONS {
32: char szLogPath[MAX_PATH];
33: char szWaveFile[MAX_PATH];
34: BOOL fDumpSymbols;
35: BOOL fDumpAllThreads;
36: BOOL fAppendToLogFile;
37: BOOL fVisual;
38: BOOL fSound;
39: DWORD dwInstructions;
40: DWORD dwMaxCrashes;
41: } OPTIONS, *POPTIONS;
42:
43: typedef struct _tagCRASHES {
44: char szAppName[256];
45: char szFunction[256];
46: SYSTEMTIME time;
47: DWORD dwExceptionCode;
48: DWORD dwAddress;
49: } CRASHES, *PCRASHES;
50:
51: typedef struct _tagCRASHINFO {
52: HWND hList;
53: CRASHES crash;
54: HDC hdc;
55: DWORD cxExtent;
56: DWORD dwIndex;
57: DWORD dwIndexDesired;
58: char *pCrashData;
59: DWORD dwCrashDataSize;
60: } CRASHINFO, *PCRASHINFO;
61:
62: typedef struct _tagSYMBOL {
63: struct _tagSYMBOL *next;
64: DWORD addr;
65: DWORD size;
66: unsigned char szName[1];
67: } SYMBOL, *PSYMBOL;
68:
69: typedef struct _tagMODULEINFO {
70: struct _tagMODULEINFO *next; // pointer to next module
71: DWORD dwBaseOfImage; // based address
72: DWORD dwLoadAddress; // actual load address
73: DWORD dwImageSize; // size of image in bytes
74: PFPO_DATA pFpoData; // pointer to fpo data (x86)
75: PRUNTIME_FUNCTION pExceptionData; // pointer to pdata (risc)
76: DWORD dwEntries; // number of fpo or pdata recs
77: PSYMBOL *symbolTable; // pointer to symbol table
78: DWORD numsyms; // number of symbols in table
79: char szName[1024]; // module name
80: } MODULEINFO, *PMODULEINFO;
81:
82: typedef struct _tagSTACKWALK {
83: DWORD pc;
84: DWORD frame;
85: long ul;
86: DWORD params[4];
87: PFPO_DATA pFpoData;
88: } STACKWALK, *PSTACKWALK;
89:
90: typedef struct _tagTHREADCONTEXT {
91: struct _tagTHREADCONTEXT *next;
92: HANDLE hThread;
93: DWORD dwThreadId;
94: DWORD pc;
95: DWORD frame;
96: DWORD stack;
97: CONTEXT context;
98: PMODULEINFO mi; // valid to be NULL
99: DWORD stackBase;
100: DWORD stackRA;
101: BOOL fFaultingContext;
102: } THREADCONTEXT, *PTHREADCONTEXT;
103:
104: typedef struct _tagDEBUGPACKET {
105: HWND hwnd;
106: HANDLE hEvent;
107: OPTIONS options;
108: DWORD dwPidToDebug;
109: HANDLE hEventToSignal;
110: HANDLE hProcess;
111: DWORD dwProcessId;
112: PMODULEINFO miHead;
113: PMODULEINFO miTail;
114: PTHREADCONTEXT tctxHead;
115: PTHREADCONTEXT tctxTail;
116: PTHREADCONTEXT tctx;
117: DWORD stackBase;
118: DWORD stackRA;
119: } DEBUGPACKET, *PDEBUGPACKET;
120:
121: typedef BOOL (CALLBACK* CRASHESENUMPROC)(PCRASHINFO);
122:
123: #if DBG
124: #define Assert(exp) if(!(exp)) {AssertError(#exp,__FILE__,__LINE__);}
125: #else
126: #define Assert(exp)
127: #endif
128:
129: #define WM_DUMPCOMPLETE WM_USER+500
130: #define WM_EXCEPTIONINFO WM_USER+501
131: #define WM_ATTACHCOMPLETE WM_USER+502
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.