Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygendbghelp.h
Go to the documentation of this file.
00001 /* 00002 * Declarations for DBGHELP 00003 * 00004 * Copyright (C) 2003 Eric Pouech 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Lesser General Public 00008 * License as published by the Free Software Foundation; either 00009 * version 2.1 of the License, or (at your option) any later version. 00010 * 00011 * This library is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public 00017 * License along with this library; if not, write to the Free Software 00018 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 00019 */ 00020 00021 #ifndef __WINE_DBGHELP_H 00022 #define __WINE_DBGHELP_H 00023 00024 /* A set of documentation macros (see also imagehlp.h) */ 00025 #ifndef __deref_out 00026 # define __deref_out 00027 #endif 00028 #ifndef __deref_out_opt 00029 # define __deref_out_opt 00030 #endif 00031 #ifndef __deref_opt_out 00032 # define __deref_opt_out 00033 #endif 00034 #ifndef __in 00035 # define __in 00036 #endif 00037 #ifndef __in_opt 00038 # define __in_opt 00039 #endif 00040 #ifndef __in_bcount 00041 # define __in_bcount(x) 00042 #endif 00043 #ifndef __in_bcount_opt 00044 # define __in_bcount_opt(x) 00045 #endif 00046 #ifndef __in_ecount 00047 # define __in_ecount(x) 00048 #endif 00049 #ifndef __inout 00050 # define __inout 00051 #endif 00052 #ifndef __inout_opt 00053 # define __inout_opt 00054 #endif 00055 #ifndef __inout_bcount 00056 # define __inout_bcount(x) 00057 #endif 00058 #ifndef __inout_ecount 00059 # define __inout_ecount(x) 00060 #endif 00061 #ifndef __out 00062 # define __out 00063 #endif 00064 #ifndef __out_opt 00065 # define __out_opt 00066 #endif 00067 #ifndef __out_bcount 00068 # define __out_bcount(x) 00069 #endif 00070 #ifndef __out_bcount_opt 00071 # define __out_bcount_opt(x) 00072 #endif 00073 #ifndef __out_ecount 00074 # define __out_ecount(x) 00075 #endif 00076 #ifndef __out_ecount_opt 00077 # define __out_ecount_opt(x) 00078 #endif 00079 #ifndef __out_xcount 00080 # define __out_xcount(x) 00081 #endif 00082 00083 00084 #ifdef __cplusplus 00085 extern "C" { 00086 #endif /* defined(__cplusplus) */ 00087 00088 #ifdef _WIN64 00089 #ifndef _IMAGEHLP64 00090 #define _IMAGEHLP64 00091 #endif 00092 #endif 00093 00094 #define IMAGEAPI WINAPI 00095 #define DBHLPAPI IMAGEAPI 00096 00097 typedef struct _LOADED_IMAGE 00098 { 00099 PSTR ModuleName; 00100 HANDLE hFile; 00101 PUCHAR MappedAddress; 00102 PIMAGE_NT_HEADERS FileHeader; 00103 PIMAGE_SECTION_HEADER LastRvaSection; 00104 ULONG NumberOfSections; 00105 PIMAGE_SECTION_HEADER Sections; 00106 ULONG Characteristics; 00107 BOOLEAN fSystemImage; 00108 BOOLEAN fDOSImage; 00109 BOOLEAN fReadOnly; 00110 UCHAR Version; 00111 LIST_ENTRY Links; 00112 ULONG SizeOfImage; 00113 } LOADED_IMAGE, *PLOADED_IMAGE; 00114 00115 /************************* 00116 * IMAGEHLP equiv * 00117 *************************/ 00118 00119 typedef enum 00120 { 00121 AddrMode1616, 00122 AddrMode1632, 00123 AddrModeReal, 00124 AddrModeFlat 00125 } ADDRESS_MODE; 00126 00127 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) 00128 #define ADDRESS ADDRESS64 00129 #define LPADDRESS LPADDRESS64 00130 #else 00131 typedef struct _tagADDRESS 00132 { 00133 DWORD Offset; 00134 WORD Segment; 00135 ADDRESS_MODE Mode; 00136 } ADDRESS, *LPADDRESS; 00137 #endif 00138 00139 typedef struct _tagADDRESS64 00140 { 00141 DWORD64 Offset; 00142 WORD Segment; 00143 ADDRESS_MODE Mode; 00144 } ADDRESS64, *LPADDRESS64; 00145 00146 #define SYMF_OMAP_GENERATED 0x00000001 00147 #define SYMF_OMAP_MODIFIED 0x00000002 00148 #define SYMF_USER_GENERATED 0x00000004 00149 #define SYMF_REGISTER 0x00000008 00150 #define SYMF_REGREL 0x00000010 00151 #define SYMF_FRAMEREL 0x00000020 00152 #define SYMF_PARAMETER 0x00000040 00153 #define SYMF_LOCAL 0x00000080 00154 #define SYMF_CONSTANT 0x00000100 00155 #define SYMF_EXPORT 0x00000200 00156 #define SYMF_FORWARDER 0x00000400 00157 #define SYMF_FUNCTION 0x00000800 00158 #define SYMF_VIRTUAL 0x00001000 00159 #define SYMF_THUNK 0x00002000 00160 #define SYMF_TLSREL 0x00004000 00161 00162 typedef enum 00163 { 00164 SymNone = 0, 00165 SymCoff, 00166 SymCv, 00167 SymPdb, 00168 SymExport, 00169 SymDeferred, 00170 SymSym, 00171 SymDia, 00172 SymVirtual, 00173 NumSymTypes 00174 } SYM_TYPE; 00175 00176 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) 00177 #define IMAGEHLP_SYMBOL IMAGEHLP_SYMBOL64 00178 #define IMAGEHLP_SYMBOLW IMAGEHLP_SYMBOLW64 00179 #define PIMAGEHLP_SYMBOL PIMAGEHLP_SYMBOL64 00180 #define PIMAGEHLP_SYMBOLW PIMAGEHLP_SYMBOLW64 00181 #else 00182 typedef struct _IMAGEHLP_SYMBOL 00183 { 00184 DWORD SizeOfStruct; 00185 DWORD Address; 00186 DWORD Size; 00187 DWORD Flags; 00188 DWORD MaxNameLength; 00189 CHAR Name[1]; 00190 } IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL; 00191 00192 typedef struct _IMAGEHLP_SYMBOLW 00193 { 00194 DWORD SizeOfStruct; 00195 DWORD Address; 00196 DWORD Size; 00197 DWORD Flags; 00198 DWORD MaxNameLength; 00199 WCHAR Name[1]; 00200 } IMAGEHLP_SYMBOLW, *PIMAGEHLP_SYMBOLW; 00201 #endif 00202 00203 typedef struct _IMAGEHLP_SYMBOL64 00204 { 00205 DWORD SizeOfStruct; 00206 DWORD64 Address; 00207 DWORD Size; 00208 DWORD Flags; 00209 DWORD MaxNameLength; 00210 CHAR Name[1]; 00211 } IMAGEHLP_SYMBOL64, *PIMAGEHLP_SYMBOL64; 00212 00213 typedef struct _IMAGEHLP_SYMBOLW64 00214 { 00215 DWORD SizeOfStruct; 00216 DWORD64 Address; 00217 DWORD Size; 00218 DWORD Flags; 00219 DWORD MaxNameLength; 00220 WCHAR Name[1]; 00221 } IMAGEHLP_SYMBOLW64, *PIMAGEHLP_SYMBOLW64; 00222 00223 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) 00224 #define IMAGEHLP_MODULE IMAGEHLP_MODULE64 00225 #define PIMAGEHLP_MODULE PIMAGEHLP_MODULE64 00226 #define IMAGEHLP_MODULEW IMAGEHLP_MODULEW64 00227 #define PIMAGEHLP_MODULEW PIMAGEHLP_MODULEW64 00228 #else 00229 typedef struct _IMAGEHLP_MODULE 00230 { 00231 DWORD SizeOfStruct; 00232 DWORD BaseOfImage; 00233 DWORD ImageSize; 00234 DWORD TimeDateStamp; 00235 DWORD CheckSum; 00236 DWORD NumSyms; 00237 SYM_TYPE SymType; 00238 CHAR ModuleName[32]; 00239 CHAR ImageName[256]; 00240 CHAR LoadedImageName[256]; 00241 } IMAGEHLP_MODULE, *PIMAGEHLP_MODULE; 00242 00243 typedef struct _IMAGEHLP_MODULEW 00244 { 00245 DWORD SizeOfStruct; 00246 DWORD BaseOfImage; 00247 DWORD ImageSize; 00248 DWORD TimeDateStamp; 00249 DWORD CheckSum; 00250 DWORD NumSyms; 00251 SYM_TYPE SymType; 00252 WCHAR ModuleName[32]; 00253 WCHAR ImageName[256]; 00254 WCHAR LoadedImageName[256]; 00255 } IMAGEHLP_MODULEW, *PIMAGEHLP_MODULEW; 00256 #endif 00257 00258 typedef struct _IMAGEHLP_MODULE64 00259 { 00260 DWORD SizeOfStruct; 00261 DWORD64 BaseOfImage; 00262 DWORD ImageSize; 00263 DWORD TimeDateStamp; 00264 DWORD CheckSum; 00265 DWORD NumSyms; 00266 SYM_TYPE SymType; 00267 CHAR ModuleName[32]; 00268 CHAR ImageName[256]; 00269 CHAR LoadedImageName[256]; 00270 CHAR LoadedPdbName[256]; 00271 DWORD CVSig; 00272 CHAR CVData[MAX_PATH*3]; 00273 DWORD PdbSig; 00274 GUID PdbSig70; 00275 DWORD PdbAge; 00276 BOOL PdbUnmatched; 00277 BOOL DbgUnmatched; 00278 BOOL LineNumbers; 00279 BOOL GlobalSymbols; 00280 BOOL TypeInfo; 00281 BOOL SourceIndexed; 00282 BOOL Publics; 00283 } IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64; 00284 00285 typedef struct _IMAGEHLP_MODULEW64 00286 { 00287 DWORD SizeOfStruct; 00288 DWORD64 BaseOfImage; 00289 DWORD ImageSize; 00290 DWORD TimeDateStamp; 00291 DWORD CheckSum; 00292 DWORD NumSyms; 00293 SYM_TYPE SymType; 00294 WCHAR ModuleName[32]; 00295 WCHAR ImageName[256]; 00296 WCHAR LoadedImageName[256]; 00297 WCHAR LoadedPdbName[256]; 00298 DWORD CVSig; 00299 WCHAR CVData[MAX_PATH*3]; 00300 DWORD PdbSig; 00301 GUID PdbSig70; 00302 DWORD PdbAge; 00303 BOOL PdbUnmatched; 00304 BOOL DbgUnmatched; 00305 BOOL LineNumbers; 00306 BOOL GlobalSymbols; 00307 BOOL TypeInfo; 00308 BOOL SourceIndexed; 00309 BOOL Publics; 00310 } IMAGEHLP_MODULEW64, *PIMAGEHLP_MODULEW64; 00311 00312 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) 00313 #define IMAGEHLP_LINE IMAGEHLP_LINE64 00314 #define PIMAGEHLP_LINE PIMAGEHLP_LINE64 00315 #define IMAGEHLP_LINEW IMAGEHLP_LINEW64 00316 #define PIMAGEHLP_LINEW PIMAGEHLP_LINEW64 00317 #else 00318 typedef struct _IMAGEHLP_LINE 00319 { 00320 DWORD SizeOfStruct; 00321 PVOID Key; 00322 DWORD LineNumber; 00323 PCHAR FileName; 00324 DWORD Address; 00325 } IMAGEHLP_LINE, *PIMAGEHLP_LINE; 00326 00327 typedef struct _IMAGEHLP_LINEW 00328 { 00329 DWORD SizeOfStruct; 00330 PVOID Key; 00331 DWORD LineNumber; 00332 PWSTR FileName; 00333 DWORD Address; 00334 } IMAGEHLP_LINEW, *PIMAGEHLP_LINEW; 00335 #endif 00336 00337 typedef struct _IMAGEHLP_LINE64 00338 { 00339 DWORD SizeOfStruct; 00340 PVOID Key; 00341 DWORD LineNumber; 00342 PCHAR FileName; 00343 DWORD64 Address; 00344 } IMAGEHLP_LINE64, *PIMAGEHLP_LINE64; 00345 00346 typedef struct _IMAGEHLP_LINEW64 00347 { 00348 DWORD SizeOfStruct; 00349 PVOID Key; 00350 DWORD LineNumber; 00351 PWSTR FileName; 00352 DWORD64 Address; 00353 } IMAGEHLP_LINEW64, *PIMAGEHLP_LINEW64; 00354 00355 typedef struct _SOURCEFILE 00356 { 00357 DWORD64 ModBase; 00358 PCHAR FileName; 00359 } SOURCEFILE, *PSOURCEFILE; 00360 00361 typedef struct _SOURCEFILEW 00362 { 00363 DWORD64 ModBase; 00364 PWSTR FileName; 00365 } SOURCEFILEW, *PSOURCEFILEW; 00366 00367 #define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001 00368 #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002 00369 #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003 00370 #define CBA_SYMBOLS_UNLOADED 0x00000004 00371 #define CBA_DUPLICATE_SYMBOL 0x00000005 00372 #define CBA_READ_MEMORY 0x00000006 00373 #define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x00000007 00374 #define CBA_SET_OPTIONS 0x00000008 00375 #define CBA_EVENT 0x00000010 00376 #define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL 0x00000020 00377 #define CBA_DEBUG_INFO 0x10000000 00378 00379 typedef struct _IMAGEHLP_CBA_READ_MEMORY 00380 { 00381 DWORD64 addr; 00382 PVOID buf; 00383 DWORD bytes; 00384 DWORD *bytesread; 00385 } IMAGEHLP_CBA_READ_MEMORY, *PIMAGEHLP_CBA_READ_MEMORY; 00386 00387 enum 00388 { 00389 sevInfo = 0, 00390 sevProblem, 00391 sevAttn, 00392 sevFatal, 00393 sevMax 00394 }; 00395 00396 #define EVENT_SRCSPEW_START 100 00397 #define EVENT_SRCSPEW 100 00398 #define EVENT_SRCSPEW_END 199 00399 00400 typedef struct _IMAGEHLP_CBA_EVENT 00401 { 00402 DWORD severity; 00403 DWORD code; 00404 PCHAR desc; 00405 PVOID object; 00406 } IMAGEHLP_CBA_EVENT, *PIMAGEHLP_CBA_EVENT; 00407 00408 typedef struct _IMAGEHLP_CBA_EVENTW 00409 { 00410 DWORD severity; 00411 DWORD code; 00412 PCWSTR desc; 00413 PVOID object; 00414 } IMAGEHLP_CBA_EVENTW, *PIMAGEHLP_CBA_EVENTW; 00415 00416 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) 00417 #define IMAGEHLP_DEFERRED_SYMBOL_LOAD IMAGEHLP_DEFERRED_SYMBOL_LOAD64 00418 #define PIMAGEHLP_DEFERRED_SYMBOL_LOAD PIMAGEHLP_DEFERRED_SYMBOL_LOAD64 00419 #else 00420 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD 00421 { 00422 DWORD SizeOfStruct; 00423 DWORD BaseOfImage; 00424 DWORD CheckSum; 00425 DWORD TimeDateStamp; 00426 CHAR FileName[MAX_PATH]; 00427 BOOLEAN Reparse; 00428 HANDLE hFile; 00429 } IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD; 00430 #endif 00431 00432 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 00433 { 00434 DWORD SizeOfStruct; 00435 DWORD64 BaseOfImage; 00436 DWORD CheckSum; 00437 DWORD TimeDateStamp; 00438 CHAR FileName[MAX_PATH]; 00439 BOOLEAN Reparse; 00440 HANDLE hFile; 00441 DWORD Flags; 00442 } IMAGEHLP_DEFERRED_SYMBOL_LOAD64, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD64; 00443 00444 typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOADW64 00445 { 00446 DWORD SizeOfStruct; 00447 DWORD64 BaseOfImage; 00448 DWORD CheckSum; 00449 DWORD TimeDateStamp; 00450 WCHAR FileName[MAX_PATH + 1]; 00451 BOOLEAN Reparse; 00452 HANDLE hFile; 00453 DWORD Flags; 00454 } IMAGEHLP_DEFERRED_SYMBOL_LOADW64, *PIMAGEHLP_DEFERRED_SYMBOL_LOADW64; 00455 00456 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) 00457 #define IMAGEHLP_DUPLICATE_SYMBOL IMAGEHLP_DUPLICATE_SYMBOL64 00458 #define PIMAGEHLP_DUPLICATE_SYMBOL PIMAGEHLP_DUPLICATE_SYMBOL64 00459 #else 00460 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL 00461 { 00462 DWORD SizeOfStruct; 00463 DWORD NumberOfDups; 00464 PIMAGEHLP_SYMBOL Symbol; 00465 DWORD SelectedSymbol; 00466 } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL; 00467 #endif 00468 00469 typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 00470 { 00471 DWORD SizeOfStruct; 00472 DWORD NumberOfDups; 00473 PIMAGEHLP_SYMBOL64 Symbol; 00474 DWORD SelectedSymbol; 00475 } IMAGEHLP_DUPLICATE_SYMBOL64, *PIMAGEHLP_DUPLICATE_SYMBOL64; 00476 00477 #define SYMOPT_CASE_INSENSITIVE 0x00000001 00478 #define SYMOPT_UNDNAME 0x00000002 00479 #define SYMOPT_DEFERRED_LOADS 0x00000004 00480 #define SYMOPT_NO_CPP 0x00000008 00481 #define SYMOPT_LOAD_LINES 0x00000010 00482 #define SYMOPT_OMAP_FIND_NEAREST 0x00000020 00483 #define SYMOPT_LOAD_ANYTHING 0x00000040 00484 #define SYMOPT_IGNORE_CVREC 0x00000080 00485 #define SYMOPT_NO_UNQUALIFIED_LOADS 0x00000100 00486 #define SYMOPT_FAIL_CRITICAL_ERRORS 0x00000200 00487 #define SYMOPT_EXACT_SYMBOLS 0x00000400 00488 #define SYMOPT_WILD_UNDERSCORE 0x00000800 00489 #define SYMOPT_USE_DEFAULTS 0x00001000 00490 /* latest SDK defines: 00491 #define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS 0x00000800 00492 #define SYMOPT_IGNORE_NT_SYMPATH 0x00001000 00493 */ 00494 #define SYMOPT_INCLUDE_32BIT_MODULES 0x00002000 00495 #define SYMOPT_PUBLICS_ONLY 0x00004000 00496 #define SYMOPT_NO_PUBLICS 0x00008000 00497 #define SYMOPT_AUTO_PUBLICS 0x00010000 00498 #define SYMOPT_NO_IMAGE_SEARCH 0x00020000 00499 #define SYMOPT_SECURE 0x00040000 00500 #define SYMOPT_NO_PROMPTS 0x00080000 00501 #define SYMOPT_OVERWRITE 0x00100000 00502 #define SYMOPT_IGNORE_IMAGEDIR 0x00200000 00503 00504 #define SYMOPT_DEBUG 0x80000000 00505 00506 typedef struct _IMAGEHLP_STACK_FRAME 00507 { 00508 ULONG64 InstructionOffset; 00509 ULONG64 ReturnOffset; 00510 ULONG64 FrameOffset; 00511 ULONG64 StackOffset; 00512 ULONG64 BackingStoreOffset; 00513 ULONG64 FuncTableEntry; 00514 ULONG64 Params[4]; 00515 ULONG64 Reserved[5]; 00516 BOOL Virtual; 00517 ULONG Reserved2; 00518 } IMAGEHLP_STACK_FRAME, *PIMAGEHLP_STACK_FRAME; 00519 00520 typedef VOID IMAGEHLP_CONTEXT, *PIMAGEHLP_CONTEXT; 00521 00522 #define DBHHEADER_DEBUGDIRS 0x1 00523 typedef struct _DBGHELP_MODLOAD_DATA 00524 { 00525 DWORD ssize; 00526 DWORD ssig; 00527 PVOID data; 00528 DWORD size; 00529 DWORD flags; 00530 } MODLOAD_DATA, *PMODLOAD_DATA; 00531 00532 /************************* 00533 * MiniDUMP * 00534 *************************/ 00535 00536 #include <pshpack4.h> 00537 /* DebugHelp */ 00538 00539 #define MINIDUMP_SIGNATURE 0x504D444D /* 'MDMP' */ 00540 #define MINIDUMP_VERSION (42899) 00541 00542 typedef DWORD RVA; 00543 typedef ULONG64 RVA64; 00544 00545 typedef enum _MINIDUMP_TYPE 00546 { 00547 MiniDumpNormal = 0x0000, 00548 MiniDumpWithDataSegs = 0x0001, 00549 MiniDumpWithFullMemory = 0x0002, 00550 MiniDumpWithHandleData = 0x0004, 00551 MiniDumpFilterMemory = 0x0008, 00552 MiniDumpScanMemory = 0x0010, 00553 MiniDumpWithUnloadedModules = 0x0020, 00554 MiniDumpWithIndirectlyReferencedMemory = 0x0040, 00555 MiniDumpFilterModulePaths = 0x0080, 00556 MiniDumpWithProcessThreadData = 0x0100, 00557 MiniDumpWithPrivateReadWriteMemory = 0x0200, 00558 MiniDumpWithoutOptionalData = 0x0400, 00559 MiniDumpWithFullMemoryInfo = 0x0800, 00560 MiniDumpWithThreadInfo = 0x1000, 00561 MiniDumpWithCodeSegs = 0x2000 00562 } MINIDUMP_TYPE; 00563 00564 typedef enum _MINIDUMP_CALLBACK_TYPE 00565 { 00566 ModuleCallback, 00567 ThreadCallback, 00568 ThreadExCallback, 00569 IncludeThreadCallback, 00570 IncludeModuleCallback, 00571 MemoryCallback, 00572 } MINIDUMP_CALLBACK_TYPE; 00573 00574 typedef struct _MINIDUMP_THREAD_CALLBACK 00575 { 00576 ULONG ThreadId; 00577 HANDLE ThreadHandle; 00578 CONTEXT Context; 00579 ULONG SizeOfContext; 00580 ULONG64 StackBase; 00581 ULONG64 StackEnd; 00582 } MINIDUMP_THREAD_CALLBACK, *PMINIDUMP_THREAD_CALLBACK; 00583 00584 typedef struct _MINIDUMP_THREAD_EX_CALLBACK 00585 { 00586 ULONG ThreadId; 00587 HANDLE ThreadHandle; 00588 CONTEXT Context; 00589 ULONG SizeOfContext; 00590 ULONG64 StackBase; 00591 ULONG64 StackEnd; 00592 ULONG64 BackingStoreBase; 00593 ULONG64 BackingStoreEnd; 00594 } MINIDUMP_THREAD_EX_CALLBACK, *PMINIDUMP_THREAD_EX_CALLBACK; 00595 00596 typedef struct _MINIDUMP_INCLUDE_THREAD_CALLBACK 00597 { 00598 ULONG ThreadId; 00599 } MINIDUMP_INCLUDE_THREAD_CALLBACK, *PMINIDUMP_INCLUDE_THREAD_CALLBACK; 00600 00601 typedef enum _THREAD_WRITE_FLAGS 00602 { 00603 ThreadWriteThread = 0x0001, 00604 ThreadWriteStack = 0x0002, 00605 ThreadWriteContext = 0x0004, 00606 ThreadWriteBackingStore = 0x0008, 00607 ThreadWriteInstructionWindow = 0x0010, 00608 ThreadWriteThreadData = 0x0020, 00609 ThreadWriteThreadInfo = 0x0040 00610 } THREAD_WRITE_FLAGS; 00611 00612 typedef struct _MINIDUMP_MODULE_CALLBACK 00613 { 00614 PWCHAR FullPath; 00615 ULONG64 BaseOfImage; 00616 ULONG SizeOfImage; 00617 ULONG CheckSum; 00618 ULONG TimeDateStamp; 00619 VS_FIXEDFILEINFO VersionInfo; 00620 PVOID CvRecord; 00621 ULONG SizeOfCvRecord; 00622 PVOID MiscRecord; 00623 ULONG SizeOfMiscRecord; 00624 } MINIDUMP_MODULE_CALLBACK, *PMINIDUMP_MODULE_CALLBACK; 00625 00626 typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK 00627 { 00628 ULONG64 BaseOfImage; 00629 } MINIDUMP_INCLUDE_MODULE_CALLBACK, *PMINIDUMP_INCLUDE_MODULE_CALLBACK; 00630 00631 typedef enum _MODULE_WRITE_FLAGS 00632 { 00633 ModuleWriteModule = 0x0001, 00634 ModuleWriteDataSeg = 0x0002, 00635 ModuleWriteMiscRecord = 0x0004, 00636 ModuleWriteCvRecord = 0x0008, 00637 ModuleReferencedByMemory = 0x0010, 00638 ModuleWriteTlsData = 0x0020, 00639 ModuleWriteCodeSegs = 0x0040, 00640 } MODULE_WRITE_FLAGS; 00641 00642 typedef struct _MINIDUMP_CALLBACK_INPUT 00643 { 00644 ULONG ProcessId; 00645 HANDLE ProcessHandle; 00646 ULONG CallbackType; 00647 union 00648 { 00649 MINIDUMP_THREAD_CALLBACK Thread; 00650 MINIDUMP_THREAD_EX_CALLBACK ThreadEx; 00651 MINIDUMP_MODULE_CALLBACK Module; 00652 MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread; 00653 MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule; 00654 } DUMMYUNIONNAME; 00655 } MINIDUMP_CALLBACK_INPUT, *PMINIDUMP_CALLBACK_INPUT; 00656 00657 typedef struct _MINIDUMP_CALLBACK_OUTPUT 00658 { 00659 union 00660 { 00661 ULONG ModuleWriteFlags; 00662 ULONG ThreadWriteFlags; 00663 struct 00664 { 00665 ULONG64 MemoryBase; 00666 ULONG MemorySize; 00667 } DUMMYSTRUCTNAME; 00668 } DUMMYUNIONNAME; 00669 } MINIDUMP_CALLBACK_OUTPUT, *PMINIDUMP_CALLBACK_OUTPUT; 00670 00671 typedef BOOL (WINAPI* MINIDUMP_CALLBACK_ROUTINE)(PVOID, const PMINIDUMP_CALLBACK_INPUT, PMINIDUMP_CALLBACK_OUTPUT); 00672 00673 typedef struct _MINIDUMP_CALLBACK_INFORMATION 00674 { 00675 MINIDUMP_CALLBACK_ROUTINE CallbackRoutine; 00676 void* CallbackParam; 00677 } MINIDUMP_CALLBACK_INFORMATION, *PMINIDUMP_CALLBACK_INFORMATION; 00678 00679 typedef struct _MINIDUMP_LOCATION_DESCRIPTOR 00680 { 00681 ULONG DataSize; 00682 RVA Rva; 00683 } MINIDUMP_LOCATION_DESCRIPTOR; 00684 00685 typedef struct _MINIDUMP_LOCATION_DESCRIPTOR64 00686 { 00687 ULONG64 DataSize; 00688 RVA64 Rva; 00689 } MINIDUMP_LOCATION_DESCRIPTOR64; 00690 00691 typedef struct _MINIDUMP_DIRECTORY 00692 { 00693 ULONG StreamType; 00694 MINIDUMP_LOCATION_DESCRIPTOR Location; 00695 } MINIDUMP_DIRECTORY, *PMINIDUMP_DIRECTORY; 00696 00697 typedef struct _MINIDUMP_EXCEPTION 00698 { 00699 ULONG ExceptionCode; 00700 ULONG ExceptionFlags; 00701 ULONG64 ExceptionRecord; 00702 ULONG64 ExceptionAddress; 00703 ULONG NumberParameters; 00704 ULONG __unusedAlignment; 00705 ULONG64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; 00706 } MINIDUMP_EXCEPTION, *PMINIDUMP_EXCEPTION; 00707 00708 typedef struct _MINIDUMP_EXCEPTION_INFORMATION 00709 { 00710 DWORD ThreadId; 00711 PEXCEPTION_POINTERS ExceptionPointers; 00712 BOOL ClientPointers; 00713 } MINIDUMP_EXCEPTION_INFORMATION, *PMINIDUMP_EXCEPTION_INFORMATION; 00714 00715 typedef struct MINIDUMP_EXCEPTION_STREAM 00716 { 00717 ULONG ThreadId; 00718 ULONG __alignment; 00719 MINIDUMP_EXCEPTION ExceptionRecord; 00720 MINIDUMP_LOCATION_DESCRIPTOR ThreadContext; 00721 } MINIDUMP_EXCEPTION_STREAM, *PMINIDUMP_EXCEPTION_STREAM; 00722 00723 typedef struct _MINIDUMP_HEADER 00724 { 00725 DWORD Signature; 00726 DWORD Version; 00727 DWORD NumberOfStreams; 00728 RVA StreamDirectoryRva; 00729 DWORD CheckSum; 00730 union 00731 { 00732 DWORD Reserved; 00733 DWORD TimeDateStamp; 00734 } DUMMYUNIONNAME; 00735 ULONG64 Flags; 00736 } MINIDUMP_HEADER, *PMINIDUMP_HEADER; 00737 00738 typedef struct _MINIDUMP_MEMORY_DESCRIPTOR 00739 { 00740 ULONG64 StartOfMemoryRange; 00741 MINIDUMP_LOCATION_DESCRIPTOR Memory; 00742 } MINIDUMP_MEMORY_DESCRIPTOR, *PMINIDUMP_MEMORY_DESCRIPTOR; 00743 00744 typedef struct _MINIDUMP_MEMORY_LIST 00745 { 00746 ULONG NumberOfMemoryRanges; 00747 MINIDUMP_MEMORY_DESCRIPTOR MemoryRanges[1]; /* FIXME: 0-sized array not supported */ 00748 } MINIDUMP_MEMORY_LIST, *PMINIDUMP_MEMORY_LIST; 00749 00750 #define MINIDUMP_MISC1_PROCESS_ID 0x00000001 00751 #define MINIDUMP_MISC1_PROCESS_TIMES 0x00000002 00752 00753 typedef struct _MINIDUMP_MISC_INFO 00754 { 00755 ULONG SizeOfInfo; 00756 ULONG Flags1; 00757 ULONG ProcessId; 00758 ULONG ProcessCreateTime; 00759 ULONG ProcessUserTime; 00760 ULONG ProcessKernelTime; 00761 } MINIDUMP_MISC_INFO, *PMINIDUMP_MISC_INFO; 00762 00763 typedef struct _MINIDUMP_MODULE 00764 { 00765 ULONG64 BaseOfImage; 00766 ULONG SizeOfImage; 00767 ULONG CheckSum; 00768 ULONG TimeDateStamp; 00769 RVA ModuleNameRva; 00770 VS_FIXEDFILEINFO VersionInfo; 00771 MINIDUMP_LOCATION_DESCRIPTOR CvRecord; 00772 MINIDUMP_LOCATION_DESCRIPTOR MiscRecord; 00773 ULONG64 Reserved0; 00774 ULONG64 Reserved1; 00775 } MINIDUMP_MODULE, *PMINIDUMP_MODULE; 00776 00777 typedef struct _MINIDUMP_MODULE_LIST 00778 { 00779 ULONG NumberOfModules; 00780 MINIDUMP_MODULE Modules[1]; /* FIXME: 0-sized array not supported */ 00781 } MINIDUMP_MODULE_LIST, *PMINIDUMP_MODULE_LIST; 00782 00783 typedef struct _MINIDUMP_STRING 00784 { 00785 ULONG Length; 00786 WCHAR Buffer[1]; /* FIXME: O-sized array not supported */ 00787 } MINIDUMP_STRING, *PMINIDUMP_STRING; 00788 00789 typedef struct _MINIDUMP_SYSTEM_INFO 00790 { 00791 USHORT ProcessorArchitecture; 00792 USHORT ProcessorLevel; 00793 USHORT ProcessorRevision; 00794 union 00795 { 00796 USHORT Reserved0; 00797 struct 00798 { 00799 UCHAR NumberOfProcessors; 00800 UCHAR ProductType; 00801 } DUMMYSTRUCTNAME; 00802 } DUMMYUNIONNAME; 00803 00804 ULONG MajorVersion; 00805 ULONG MinorVersion; 00806 ULONG BuildNumber; 00807 ULONG PlatformId; 00808 00809 RVA CSDVersionRva; 00810 union 00811 { 00812 ULONG Reserved1; 00813 struct 00814 { 00815 USHORT SuiteMask; 00816 USHORT Reserved2; 00817 } DUMMYSTRUCTNAME; 00818 } DUMMYUNIONNAME1; 00819 union _CPU_INFORMATION 00820 { 00821 struct 00822 { 00823 ULONG VendorId[3]; 00824 ULONG VersionInformation; 00825 ULONG FeatureInformation; 00826 ULONG AMDExtendedCpuFeatures; 00827 } X86CpuInfo; 00828 struct 00829 { 00830 ULONG64 ProcessorFeatures[2]; 00831 } OtherCpuInfo; 00832 } Cpu; 00833 00834 } MINIDUMP_SYSTEM_INFO, *PMINIDUMP_SYSTEM_INFO; 00835 00836 typedef struct _MINIDUMP_THREAD 00837 { 00838 ULONG ThreadId; 00839 ULONG SuspendCount; 00840 ULONG PriorityClass; 00841 ULONG Priority; 00842 ULONG64 Teb; 00843 MINIDUMP_MEMORY_DESCRIPTOR Stack; 00844 MINIDUMP_LOCATION_DESCRIPTOR ThreadContext; 00845 } MINIDUMP_THREAD, *PMINIDUMP_THREAD; 00846 00847 typedef struct _MINIDUMP_THREAD_LIST 00848 { 00849 ULONG NumberOfThreads; 00850 MINIDUMP_THREAD Threads[1]; /* FIXME: no support of 0 sized array */ 00851 } MINIDUMP_THREAD_LIST, *PMINIDUMP_THREAD_LIST; 00852 00853 typedef struct _MINIDUMP_USER_STREAM 00854 { 00855 ULONG Type; 00856 ULONG BufferSize; 00857 void* Buffer; 00858 } MINIDUMP_USER_STREAM, *PMINIDUMP_USER_STREAM; 00859 00860 typedef struct _MINIDUMP_USER_STREAM_INFORMATION 00861 { 00862 ULONG UserStreamCount; 00863 PMINIDUMP_USER_STREAM UserStreamArray; 00864 } MINIDUMP_USER_STREAM_INFORMATION, *PMINIDUMP_USER_STREAM_INFORMATION; 00865 00866 typedef enum _MINIDUMP_STREAM_TYPE 00867 { 00868 UnusedStream = 0, 00869 ReservedStream0 = 1, 00870 ReservedStream1 = 2, 00871 ThreadListStream = 3, 00872 ModuleListStream = 4, 00873 MemoryListStream = 5, 00874 ExceptionStream = 6, 00875 SystemInfoStream = 7, 00876 ThreadExListStream = 8, 00877 Memory64ListStream = 9, 00878 CommentStreamA = 10, 00879 CommentStreamW = 11, 00880 HandleDataStream = 12, 00881 FunctionTableStream = 13, 00882 UnloadedModuleListStream = 14, 00883 MiscInfoStream = 15, 00884 MemoryInfoListStream = 16, 00885 ThreadInfoListStream = 17, 00886 00887 LastReservedStream = 0xffff 00888 } MINIDUMP_STREAM_TYPE; 00889 00890 BOOL WINAPI MiniDumpWriteDump(HANDLE, DWORD, HANDLE, MINIDUMP_TYPE, 00891 const PMINIDUMP_EXCEPTION_INFORMATION, 00892 const PMINIDUMP_USER_STREAM_INFORMATION, 00893 const PMINIDUMP_CALLBACK_INFORMATION); 00894 BOOL WINAPI MiniDumpReadDumpStream(PVOID, ULONG, PMINIDUMP_DIRECTORY*, PVOID*, 00895 ULONG*); 00896 00897 #include <poppack.h> 00898 00899 /************************* 00900 * MODULE handling * 00901 *************************/ 00902 00903 /* flags for SymLoadModuleEx */ 00904 #define SLMFLAG_VIRTUAL 0x1 00905 #define SLMFLAG_NO_SYMBOLS 0x4 00906 00907 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID); 00908 BOOL WINAPI EnumerateLoadedModules64(HANDLE, PENUMLOADED_MODULES_CALLBACK64, PVOID); 00909 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)(PCWSTR, DWORD64, ULONG, PVOID); 00910 BOOL WINAPI EnumerateLoadedModulesW64(HANDLE, PENUMLOADED_MODULES_CALLBACKW64, PVOID); 00911 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(PCSTR, DWORD64, PVOID); 00912 BOOL WINAPI SymEnumerateModules64(HANDLE, PSYM_ENUMMODULES_CALLBACK64, PVOID); 00913 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)(PCWSTR, DWORD64, PVOID); 00914 BOOL WINAPI SymEnumerateModulesW64(HANDLE, PSYM_ENUMMODULES_CALLBACKW64, PVOID); 00915 BOOL WINAPI SymGetModuleInfo64(HANDLE, DWORD64, PIMAGEHLP_MODULE64); 00916 BOOL WINAPI SymGetModuleInfoW64(HANDLE, DWORD64, PIMAGEHLP_MODULEW64); 00917 DWORD64 WINAPI SymGetModuleBase64(HANDLE, DWORD64); 00918 DWORD64 WINAPI SymLoadModule64(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD); 00919 DWORD64 WINAPI SymLoadModuleEx(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD, 00920 PMODLOAD_DATA, DWORD); 00921 DWORD64 WINAPI SymLoadModuleExW(HANDLE, HANDLE, PCWSTR, PCWSTR, DWORD64, DWORD, 00922 PMODLOAD_DATA, DWORD); 00923 BOOL WINAPI SymUnloadModule64(HANDLE, DWORD64); 00924 00925 /************************* 00926 * Symbol Handling * 00927 *************************/ 00928 00929 #define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 1 00930 #define IMAGEHLP_SYMBOL_INFO_REGISTER SYMF_REGISTER /* 0x08 */ 00931 #define IMAGEHLP_SYMBOL_INFO_REGRELATIVE SYMF_REGREL /* 0x10 */ 00932 #define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE SYMF_FRAMEREL /* 0x20 */ 00933 #define IMAGEHLP_SYMBOL_INFO_PARAMETER SYMF_PARAMETER /* 0x40 */ 00934 #define IMAGEHLP_SYMBOL_INFO_LOCAL SYMF_LOCAL /* 0x80 */ 00935 #define IMAGEHLP_SYMBOL_INFO_CONSTANT SYMF_CONSTANT /* 0x100 */ 00936 #define IMAGEHLP_SYMBOL_FUNCTION SYMF_FUNCTION /* 0x800 */ 00937 00938 #define SYMFLAG_VALUEPRESENT 0x00000001 00939 #define SYMFLAG_REGISTER 0x00000008 00940 #define SYMFLAG_REGREL 0x00000010 00941 #define SYMFLAG_FRAMEREL 0x00000020 00942 #define SYMFLAG_PARAMETER 0x00000040 00943 #define SYMFLAG_LOCAL 0x00000080 00944 #define SYMFLAG_CONSTANT 0x00000100 00945 #define SYMFLAG_EXPORT 0x00000200 00946 #define SYMFLAG_FORWARDER 0x00000400 00947 #define SYMFLAG_FUNCTION 0x00000800 00948 #define SYMFLAG_VIRTUAL 0x00001000 00949 #define SYMFLAG_THUNK 0x00002000 00950 #define SYMFLAG_TLSREL 0x00004000 00951 #define SYMFLAG_SLOT 0x00008000 00952 00953 #define MAX_SYM_NAME 2000 00954 00955 typedef struct _SYMBOL_INFO 00956 { 00957 ULONG SizeOfStruct; 00958 ULONG TypeIndex; 00959 ULONG64 Reserved[2]; 00960 ULONG info; /* sdk states info, while MSDN says it's Index... */ 00961 ULONG Size; 00962 ULONG64 ModBase; 00963 ULONG Flags; 00964 ULONG64 Value; 00965 ULONG64 Address; 00966 ULONG Register; 00967 ULONG Scope; 00968 ULONG Tag; 00969 ULONG NameLen; 00970 ULONG MaxNameLen; 00971 CHAR Name[1]; 00972 } SYMBOL_INFO, *PSYMBOL_INFO; 00973 00974 typedef struct _SYMBOL_INFOW 00975 { 00976 ULONG SizeOfStruct; 00977 ULONG TypeIndex; 00978 ULONG64 Reserved[2]; 00979 ULONG Index; 00980 ULONG Size; 00981 ULONG64 ModBase; 00982 ULONG Flags; 00983 ULONG64 Value; 00984 ULONG64 Address; 00985 ULONG Register; 00986 ULONG Scope; 00987 ULONG Tag; 00988 ULONG NameLen; 00989 ULONG MaxNameLen; 00990 WCHAR Name[1]; 00991 } SYMBOL_INFOW, *PSYMBOL_INFOW; 00992 00993 typedef struct _SYMBOL_INFO_PACKAGE 00994 { 00995 SYMBOL_INFO si; 00996 CHAR name[MAX_SYM_NAME+1]; 00997 } SYMBOL_INFO_PACKAGE, *PSYMBOL_INFO_PACKAGE; 00998 00999 typedef struct _SYMBOL_INFO_PACKAGEW 01000 { 01001 SYMBOL_INFOW si; 01002 WCHAR name[MAX_SYM_NAME+1]; 01003 } SYMBOL_INFO_PACKAGEW, *PSYMBOL_INFO_PACKAGEW; 01004 01005 typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO 01006 { 01007 TI_GET_SYMTAG, 01008 TI_GET_SYMNAME, 01009 TI_GET_LENGTH, 01010 TI_GET_TYPE, 01011 TI_GET_TYPEID, 01012 TI_GET_BASETYPE, 01013 TI_GET_ARRAYINDEXTYPEID, 01014 TI_FINDCHILDREN, 01015 TI_GET_DATAKIND, 01016 TI_GET_ADDRESSOFFSET, 01017 TI_GET_OFFSET, 01018 TI_GET_VALUE, 01019 TI_GET_COUNT, 01020 TI_GET_CHILDRENCOUNT, 01021 TI_GET_BITPOSITION, 01022 TI_GET_VIRTUALBASECLASS, 01023 TI_GET_VIRTUALTABLESHAPEID, 01024 TI_GET_VIRTUALBASEPOINTEROFFSET, 01025 TI_GET_CLASSPARENTID, 01026 TI_GET_NESTED, 01027 TI_GET_SYMINDEX, 01028 TI_GET_LEXICALPARENT, 01029 TI_GET_ADDRESS, 01030 TI_GET_THISADJUST, 01031 TI_GET_UDTKIND, 01032 TI_IS_EQUIV_TO, 01033 TI_GET_CALLING_CONVENTION, 01034 } IMAGEHLP_SYMBOL_TYPE_INFO; 01035 01036 #define IMAGEHLP_GET_TYPE_INFO_UNCACHED 0x00000001 01037 #define IMAGEHLP_GET_TYPE_INFO_CHILDREN 0x00000002 01038 typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS 01039 { 01040 ULONG SizeOfStruct; 01041 ULONG Flags; 01042 ULONG NumIds; 01043 PULONG TypeIds; 01044 ULONG64 TagFilter; 01045 ULONG NumReqs; 01046 IMAGEHLP_SYMBOL_TYPE_INFO* ReqKinds; 01047 PULONG_PTR ReqOffsets; 01048 PULONG ReqSizes; 01049 ULONG_PTR ReqStride; 01050 ULONG_PTR BufferSize; 01051 PVOID Buffer; 01052 ULONG EntriesMatched; 01053 ULONG EntriesFilled; 01054 ULONG64 TagsFound; 01055 ULONG64 AllReqsValid; 01056 ULONG NumReqsValid; 01057 PULONG64 ReqsValid; 01058 } IMAGEHLP_GET_TYPE_INFO_PARAMS, *PIMAGEHLP_GET_TYPE_INFO_PARAMS; 01059 01060 typedef struct _TI_FINDCHILDREN_PARAMS 01061 { 01062 ULONG Count; 01063 ULONG Start; 01064 ULONG ChildId[1]; 01065 } TI_FINDCHILDREN_PARAMS; 01066 01067 #define UNDNAME_COMPLETE (0x0000) 01068 #define UNDNAME_NO_LEADING_UNDERSCORES (0x0001) 01069 #define UNDNAME_NO_MS_KEYWORDS (0x0002) 01070 #define UNDNAME_NO_FUNCTION_RETURNS (0x0004) 01071 #define UNDNAME_NO_ALLOCATION_MODEL (0x0008) 01072 #define UNDNAME_NO_ALLOCATION_LANGUAGE (0x0010) 01073 #define UNDNAME_NO_MS_THISTYPE (0x0020) 01074 #define UNDNAME_NO_CV_THISTYPE (0x0040) 01075 #define UNDNAME_NO_THISTYPE (0x0060) 01076 #define UNDNAME_NO_ACCESS_SPECIFIERS (0x0080) 01077 #define UNDNAME_NO_THROW_SIGNATURES (0x0100) 01078 #define UNDNAME_NO_MEMBER_TYPE (0x0200) 01079 #define UNDNAME_NO_RETURN_UDT_MODEL (0x0400) 01080 #define UNDNAME_32_BIT_DECODE (0x0800) 01081 #define UNDNAME_NAME_ONLY (0x1000) 01082 #define UNDNAME_NO_ARGUMENTS (0x2000) 01083 #define UNDNAME_NO_SPECIAL_SYMS (0x4000) 01084 01085 #define SYMSEARCH_MASKOBJS 0x01 01086 #define SYMSEARCH_RECURSE 0x02 01087 #define SYMSEARCH_GLOBALSONLY 0x04 01088 01089 BOOL WINAPI SymGetTypeInfo(HANDLE, DWORD64, ULONG, IMAGEHLP_SYMBOL_TYPE_INFO, PVOID); 01090 BOOL WINAPI SymGetTypeInfoEx(HANDLE, DWORD64, PIMAGEHLP_GET_TYPE_INFO_PARAMS); 01091 typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(PSYMBOL_INFO, ULONG, PVOID); 01092 typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)(PSYMBOL_INFOW, ULONG, PVOID); 01093 BOOL WINAPI SymEnumTypes(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID); 01094 BOOL WINAPI SymEnumTypesW(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID); 01095 BOOL WINAPI SymFromAddr(HANDLE, DWORD64, DWORD64*, SYMBOL_INFO*); 01096 BOOL WINAPI SymFromAddrW(HANDLE, DWORD64, DWORD64*, SYMBOL_INFOW*); 01097 BOOL WINAPI SymFromToken(HANDLE, DWORD64, DWORD, PSYMBOL_INFO); 01098 BOOL WINAPI SymFromTokenW(HANDLE, DWORD64, DWORD, PSYMBOL_INFOW); 01099 BOOL WINAPI SymFromName(HANDLE, PCSTR, PSYMBOL_INFO); 01100 BOOL WINAPI SymFromNameW(HANDLE, PCWSTR, PSYMBOL_INFOW); 01101 BOOL WINAPI SymGetSymFromAddr64(HANDLE, DWORD64, PDWORD64, PIMAGEHLP_SYMBOL64); 01102 BOOL WINAPI SymGetSymFromName64(HANDLE, PCSTR, PIMAGEHLP_SYMBOL64); 01103 BOOL WINAPI SymGetTypeFromName(HANDLE, ULONG64, PCSTR, PSYMBOL_INFO); 01104 BOOL WINAPI SymGetTypeFromNameW(HANDLE, ULONG64, PCWSTR, PSYMBOL_INFOW); 01105 BOOL WINAPI SymGetSymNext64(HANDLE, PIMAGEHLP_SYMBOL64); 01106 BOOL WINAPI SymGetSymNextW64(HANDLE, PIMAGEHLP_SYMBOLW64); 01107 BOOL WINAPI SymGetSymPrev64(HANDLE, PIMAGEHLP_SYMBOL64); 01108 BOOL WINAPI SymGetSymPrevW64(HANDLE, PIMAGEHLP_SYMBOLW64); 01109 BOOL WINAPI SymEnumSym(HANDLE,ULONG64,PSYM_ENUMERATESYMBOLS_CALLBACK,PVOID); 01110 BOOL WINAPI SymEnumSymbols(HANDLE, ULONG64, PCSTR, PSYM_ENUMERATESYMBOLS_CALLBACK, 01111 PVOID); 01112 BOOL WINAPI SymEnumSymbolsW(HANDLE, ULONG64, PCWSTR, PSYM_ENUMERATESYMBOLS_CALLBACKW, 01113 PVOID); 01114 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID); 01115 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(PCWSTR, DWORD64, ULONG, PVOID); 01116 BOOL WINAPI SymEnumerateSymbols64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64, PVOID); 01117 BOOL WINAPI SymEnumerateSymbolsW64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64W, PVOID); 01118 BOOL WINAPI SymEnumSymbolsForAddr(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID); 01119 BOOL WINAPI SymEnumSymbolsForAddrW(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID); 01120 typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(HANDLE, ULONG, ULONG64, ULONG64); 01121 BOOL WINAPI SymRegisterCallback64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64); 01122 BOOL WINAPI SymRegisterCallbackW64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64); 01123 BOOL WINAPI SymUnDName64(PIMAGEHLP_SYMBOL64, PSTR, DWORD); 01124 BOOL WINAPI SymMatchString(PCSTR, PCSTR, BOOL); 01125 BOOL WINAPI SymMatchStringA(PCSTR, PCSTR, BOOL); 01126 BOOL WINAPI SymMatchStringW(PCWSTR, PCWSTR, BOOL); 01127 BOOL WINAPI SymSearch(HANDLE, ULONG64, DWORD, DWORD, PCSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID, DWORD); 01128 BOOL WINAPI SymSearchW(HANDLE, ULONG64, DWORD, DWORD, PCWSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID, DWORD); 01129 DWORD WINAPI UnDecorateSymbolName(PCSTR, PSTR, DWORD, DWORD); 01130 DWORD WINAPI UnDecorateSymbolNameW(PCWSTR, PWSTR, DWORD, DWORD); 01131 BOOL WINAPI SymGetScope(HANDLE, ULONG64, DWORD, PSYMBOL_INFO); 01132 BOOL WINAPI SymGetScopeW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW); 01133 BOOL WINAPI SymFromIndex(HANDLE, ULONG64, DWORD, PSYMBOL_INFO); 01134 BOOL WINAPI SymFromIndexW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW); 01135 BOOL WINAPI SymAddSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD, DWORD); 01136 BOOL WINAPI SymAddSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD, DWORD); 01137 BOOL WINAPI SymDeleteSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD); 01138 BOOL WINAPI SymDeleteSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD); 01139 01140 /************************* 01141 * Source Files * 01142 *************************/ 01143 typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(PSOURCEFILE, PVOID); 01144 typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)(PSOURCEFILEW, PVOID); 01145 01146 BOOL WINAPI SymEnumSourceFiles(HANDLE, ULONG64, PCSTR, PSYM_ENUMSOURCEFILES_CALLBACK, 01147 PVOID); 01148 BOOL WINAPI SymEnumSourceFilesW(HANDLE, ULONG64, PCWSTR, PSYM_ENUMSOURCEFILES_CALLBACKW, PVOID); 01149 BOOL WINAPI SymGetLineFromAddr64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINE64); 01150 BOOL WINAPI SymGetLineFromAddrW64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINEW64); 01151 BOOL WINAPI SymGetLinePrev64(HANDLE, PIMAGEHLP_LINE64); 01152 BOOL WINAPI SymGetLinePrevW64(HANDLE, PIMAGEHLP_LINEW64); 01153 BOOL WINAPI SymGetLineNext64(HANDLE, PIMAGEHLP_LINE64); 01154 BOOL WINAPI SymGetLineNextW64(HANDLE, PIMAGEHLP_LINEW64); 01155 BOOL WINAPI SymGetLineFromName64(HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE64); 01156 BOOL WINAPI SymGetLineFromNameW64(HANDLE, PCWSTR, PCWSTR, DWORD, PLONG, PIMAGEHLP_LINEW64); 01157 ULONG WINAPI SymGetFileLineOffsets64(HANDLE, PCSTR, PCSTR, PDWORD64, ULONG); 01158 BOOL WINAPI SymGetSourceFile(HANDLE, ULONG64, PCSTR, PCSTR, PSTR, DWORD); 01159 BOOL WINAPI SymGetSourceFileW(HANDLE, ULONG64, PCWSTR, PCWSTR, PWSTR, DWORD); 01160 BOOL WINAPI SymGetSourceFileToken(HANDLE, ULONG64, PCSTR, PVOID*, DWORD*); 01161 BOOL WINAPI SymGetSourceFileTokenW(HANDLE, ULONG64, PCWSTR, PVOID*, DWORD*); 01162 BOOL WINAPI SymGetSourceFileFromToken(HANDLE, PVOID, PCSTR, PSTR, DWORD); 01163 BOOL WINAPI SymGetSourceFileFromTokenW(HANDLE, PVOID, PCWSTR, PWSTR, DWORD); 01164 BOOL WINAPI SymGetSourceVarFromToken(HANDLE, PVOID, PCSTR, PCSTR, PSTR, DWORD); 01165 BOOL WINAPI SymGetSourceVarFromTokenW(HANDLE, PVOID, PCWSTR, PCWSTR, PWSTR, DWORD); 01166 01167 typedef struct _SRCCODEINFO 01168 { 01169 DWORD SizeOfStruct; 01170 PVOID Key; 01171 DWORD64 ModBase; 01172 CHAR Obj[MAX_PATH+1]; 01173 CHAR FileName[MAX_PATH+1]; 01174 DWORD LineNumber; 01175 DWORD64 Address; 01176 } SRCCODEINFO, *PSRCCODEINFO; 01177 01178 typedef struct _SRCCODEINFOW 01179 { 01180 DWORD SizeOfStruct; 01181 PVOID Key; 01182 DWORD64 ModBase; 01183 WCHAR Obj[MAX_PATH+1]; 01184 WCHAR FileName[MAX_PATH+1]; 01185 DWORD LineNumber; 01186 DWORD64 Address; 01187 } SRCCODEINFOW, *PSRCCODEINFOW; 01188 01189 typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACK)(PSRCCODEINFO, PVOID); 01190 typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACKW)(PSRCCODEINFOW, PVOID); 01191 BOOL WINAPI SymEnumLines(HANDLE, ULONG64, PCSTR, PCSTR, PSYM_ENUMLINES_CALLBACK, PVOID); 01192 BOOL WINAPI SymEnumLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, PSYM_ENUMLINES_CALLBACKW, PVOID); 01193 BOOL WINAPI SymEnumSourceLines(HANDLE, ULONG64, PCSTR, PCSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACK, PVOID); 01194 BOOL WINAPI SymEnumSourceLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACKW, PVOID); 01195 01196 /************************* 01197 * File & image handling * 01198 *************************/ 01199 BOOL WINAPI SymInitialize(HANDLE, PCSTR, BOOL); 01200 BOOL WINAPI SymInitializeW(HANDLE, PCWSTR, BOOL); 01201 BOOL WINAPI SymCleanup(HANDLE); 01202 01203 HANDLE WINAPI FindDebugInfoFile(PCSTR, PCSTR, PSTR); 01204 typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(HANDLE, PCSTR, PVOID); 01205 typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)(HANDLE, PCWSTR, PVOID); 01206 HANDLE WINAPI FindDebugInfoFileEx(PCSTR, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID); 01207 HANDLE WINAPI FindDebugInfoFileExW(PCWSTR, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID); 01208 HANDLE WINAPI SymFindDebugInfoFile(HANDLE, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID); 01209 HANDLE WINAPI SymFindDebugInfoFileW(HANDLE, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID); 01210 typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(PCSTR, PVOID); 01211 typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACKW)(PCWSTR, PVOID); 01212 BOOL WINAPI FindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD, 01213 PSTR, PFINDFILEINPATHCALLBACK, PVOID); 01214 BOOL WINAPI SymFindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD, 01215 PSTR, PFINDFILEINPATHCALLBACK, PVOID); 01216 BOOL WINAPI SymFindFileInPathW(HANDLE, PCWSTR, PCWSTR, PVOID, DWORD, DWORD, DWORD, 01217 PWSTR, PFINDFILEINPATHCALLBACKW, PVOID); 01218 HANDLE WINAPI FindExecutableImage(PCSTR, PCSTR, PSTR); 01219 typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(HANDLE, PCSTR, PVOID); 01220 typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACKW)(HANDLE, PCWSTR, PVOID); 01221 HANDLE WINAPI FindExecutableImageEx(PCSTR, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID); 01222 HANDLE WINAPI FindExecutableImageExW(PCWSTR, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID); 01223 HANDLE WINAPI SymFindExecutableImage(HANDLE, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID); 01224 HANDLE WINAPI SymFindExecutableImageW(HANDLE, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID); 01225 PIMAGE_NT_HEADERS WINAPI ImageNtHeader(PVOID); 01226 PVOID WINAPI ImageDirectoryEntryToDataEx(PVOID, BOOLEAN, USHORT, PULONG, 01227 PIMAGE_SECTION_HEADER *); 01228 PVOID WINAPI ImageDirectoryEntryToData(PVOID, BOOLEAN, USHORT, PULONG); 01229 PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(PIMAGE_NT_HEADERS, PVOID, ULONG); 01230 PVOID WINAPI ImageRvaToVa(PIMAGE_NT_HEADERS, PVOID, ULONG, PIMAGE_SECTION_HEADER*); 01231 BOOL WINAPI SymGetSearchPath(HANDLE, PSTR, DWORD); 01232 BOOL WINAPI SymGetSearchPathW(HANDLE, PWSTR, DWORD); 01233 BOOL WINAPI SymSetSearchPath(HANDLE, PCSTR); 01234 BOOL WINAPI SymSetSearchPathW(HANDLE, PCWSTR); 01235 DWORD WINAPI GetTimestampForLoadedLibrary(HMODULE); 01236 BOOL WINAPI MakeSureDirectoryPathExists(PCSTR); 01237 BOOL WINAPI SearchTreeForFile(PCSTR, PCSTR, PSTR); 01238 BOOL WINAPI SearchTreeForFileW(PCWSTR, PCWSTR, PWSTR); 01239 typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(PCSTR, PVOID); 01240 typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACKW)(PCWSTR, PVOID); 01241 BOOL WINAPI EnumDirTree(HANDLE, PCSTR, PCSTR, PSTR, PENUMDIRTREE_CALLBACK, PVOID); 01242 BOOL WINAPI EnumDirTreeW(HANDLE, PCWSTR, PCWSTR, PWSTR, PENUMDIRTREE_CALLBACKW, PVOID); 01243 BOOL WINAPI SymMatchFileName(PCSTR, PCSTR, PSTR*, PSTR*); 01244 BOOL WINAPI SymMatchFileNameW(PCWSTR, PCWSTR, PWSTR*, PWSTR*); 01245 PCHAR WINAPI SymSetHomeDirectory(HANDLE, PCSTR); 01246 PWSTR WINAPI SymSetHomeDirectoryW(HANDLE, PCWSTR); 01247 PCHAR WINAPI SymGetHomeDirectory(DWORD, PSTR, size_t); 01248 PWSTR WINAPI SymGetHomeDirectoryW(DWORD, PWSTR, size_t); 01249 #define hdBase 0 01250 #define hdSym 1 01251 #define hdSrc 2 01252 #define hdMax 3 01253 01254 /************************* 01255 * Context management * 01256 *************************/ 01257 BOOL WINAPI SymSetContext(HANDLE, PIMAGEHLP_STACK_FRAME, PIMAGEHLP_CONTEXT); 01258 01259 01260 /************************* 01261 * Stack management * 01262 *************************/ 01263 01264 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) 01265 #define KDHELP KDHELP64 01266 #define PKDHELP PKDHELP64 01267 #else 01268 typedef struct _KDHELP 01269 { 01270 DWORD Thread; 01271 DWORD ThCallbackStack; 01272 DWORD NextCallback; 01273 DWORD FramePointer; 01274 DWORD KiCallUserMode; 01275 DWORD KeUserCallbackDispatcher; 01276 DWORD SystemRangeStart; 01277 } KDHELP, *PKDHELP; 01278 #endif 01279 01280 typedef struct _KDHELP64 01281 { 01282 DWORD64 Thread; 01283 DWORD ThCallbackStack; 01284 DWORD ThCallbackBStore; 01285 DWORD NextCallback; 01286 DWORD FramePointer; 01287 DWORD64 KiCallUserMode; 01288 DWORD64 KeUserCallbackDispatcher; 01289 DWORD64 SystemRangeStart; 01290 DWORD64 Reserved[8]; 01291 } KDHELP64, *PKDHELP64; 01292 01293 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) 01294 #define STACKFRAME STACKFRAME64 01295 #define LPSTACKFRAME LPSTACKFRAME64 01296 #else 01297 typedef struct _STACKFRAME 01298 { 01299 ADDRESS AddrPC; 01300 ADDRESS AddrReturn; 01301 ADDRESS AddrFrame; 01302 ADDRESS AddrStack; 01303 PVOID FuncTableEntry; 01304 DWORD Params[4]; 01305 BOOL Far; 01306 BOOL Virtual; 01307 DWORD Reserved[3]; 01308 KDHELP KdHelp; 01309 ADDRESS AddrBStore; 01310 } STACKFRAME, *LPSTACKFRAME; 01311 #endif 01312 01313 typedef struct _STACKFRAME64 01314 { 01315 ADDRESS64 AddrPC; 01316 ADDRESS64 AddrReturn; 01317 ADDRESS64 AddrFrame; 01318 ADDRESS64 AddrStack; 01319 ADDRESS64 AddrBStore; 01320 PVOID FuncTableEntry; 01321 DWORD64 Params[4]; 01322 BOOL Far; 01323 BOOL Virtual; 01324 DWORD64 Reserved[3]; 01325 KDHELP64 KdHelp; 01326 } STACKFRAME64, *LPSTACKFRAME64; 01327 01328 typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE64) 01329 (HANDLE, DWORD64, PVOID, DWORD, PDWORD); 01330 typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE64)(HANDLE, DWORD64); 01331 typedef DWORD64 (CALLBACK *PGET_MODULE_BASE_ROUTINE64)(HANDLE, DWORD64); 01332 typedef DWORD64 (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE64)(HANDLE, HANDLE, LPADDRESS64); 01333 BOOL WINAPI StackWalk64(DWORD, HANDLE, HANDLE, LPSTACKFRAME64, PVOID, 01334 PREAD_PROCESS_MEMORY_ROUTINE64, 01335 PFUNCTION_TABLE_ACCESS_ROUTINE64, 01336 PGET_MODULE_BASE_ROUTINE64, 01337 PTRANSLATE_ADDRESS_ROUTINE64); 01338 01339 PVOID WINAPI SymFunctionTableAccess64(HANDLE, DWORD64); 01340 01341 typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(HANDLE, ULONG64, ULONG64); 01342 01343 BOOL WINAPI SymRegisterFunctionEntryCallback64(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK64, ULONG64); 01344 01345 /************************* 01346 * Version, global stuff * 01347 *************************/ 01348 01349 #define API_VERSION_NUMBER 9 01350 01351 typedef struct API_VERSION 01352 { 01353 USHORT MajorVersion; 01354 USHORT MinorVersion; 01355 USHORT Revision; 01356 USHORT Reserved; 01357 } API_VERSION, *LPAPI_VERSION; 01358 01359 LPAPI_VERSION WINAPI ImagehlpApiVersion(void); 01360 LPAPI_VERSION WINAPI ImagehlpApiVersionEx(LPAPI_VERSION); 01361 01362 typedef struct _IMAGE_DEBUG_INFORMATION 01363 { 01364 LIST_ENTRY List; 01365 DWORD ReservedSize; 01366 PVOID ReservedMappedBase; 01367 USHORT ReservedMachine; 01368 USHORT ReservedCharacteristics; 01369 DWORD ReservedCheckSum; 01370 DWORD ImageBase; 01371 DWORD SizeOfImage; 01372 DWORD ReservedNumberOfSections; 01373 PIMAGE_SECTION_HEADER ReservedSections; 01374 DWORD ReservedExportedNamesSize; 01375 PSTR ReservedExportedNames; 01376 DWORD ReservedNumberOfFunctionTableEntries; 01377 PIMAGE_FUNCTION_ENTRY ReservedFunctionTableEntries; 01378 DWORD ReservedLowestFunctionStartingAddress; 01379 DWORD ReservedHighestFunctionEndingAddress; 01380 DWORD ReservedNumberOfFpoTableEntries; 01381 PFPO_DATA ReservedFpoTableEntries; 01382 DWORD SizeOfCoffSymbols; 01383 PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols; 01384 DWORD ReservedSizeOfCodeViewSymbols; 01385 PVOID ReservedCodeViewSymbols; 01386 PSTR ImageFilePath; 01387 PSTR ImageFileName; 01388 PSTR ReservedDebugFilePath; 01389 DWORD ReservedTimeDateStamp; 01390 BOOL ReservedRomImage; 01391 PIMAGE_DEBUG_DIRECTORY ReservedDebugDirectory; 01392 DWORD ReservedNumberOfDebugDirectories; 01393 DWORD ReservedOriginalFunctionTableBaseAddress; 01394 DWORD Reserved[ 2 ]; 01395 } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION; 01396 01397 01398 PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(HANDLE, PCSTR, PCSTR, ULONG); 01399 01400 BOOL WINAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); 01401 01402 DWORD WINAPI SymGetOptions(void); 01403 DWORD WINAPI SymSetOptions(DWORD); 01404 01405 BOOL WINAPI SymSetParentWindow(HWND); 01406 01407 /************************* 01408 * Version, global stuff * 01409 *************************/ 01410 01411 typedef BOOL (WINAPI* PSYMBOLSERVERPROC)(PCSTR, PCSTR, PVOID, DWORD, DWORD, PSTR); 01412 typedef BOOL (WINAPI* PSYMBOLSERVERPROCA)(PCSTR, PCSTR, PVOID, DWORD, DWORD, PSTR); 01413 typedef BOOL (WINAPI* PSYMBOLSERVERPROCW)(PCWSTR, PCWSTR, PVOID, DWORD, DWORD, PWSTR); 01414 typedef BOOL (WINAPI* PSYMBOLSERVEROPENPROC)(void); 01415 typedef BOOL (WINAPI* PSYMBOLSERVERCLOSEPROC)(void); 01416 typedef BOOL (WINAPI* PSYMBOLSERVERSETOPTIONSPROC)(UINT_PTR, ULONG64); 01417 typedef BOOL (CALLBACK* PSYMBOLSERVERCALLBACKPROC)(UINT_PTR, ULONG64, ULONG64); 01418 typedef UINT_PTR (WINAPI* PSYMBOLSERVERGETOPTIONSPROC)(void); 01419 typedef BOOL (WINAPI* PSYMBOLSERVERPINGPROC)(PCSTR); 01420 typedef BOOL (WINAPI* PSYMBOLSERVERPINGPROCA)(PCSTR); 01421 typedef BOOL (WINAPI* PSYMBOLSERVERPINGPROCW)(PCWSTR); 01422 01423 #define SSRVOPT_CALLBACK 0x0001 01424 #define SSRVOPT_DWORD 0x0002 01425 #define SSRVOPT_DWORDPTR 0x0004 01426 #define SSRVOPT_GUIDPTR 0x0008 01427 #define SSRVOPT_OLDGUIDPTR 0x0010 01428 #define SSRVOPT_UNATTENDED 0x0020 01429 #define SSRVOPT_NOCOPY 0x0040 01430 #define SSRVOPT_PARENTWIN 0x0080 01431 #define SSRVOPT_PARAMTYPE 0x0100 01432 #define SSRVOPT_SECURE 0x0200 01433 #define SSRVOPT_TRACE 0x0400 01434 #define SSRVOPT_SETCONTEXT 0x0800 01435 #define SSRVOPT_PROXY 0x1000 01436 #define SSRVOPT_DOWNSTREAM_STORE 0x2000 01437 #define SSRVOPT_RESET ((ULONG_PTR)-1) 01438 01439 #define SSRVACTION_TRACE 1 01440 #define SSRVACTION_QUERYCANCEL 2 01441 #define SSRVACTION_EVENT 3 01442 01443 /* 32-bit functions */ 01444 01445 #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) 01446 01447 #define PENUMLOADED_MODULES_CALLBACK PENUMLOADED_MODULES_CALLBACK64 01448 #define PFUNCTION_TABLE_ACCESS_ROUTINE PFUNCTION_TABLE_ACCESS_ROUTINE64 01449 #define PGET_MODULE_BASE_ROUTINE PGET_MODULE_BASE_ROUTINE64 01450 #define PREAD_PROCESS_MEMORY_ROUTINE PREAD_PROCESS_MEMORY_ROUTINE64 01451 #define PSYMBOL_FUNCENTRY_CALLBACK PSYMBOL_FUNCENTRY_CALLBACK64 01452 #define PSYMBOL_REGISTERED_CALLBACK PSYMBOL_REGISTERED_CALLBACK64 01453 #define PSYM_ENUMMODULES_CALLBACK PSYM_ENUMMODULES_CALLBACK64 01454 #define PSYM_ENUMSYMBOLS_CALLBACK PSYM_ENUMSYMBOLS_CALLBACK64 01455 #define PSYM_ENUMSYMBOLS_CALLBACKW PSYM_ENUMSYMBOLS_CALLBACKW64 01456 #define PTRANSLATE_ADDRESS_ROUTINE PTRANSLATE_ADDRESS_ROUTINE64 01457 01458 #define EnumerateLoadedModules EnumerateLoadedModules64 01459 #define StackWalk StackWalk64 01460 #define SymEnumerateModules SymEnumerateModules64 01461 #define SymEnumerateSymbols SymEnumerateSymbols64 01462 #define SymEnumerateSymbolsW SymEnumerateSymbolsW64 01463 #define SymFunctionTableAccess SymFunctionTableAccess64 01464 #define SymGetLineFromAddr SymGetLineFromAddr64 01465 #define SymGetLineFromAddrW SymGetLineFromAddrW64 01466 #define SymGetLineFromName SymGetLineFromName64 01467 #define SymGetLineNext SymGetLineNext64 01468 #define SymGetLineNextW SymGetLineNextW64 01469 #define SymGetLinePrev SymGetLinePrev64 01470 #define SymGetLinePrevW SymGetLinePrevW64 01471 #define SymGetModuleBase SymGetModuleBase64 01472 #define SymGetModuleInfo SymGetModuleInfo64 01473 #define SymGetModuleInfoW SymGetModuleInfoW64 01474 #define SymGetSymFromAddr SymGetSymFromAddr64 01475 #define SymGetSymFromName SymGetSymFromName64 01476 #define SymGetSymNext SymGetSymNext64 01477 #define SymGetSymNextW SymGetSymNextW64 01478 #define SymGetSymPrev SymGetSymPrev64 01479 #define SymGetSymPrevW SymGetSymPrevW64 01480 #define SymLoadModule SymLoadModule64 01481 #define SymRegisterCallback SymRegisterCallback64 01482 #define SymRegisterFunctionEntryCallback SymRegisterFunctionEntryCallback64 01483 #define SymUnDName SymUnDName64 01484 #define SymUnloadModule SymUnloadModule64 01485 01486 #else 01487 01488 typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(PCSTR, ULONG, ULONG, PVOID); 01489 typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE, DWORD); 01490 typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)(HANDLE, DWORD); 01491 typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE, DWORD, PVOID, DWORD, PDWORD); 01492 typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(PCSTR, ULONG, PVOID); 01493 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(PCSTR, ULONG, ULONG, PVOID); 01494 typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(PCWSTR, ULONG, ULONG, PVOID); 01495 typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE, ULONG, PVOID, PVOID); 01496 typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(HANDLE, DWORD, PVOID); 01497 typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(HANDLE, HANDLE, LPADDRESS); 01498 01499 BOOL WINAPI EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, PVOID); 01500 BOOL WINAPI StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, PVOID, PREAD_PROCESS_MEMORY_ROUTINE, PFUNCTION_TABLE_ACCESS_ROUTINE, PGET_MODULE_BASE_ROUTINE, PTRANSLATE_ADDRESS_ROUTINE); 01501 BOOL WINAPI SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID); 01502 BOOL WINAPI SymEnumerateSymbols(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACK, PVOID); 01503 BOOL WINAPI SymEnumerateSymbolsW(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACKW, PVOID); 01504 PVOID WINAPI SymFunctionTableAccess(HANDLE, DWORD); 01505 BOOL WINAPI SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE); 01506 BOOL WINAPI SymGetLineFromAddrW(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINEW); 01507 BOOL WINAPI SymGetLineFromName(HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE); 01508 BOOL WINAPI SymGetLineNext(HANDLE, PIMAGEHLP_LINE); 01509 BOOL WINAPI SymGetLineNextW(HANDLE, PIMAGEHLP_LINEW); 01510 BOOL WINAPI SymGetLinePrev(HANDLE, PIMAGEHLP_LINE); 01511 BOOL WINAPI SymGetLinePrevW(HANDLE, PIMAGEHLP_LINEW); 01512 DWORD WINAPI SymGetModuleBase(HANDLE, DWORD); 01513 BOOL WINAPI SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE); 01514 BOOL WINAPI SymGetModuleInfoW(HANDLE, DWORD, PIMAGEHLP_MODULEW); 01515 BOOL WINAPI SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL); 01516 BOOL WINAPI SymGetSymFromName(HANDLE, PCSTR, PIMAGEHLP_SYMBOL); 01517 BOOL WINAPI SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL); 01518 BOOL WINAPI SymGetSymNextW(HANDLE, PIMAGEHLP_SYMBOLW); 01519 BOOL WINAPI SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL); 01520 BOOL WINAPI SymGetSymPrevW(HANDLE, PIMAGEHLP_SYMBOLW); 01521 DWORD WINAPI SymLoadModule(HANDLE, HANDLE, PCSTR, PCSTR, DWORD, DWORD); 01522 BOOL WINAPI SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID); 01523 BOOL WINAPI SymRegisterFunctionEntryCallback(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK, PVOID); 01524 BOOL WINAPI SymRefreshModuleList(HANDLE); 01525 BOOL WINAPI SymUnDName(PIMAGEHLP_SYMBOL, PSTR, DWORD); 01526 BOOL WINAPI SymUnloadModule(HANDLE, DWORD); 01527 01528 #endif 01529 01530 #ifdef __cplusplus 01531 } /* extern "C" */ 01532 #endif /* defined(__cplusplus) */ 01533 01534 #endif /* __WINE_DBGHELP_H */ Generated on Fri May 25 2012 04:29:52 for ReactOS by
1.7.6.1
|