|  dbghelp.h (5.2.3790.1830-Windows 5.0)  |   |  dbghelp.h (6.0.6001.18000-Windows 6.0)  | 
 
       | 
      | /*++ BUILD Version: 0001     Increment this if a change has global effects |   | /*++ BUILD Version: 0000     Increment this if a change has global effects | 
       |   |  | 
      | Copyright (c) Microsoft Corporation. All rights reserved. |   | Copyright (c) Microsoft Corporation. All rights reserved. | 
       |   |  | 
      | Module Name: |   | Module Name: | 
       |   |  | 
      |     dbghelp.h |   |     dbghelp.h | 
       |   |  | 
      | Abstract: |   | Abstract: | 
       |   |  | 
      |     This module defines the prototypes and constants required for the image |   |     This module defines the prototypes and constants required for the image | 
       |   |  | 
      | skipping to change at line 38 |   | skipping to change at line 38 | 
      | // of every API, if a choice exists.  The 64 bit version |   | // of every API, if a choice exists.  The 64 bit version | 
      | // works great on 32 bit platforms, and is forward |   | // works great on 32 bit platforms, and is forward | 
      | // compatible to 64 bit platforms. |   | // compatible to 64 bit platforms. | 
       |   |  | 
      | #ifdef _WIN64 |   | #ifdef _WIN64 | 
      | #ifndef _IMAGEHLP64 |   | #ifndef _IMAGEHLP64 | 
      | #define _IMAGEHLP64 |   | #define _IMAGEHLP64 | 
      | #endif |   | #endif | 
      | #endif |   | #endif | 
       |   |  | 
       | 
       |   | // for those without specstrings.h | 
       |   |  | 
       |   | #ifndef __specstrings | 
       |   |  #define __in | 
       |   |  #define __out | 
       |   |  #define __inout | 
       |   |  #define __in_opt | 
       |   |  #define __out_opt | 
       |   |  #define __inout_opt | 
       |   |  #define __in_ecount(x) | 
       |   |  #define __out_ecount(x) | 
       |   |  #define __inout_ecount(x) | 
       |   |  #define __in_bcount(x) | 
       |   |  #define __out_bcount(x) | 
       |   |  #define __inout_bcount(x) | 
       |   |  #define __out_xcount(x) | 
       |   |  #define __deref_opt_out | 
       |   |  #define __deref_out | 
       |   | #endif | 
       |   |                                                                                  | 
      | #ifdef __cplusplus |   | #ifdef __cplusplus | 
      | extern "C" { |   | extern "C" { | 
      | #endif |   | #endif | 
       |   |  | 
      | #ifdef _IMAGEHLP_SOURCE_ |   | #ifdef _IMAGEHLP_SOURCE_ | 
      |  #define IMAGEAPI __stdcall |   |  #define IMAGEAPI __stdcall | 
      |  #define DBHLP_DEPRECIATED |   |  #define DBHLP_DEPRECIATED | 
      | #else |   | #else | 
      |  #define IMAGEAPI DECLSPEC_IMPORT __stdcall |   |  #define IMAGEAPI DECLSPEC_IMPORT __stdcall | 
      |  #if (_MSC_VER >= 1300) && !defined(MIDL_PASS) |   |  #if (_MSC_VER >= 1300) && !defined(MIDL_PASS) | 
      |   #define DBHLP_DEPRECIATED   __declspec(deprecated) |   |   #define DBHLP_DEPRECIATED   __declspec(deprecated) | 
      |  #else |   |  #else | 
      |   #define DBHLP_DEPRECIATED |   |   #define DBHLP_DEPRECIATED | 
      |  #endif |   |  #endif | 
      | #endif |   | #endif | 
       |   |  | 
      | #define DBHLPAPI IMAGEAPI |   | #define DBHLPAPI IMAGEAPI | 
       |   |  | 
      | #define IMAGE_SEPARATION (64*1024) |   | #define IMAGE_SEPARATION (64*1024) | 
       |   |  | 
       | 
       |   | // Observant readers may notice that 2 new fields, | 
       |   | // 'fReadOnly' and 'Version' have been added to | 
       |   | // the LOADED_IMAGE structure after 'fDOSImage'. | 
       |   | // This does not change the size of the structure | 
       |   | // from previous headers.  That is because while | 
       |   | // 'fDOSImage' is a byte, it is padded by the | 
       |   | // compiler to 4 bytes.  So the 2 new fields are | 
       |   | // slipped into the extra space. | 
       |   |                                                                                  | 
      | typedef struct _LOADED_IMAGE { |   | typedef struct _LOADED_IMAGE { | 
      |     PSTR                  ModuleName; |   |     PSTR                  ModuleName; | 
      |     HANDLE                hFile; |   |     HANDLE                hFile; | 
      |     PUCHAR                MappedAddress; |   |     PUCHAR                MappedAddress; | 
      | #ifdef _IMAGEHLP64 |   | #ifdef _IMAGEHLP64 | 
      |     PIMAGE_NT_HEADERS64   FileHeader; |   |     PIMAGE_NT_HEADERS64   FileHeader; | 
      | #else |   | #else | 
      |     PIMAGE_NT_HEADERS32   FileHeader; |   |     PIMAGE_NT_HEADERS32   FileHeader; | 
      | #endif |   | #endif | 
      |     PIMAGE_SECTION_HEADER LastRvaSection; |   |     PIMAGE_SECTION_HEADER LastRvaSection; | 
      |     ULONG                 NumberOfSections; |   |     ULONG                 NumberOfSections; | 
      |     PIMAGE_SECTION_HEADER Sections; |   |     PIMAGE_SECTION_HEADER Sections; | 
      |     ULONG                 Characteristics; |   |     ULONG                 Characteristics; | 
      |     BOOLEAN               fSystemImage; |   |     BOOLEAN               fSystemImage; | 
      |     BOOLEAN               fDOSImage; |   |     BOOLEAN               fDOSImage; | 
       | 
       |   |     BOOLEAN               fReadOnly; | 
       |   |     UCHAR                 Version; | 
      |     LIST_ENTRY            Links; |   |     LIST_ENTRY            Links; | 
      |     ULONG                 SizeOfImage; |   |     ULONG                 SizeOfImage; | 
      | } LOADED_IMAGE, *PLOADED_IMAGE; |   | } LOADED_IMAGE, *PLOADED_IMAGE; | 
       |   |  | 
      | #define MAX_SYM_NAME            2000 |   | #define MAX_SYM_NAME            2000 | 
       |   |  | 
       | 
       |   | // Error codes set by dbghelp functions.  Call GetLastError | 
       |   | // to see them. | 
       |   | // Dbghelp also sets error codes found in winerror.h | 
       |   |  | 
       |   | #define ERROR_IMAGE_NOT_STRIPPED    0x8800  // the image is not stripped.  No db | 
       |   | g file available. | 
       |   | #define ERROR_NO_DBG_POINTER        0x8801  // image is stripped but there is no | 
       |   |  pointer to a dbg file | 
       |   | #define ERROR_NO_PDB_POINTER        0x8802  // image does not point to a pdb fil | 
       |   | e | 
       |   |  | 
       |   | typedef BOOL | 
       |   | (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)( | 
       |   |     __in HANDLE FileHandle, | 
       |   |     __in PCSTR FileName, | 
       |   |     __in PVOID CallerData | 
       |   |     ); | 
       |   |                                                                                  | 
      | HANDLE |   | HANDLE | 
      | IMAGEAPI |   | IMAGEAPI | 
       | 
      | FindDebugInfoFile ( |   | SymFindDebugInfoFile( | 
      |     PSTR FileName, |   |     __in HANDLE hProcess, | 
      |     PSTR SymbolPath, |   |     __in PCSTR FileName, | 
      |     PSTR DebugFilePath |   |     __out_ecount(MAX_PATH + 1) PSTR DebugFilePath, | 
       |   |     __in_opt PFIND_DEBUG_FILE_CALLBACK Callback, | 
       |   |     __in_opt PVOID CallerData | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef BOOL |   | typedef BOOL | 
       | 
      | (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)( |   | (CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)( | 
      |     HANDLE FileHandle, |   |     __in HANDLE FileHandle, | 
      |     PSTR FileName, |   |     __in PCWSTR FileName, | 
      |     PVOID CallerData |   |     __in PVOID  CallerData | 
       |   |     ); | 
       |   |  | 
       |   | HANDLE | 
       |   | IMAGEAPI | 
       |   | SymFindDebugInfoFileW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in PCWSTR FileName, | 
       |   |     __out_ecount(MAX_PATH + 1) PWSTR DebugFilePath, | 
       |   |     __in_opt PFIND_DEBUG_FILE_CALLBACKW Callback, | 
       |   |     __in_opt PVOID CallerData | 
       |   |     ); | 
       |   |  | 
       |   | HANDLE | 
       |   | IMAGEAPI | 
       |   | FindDebugInfoFile ( | 
       |   |     __in PCSTR FileName, | 
       |   |     __in PCSTR SymbolPath, | 
       |   |     __out_ecount(MAX_PATH + 1) PSTR DebugFilePath | 
      |     ); |   |     ); | 
       |   |  | 
      | HANDLE |   | HANDLE | 
      | IMAGEAPI |   | IMAGEAPI | 
      | FindDebugInfoFileEx ( |   | FindDebugInfoFileEx ( | 
       | 
      |     PSTR FileName, |   |     __in PCSTR FileName, | 
      |     PSTR SymbolPath, |   |     __in PCSTR SymbolPath, | 
      |     PSTR DebugFilePath, |   |     __out_ecount(MAX_PATH + 1) PSTR  DebugFilePath, | 
      |     PFIND_DEBUG_FILE_CALLBACK Callback, |   |     __in_opt PFIND_DEBUG_FILE_CALLBACK Callback, | 
      |     PVOID CallerData |   |     __in_opt PVOID CallerData | 
       |   |     ); | 
       |   |  | 
       |   | HANDLE | 
       |   | IMAGEAPI | 
       |   | FindDebugInfoFileExW ( | 
       |   |     __in PCWSTR FileName, | 
       |   |     __in PCWSTR SymbolPath, | 
       |   |     __out_ecount(MAX_PATH + 1) PWSTR DebugFilePath, | 
       |   |     __in_opt PFIND_DEBUG_FILE_CALLBACKW Callback, | 
       |   |     __in_opt PVOID CallerData | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef BOOL |   | typedef BOOL | 
      | (CALLBACK *PFINDFILEINPATHCALLBACK)( |   | (CALLBACK *PFINDFILEINPATHCALLBACK)( | 
       | 
      |     PSTR  filename, |   |     PCSTR filename, | 
      |     PVOID context |   |     PVOID context | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymFindFileInPath( |   | SymFindFileInPath( | 
       | 
      |     HANDLE hprocess, |   |     __in HANDLE hprocess, | 
      |     LPSTR  SearchPath, |   |     __in_opt PCSTR SearchPath, | 
      |     LPSTR  FileName, |   |     __in PCSTR FileName, | 
      |     PVOID  id, |   |     __in_opt PVOID id, | 
      |     DWORD  two, |   |     __in DWORD two, | 
      |     DWORD  three, |   |     __in DWORD three, | 
      |     DWORD  flags, |   |     __in DWORD flags, | 
      |     LPSTR  FoundFile, |   |     __out_ecount(MAX_PATH + 1) PSTR FoundFile, | 
      |     PFINDFILEINPATHCALLBACK callback, |   |     __in_opt PFINDFILEINPATHCALLBACK callback, | 
      |     PVOID  context |   |     __in_opt PVOID context | 
      |     ); |   |     ); | 
       |   |  | 
       | 
      | HANDLE |   | typedef BOOL | 
       |   | (CALLBACK *PFINDFILEINPATHCALLBACKW)( | 
       |   |     __in PCWSTR filename, | 
       |   |     __in PVOID context | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
       | 
      | FindExecutableImage( |   | SymFindFileInPathW( | 
      |     PSTR FileName, |   |     __in HANDLE hprocess, | 
      |     PSTR SymbolPath, |   |     __in_opt PCWSTR SearchPath, | 
      |     PSTR ImageFilePath |   |     __in PCWSTR FileName, | 
       |   |     __in_opt PVOID id, | 
       |   |     __in DWORD two, | 
       |   |     __in DWORD three, | 
       |   |     __in DWORD flags, | 
       |   |     __out_ecount(MAX_PATH + 1) PWSTR FoundFile, | 
       |   |     __in_opt PFINDFILEINPATHCALLBACKW callback, | 
       |   |     __in_opt PVOID context | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef BOOL |   | typedef BOOL | 
      | (CALLBACK *PFIND_EXE_FILE_CALLBACK)( |   | (CALLBACK *PFIND_EXE_FILE_CALLBACK)( | 
       | 
      |     HANDLE FileHandle, |   |     __in HANDLE FileHandle, | 
      |     PSTR FileName, |   |     __in PCSTR FileName, | 
      |     PVOID CallerData |   |     __in_opt PVOID CallerData | 
       |   |     ); | 
       |   |  | 
       |   | HANDLE | 
       |   | IMAGEAPI | 
       |   | SymFindExecutableImage( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in PCSTR FileName, | 
       |   |     __out_ecount(MAX_PATH + 1) PSTR ImageFilePath, | 
       |   |     __in PFIND_EXE_FILE_CALLBACK Callback, | 
       |   |     __in PVOID CallerData | 
       |   |     ); | 
       |   |  | 
       |   | typedef BOOL | 
       |   | (CALLBACK *PFIND_EXE_FILE_CALLBACKW)( | 
       |   |     __in HANDLE FileHandle, | 
       |   |     __in PCWSTR FileName, | 
       |   |     __in_opt PVOID CallerData | 
       |   |     ); | 
       |   |  | 
       |   | HANDLE | 
       |   | IMAGEAPI | 
       |   | SymFindExecutableImageW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in PCWSTR FileName, | 
       |   |     __out_ecount(MAX_PATH + 1) PWSTR ImageFilePath, | 
       |   |     __in PFIND_EXE_FILE_CALLBACKW Callback, | 
       |   |     __in PVOID CallerData | 
       |   |     ); | 
       |   |  | 
       |   | HANDLE | 
       |   | IMAGEAPI | 
       |   | FindExecutableImage( | 
       |   |     __in PCSTR FileName, | 
       |   |     __in PCSTR SymbolPath, | 
       |   |     __out_ecount(MAX_PATH + 1) PSTR ImageFilePath | 
      |     ); |   |     ); | 
       |   |  | 
      | HANDLE |   | HANDLE | 
      | IMAGEAPI |   | IMAGEAPI | 
      | FindExecutableImageEx( |   | FindExecutableImageEx( | 
       | 
      |     PSTR FileName, |   |     __in PCSTR FileName, | 
      |     PSTR SymbolPath, |   |     __in PCSTR SymbolPath, | 
      |     PSTR ImageFilePath, |   |     __out_ecount(MAX_PATH + 1) PSTR ImageFilePath, | 
      |     PFIND_EXE_FILE_CALLBACK Callback, |   |     __in_opt PFIND_EXE_FILE_CALLBACK Callback, | 
      |     PVOID CallerData |   |     __in_opt PVOID CallerData | 
       |   |     ); | 
       |   |  | 
       |   | HANDLE | 
       |   | IMAGEAPI | 
       |   | FindExecutableImageExW( | 
       |   |     __in PCWSTR FileName, | 
       |   |     __in PCWSTR SymbolPath, | 
       |   |     __out_ecount(MAX_PATH + 1) PWSTR ImageFilePath, | 
       |   |     __in_opt PFIND_EXE_FILE_CALLBACKW Callback, | 
       |   |     __in PVOID CallerData | 
      |     ); |   |     ); | 
       |   |  | 
      | PIMAGE_NT_HEADERS |   | PIMAGE_NT_HEADERS | 
      | IMAGEAPI |   | IMAGEAPI | 
      | ImageNtHeader ( |   | ImageNtHeader ( | 
       | 
      |     IN PVOID Base |   |     __in PVOID Base | 
      |     ); |   |     ); | 
       |   |  | 
      | PVOID |   | PVOID | 
      | IMAGEAPI |   | IMAGEAPI | 
      | ImageDirectoryEntryToDataEx ( |   | ImageDirectoryEntryToDataEx ( | 
       | 
      |     IN PVOID Base, |   |     __in PVOID Base, | 
      |     IN BOOLEAN MappedAsImage, |   |     __in BOOLEAN MappedAsImage, | 
      |     IN USHORT DirectoryEntry, |   |     __in USHORT DirectoryEntry, | 
      |     OUT PULONG Size, |   |     __out PULONG Size, | 
      |     OUT PIMAGE_SECTION_HEADER *FoundHeader OPTIONAL |   |     __out_opt PIMAGE_SECTION_HEADER *FoundHeader | 
      |     ); |   |     ); | 
       |   |  | 
      | PVOID |   | PVOID | 
      | IMAGEAPI |   | IMAGEAPI | 
      | ImageDirectoryEntryToData ( |   | ImageDirectoryEntryToData ( | 
       | 
      |     IN PVOID Base, |   |     __in PVOID Base, | 
      |     IN BOOLEAN MappedAsImage, |   |     __in BOOLEAN MappedAsImage, | 
      |     IN USHORT DirectoryEntry, |   |     __in USHORT DirectoryEntry, | 
      |     OUT PULONG Size |   |     __out PULONG Size | 
      |     ); |   |     ); | 
       |   |  | 
      | PIMAGE_SECTION_HEADER |   | PIMAGE_SECTION_HEADER | 
      | IMAGEAPI |   | IMAGEAPI | 
      | ImageRvaToSection( |   | ImageRvaToSection( | 
       | 
      |     IN PIMAGE_NT_HEADERS NtHeaders, |   |     __in PIMAGE_NT_HEADERS NtHeaders, | 
      |     IN PVOID Base, |   |     __in PVOID Base, | 
      |     IN ULONG Rva |   |     __in ULONG Rva | 
      |     ); |   |     ); | 
       |   |  | 
      | PVOID |   | PVOID | 
      | IMAGEAPI |   | IMAGEAPI | 
      | ImageRvaToVa( |   | ImageRvaToVa( | 
       | 
      |     IN PIMAGE_NT_HEADERS NtHeaders, |   |     __in PIMAGE_NT_HEADERS NtHeaders, | 
      |     IN PVOID Base, |   |     __in PVOID Base, | 
      |     IN ULONG Rva, |   |     __in ULONG Rva, | 
      |     IN OUT PIMAGE_SECTION_HEADER *LastRvaSection |   |     __in_opt OUT PIMAGE_SECTION_HEADER *LastRvaSection | 
      |     ); |   |     ); | 
       |   |  | 
       | 
      | // Symbol server exports |   |  | 
       |   |  | 
      | typedef BOOL (WINAPI *PSYMBOLSERVERPROC)(LPCSTR, LPCSTR, PVOID, DWORD, DWORD, LP |   |  | 
      | STR); |   |  | 
      | typedef BOOL (WINAPI *PSYMBOLSERVEROPENPROC)(VOID); |   |  | 
      | typedef BOOL (WINAPI *PSYMBOLSERVERCLOSEPROC)(VOID); |   |  | 
      | typedef BOOL (WINAPI *PSYMBOLSERVERSETOPTIONSPROC)(UINT_PTR, ULONG64); |   |  | 
      | typedef BOOL (CALLBACK WINAPI *PSYMBOLSERVERCALLBACKPROC)(UINT_PTR action, ULONG |   |  | 
      | 64 data, ULONG64 context); |   |  | 
      | typedef UINT_PTR (WINAPI *PSYMBOLSERVERGETOPTIONSPROC)(); |   |  | 
      | typedef BOOL (WINAPI *PSYMBOLSERVERPINGPROC)(LPCSTR); |   |  | 
       |   |  | 
      | #define SSRVOPT_CALLBACK            0x0001 |   |  | 
      | #define SSRVOPT_DWORD               0x0002 |   |  | 
      | #define SSRVOPT_DWORDPTR            0x0004 |   |  | 
      | #define SSRVOPT_GUIDPTR             0x0008 |   |  | 
      | #define SSRVOPT_OLDGUIDPTR          0x0010 |   |  | 
      | #define SSRVOPT_UNATTENDED          0x0020 |   |  | 
      | #define SSRVOPT_NOCOPY              0x0040 |   |  | 
      | #define SSRVOPT_PARENTWIN           0x0080 |   |  | 
      | #define SSRVOPT_PARAMTYPE           0x0100 |   |  | 
      | #define SSRVOPT_SECURE              0x0200 |   |  | 
      | #define SSRVOPT_TRACE               0x0400 |   |  | 
      | #define SSRVOPT_SETCONTEXT          0x0800 |   |  | 
      | #define SSRVOPT_PROXY               0x1000 |   |  | 
      | #define SSRVOPT_DOWNSTREAM_STORE    0x2000 |   |  | 
      | #define SSRVOPT_RESET               ((ULONG_PTR)-1) |   |  | 
       |   |  | 
      | #define SSRVACTION_TRACE        1 |   |  | 
      | #define SSRVACTION_QUERYCANCEL  2 |   |  | 
      | #define SSRVACTION_EVENT        3 |   |  | 
      |                                                                                  |   |  | 
      | #ifndef _WIN64 |   | #ifndef _WIN64 | 
      | // This api won't be ported to Win64 - Fix your code. |   | // This api won't be ported to Win64 - Fix your code. | 
       |   |  | 
      | typedef struct _IMAGE_DEBUG_INFORMATION { |   | typedef struct _IMAGE_DEBUG_INFORMATION { | 
      |     LIST_ENTRY List; |   |     LIST_ENTRY List; | 
      |     DWORD ReservedSize; |   |     DWORD ReservedSize; | 
      |     PVOID ReservedMappedBase; |   |     PVOID ReservedMappedBase; | 
      |     USHORT ReservedMachine; |   |     USHORT ReservedMachine; | 
      |     USHORT ReservedCharacteristics; |   |     USHORT ReservedCharacteristics; | 
      |     DWORD ReservedCheckSum; |   |     DWORD ReservedCheckSum; | 
       |   |  | 
      | skipping to change at line 274 |   | skipping to change at line 378 | 
       |   |  | 
      |     DWORD ReservedOriginalFunctionTableBaseAddress; |   |     DWORD ReservedOriginalFunctionTableBaseAddress; | 
       |   |  | 
      |     DWORD Reserved[ 2 ]; |   |     DWORD Reserved[ 2 ]; | 
       |   |  | 
      | } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION; |   | } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION; | 
       |   |  | 
      | PIMAGE_DEBUG_INFORMATION |   | PIMAGE_DEBUG_INFORMATION | 
      | IMAGEAPI |   | IMAGEAPI | 
      | MapDebugInformation( |   | MapDebugInformation( | 
       | 
      |     HANDLE FileHandle, |   |     __in_opt HANDLE FileHandle, | 
      |     PSTR FileName, |   |     __in PCSTR FileName, | 
      |     PSTR SymbolPath, |   |     __in_opt PCSTR SymbolPath, | 
      |     DWORD ImageBase |   |     __in ULONG ImageBase | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | UnmapDebugInformation( |   | UnmapDebugInformation( | 
       | 
      |     PIMAGE_DEBUG_INFORMATION DebugInfo |   |     __out_xcount(unknown) PIMAGE_DEBUG_INFORMATION DebugInfo | 
      |     ); |   |     ); | 
       |   |  | 
      | #endif |   | #endif | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SearchTreeForFile( |   | SearchTreeForFile( | 
       | 
      |     PSTR RootPath, |   |     __in PCSTR RootPath, | 
      |     PSTR InputPathName, |   |     __in PCSTR InputPathName, | 
      |     PSTR OutputPathBuffer |   |     __out_ecount(MAX_PATH + 1) PSTR OutputPathBuffer | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SearchTreeForFileW( | 
       |   |     __in PCWSTR RootPath, | 
       |   |     __in PCWSTR InputPathName, | 
       |   |     __out_ecount(MAX_PATH + 1) PWSTR OutputPathBuffer | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef BOOL |   | typedef BOOL | 
      | (CALLBACK *PENUMDIRTREE_CALLBACK)( |   | (CALLBACK *PENUMDIRTREE_CALLBACK)( | 
       | 
      |     LPCSTR FilePath, |   |     __in PCSTR FilePath, | 
      |     PVOID  CallerData |   |     __in_opt PVOID CallerData | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | EnumDirTree( |   | EnumDirTree( | 
       | 
      |     HANDLE hProcess, |   |     __in HANDLE hProcess, | 
      |     PSTR   RootPath, |   |     __in PCSTR RootPath, | 
      |     PSTR   InputPathName, |   |     __in PCSTR InputPathName, | 
      |     PSTR   OutputPathBuffer, |   |     __out_ecount_opt(MAX_PATH + 1) PSTR OutputPathBuffer, | 
      |     PENUMDIRTREE_CALLBACK Callback, |   |     __in_opt PENUMDIRTREE_CALLBACK cb, | 
      |     PVOID  CallbackData |   |     __in_opt PVOID data | 
       |   |     ); | 
       |   |  | 
       |   | typedef BOOL | 
       |   | (CALLBACK *PENUMDIRTREE_CALLBACKW)( | 
       |   |     __in PCWSTR FilePath, | 
       |   |     __in_opt PVOID CallerData | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | EnumDirTreeW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in PCWSTR RootPath, | 
       |   |     __in PCWSTR InputPathName, | 
       |   |     __out_ecount_opt(MAX_PATH + 1) PWSTR OutputPathBuffer, | 
       |   |     __in_opt PENUMDIRTREE_CALLBACKW cb, | 
       |   |     __in_opt PVOID data | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | MakeSureDirectoryPathExists( |   | MakeSureDirectoryPathExists( | 
       | 
      |     PCSTR DirPath |   |     __in PCSTR DirPath | 
      |     ); |   |     ); | 
       |   |  | 
      | // |   | // | 
      | // UnDecorateSymbolName Flags |   | // UnDecorateSymbolName Flags | 
      | // |   | // | 
       |   |  | 
      | #define UNDNAME_COMPLETE                 (0x0000)  // Enable full undecoration |   | #define UNDNAME_COMPLETE                 (0x0000)  // Enable full undecoration | 
      | #define UNDNAME_NO_LEADING_UNDERSCORES   (0x0001)  // Remove leading underscores
 from MS extended keywords |   | #define UNDNAME_NO_LEADING_UNDERSCORES   (0x0001)  // Remove leading underscores
 from MS extended keywords | 
      | #define UNDNAME_NO_MS_KEYWORDS           (0x0002)  // Disable expansion of MS ex
tended keywords |   | #define UNDNAME_NO_MS_KEYWORDS           (0x0002)  // Disable expansion of MS ex
tended keywords | 
      | #define UNDNAME_NO_FUNCTION_RETURNS      (0x0004)  // Disable expansion of retur
n type for primary declaration |   | #define UNDNAME_NO_FUNCTION_RETURNS      (0x0004)  // Disable expansion of retur
n type for primary declaration | 
       |   |  | 
      | skipping to change at line 346 |   | skipping to change at line 475 | 
      | #define UNDNAME_32_BIT_DECODE            (0x0800)  // Undecorate 32-bit decorate
d names |   | #define UNDNAME_32_BIT_DECODE            (0x0800)  // Undecorate 32-bit decorate
d names | 
      | #define UNDNAME_NAME_ONLY                (0x1000)  // Crack only the name for pr
imary declaration; |   | #define UNDNAME_NAME_ONLY                (0x1000)  // Crack only the name for pr
imary declaration; | 
      |                                                                                 
                   //  return just [scope::]name.  Does expand template params |   |                                                                                 
                   //  return just [scope::]name.  Does expand template params | 
      | #define UNDNAME_NO_ARGUMENTS             (0x2000)  // Don't undecorate arguments
 to function |   | #define UNDNAME_NO_ARGUMENTS             (0x2000)  // Don't undecorate arguments
 to function | 
      | #define UNDNAME_NO_SPECIAL_SYMS          (0x4000)  // Don't undecorate special n
ames (v-table, vcall, vector xxx, metatype, etc) |   | #define UNDNAME_NO_SPECIAL_SYMS          (0x4000)  // Don't undecorate special n
ames (v-table, vcall, vector xxx, metatype, etc) | 
       |   |  | 
      | DWORD |   | DWORD | 
      | IMAGEAPI |   | IMAGEAPI | 
      | WINAPI |   | WINAPI | 
      | UnDecorateSymbolName( |   | UnDecorateSymbolName( | 
       | 
      |     PCSTR   DecoratedName,         // Name to undecorate |   |     __in PCSTR name, | 
      |     PSTR    UnDecoratedName,       // If NULL, it will be allocated |   |     __out_ecount(maxStringLength) PSTR outputString, | 
      |     DWORD    UndecoratedLength,     // The maximym length |   |     __in DWORD maxStringLength, | 
      |     DWORD    Flags                  // See above. |   |     __in DWORD flags | 
       |   |     ); | 
       |   |  | 
       |   | DWORD | 
       |   | IMAGEAPI | 
       |   | WINAPI | 
       |   | UnDecorateSymbolNameW( | 
       |   |     __in PCWSTR name, | 
       |   |     __out_ecount(maxStringLength) PWSTR outputString, | 
       |   |     __in DWORD maxStringLength, | 
       |   |     __in DWORD flags | 
      |     ); |   |     ); | 
       |   |  | 
      | // |   | // | 
      | // these values are used for synthesized file types |   | // these values are used for synthesized file types | 
      | // that can be passed in as image headers instead of |   | // that can be passed in as image headers instead of | 
      | // the standard ones from ntimage.h |   | // the standard ones from ntimage.h | 
      | // |   | // | 
       |   |  | 
      | #define DBHHEADER_DEBUGDIRS     0x1 |   | #define DBHHEADER_DEBUGDIRS     0x1 | 
       |   |  | 
       |   |  | 
      | skipping to change at line 398 |   | skipping to change at line 537 | 
      | #else |   | #else | 
      | typedef struct _tagADDRESS { |   | typedef struct _tagADDRESS { | 
      |     DWORD         Offset; |   |     DWORD         Offset; | 
      |     WORD          Segment; |   |     WORD          Segment; | 
      |     ADDRESS_MODE  Mode; |   |     ADDRESS_MODE  Mode; | 
      | } ADDRESS, *LPADDRESS; |   | } ADDRESS, *LPADDRESS; | 
       |   |  | 
      | __inline |   | __inline | 
      | void |   | void | 
      | Address32To64( |   | Address32To64( | 
       | 
      |     LPADDRESS a32, |   |     __in LPADDRESS a32, | 
      |     LPADDRESS64 a64 |   |     __out LPADDRESS64 a64 | 
      |     ) |   |     ) | 
      | { |   | { | 
      |     a64->Offset = (ULONG64)(LONG64)(LONG)a32->Offset; |   |     a64->Offset = (ULONG64)(LONG64)(LONG)a32->Offset; | 
      |     a64->Segment = a32->Segment; |   |     a64->Segment = a32->Segment; | 
      |     a64->Mode = a32->Mode; |   |     a64->Mode = a32->Mode; | 
      | } |   | } | 
       |   |  | 
      | __inline |   | __inline | 
      | void |   | void | 
      | Address64To32( |   | Address64To32( | 
       | 
      |     LPADDRESS64 a64, |   |     __in LPADDRESS64 a64, | 
      |     LPADDRESS a32 |   |     __out LPADDRESS a32 | 
      |     ) |   |     ) | 
      | { |   | { | 
      |     a32->Offset = (ULONG)a64->Offset; |   |     a32->Offset = (ULONG)a64->Offset; | 
      |     a32->Segment = a64->Segment; |   |     a32->Segment = a64->Segment; | 
      |     a32->Mode = a64->Mode; |   |     a32->Mode = a64->Mode; | 
      | } |   | } | 
      | #endif |   | #endif | 
       |   |  | 
      | // |   | // | 
      | // This structure is included in the STACKFRAME structure, |   | // This structure is included in the STACKFRAME structure, | 
       |   |  | 
      | skipping to change at line 475 |   | skipping to change at line 614 | 
      |     // |   |     // | 
      |     // Address of the user mode dispatcher function |   |     // Address of the user mode dispatcher function | 
      |     // |   |     // | 
      |     DWORD64   KeUserCallbackDispatcher; |   |     DWORD64   KeUserCallbackDispatcher; | 
       |   |  | 
      |     // |   |     // | 
      |     // Lowest kernel mode address |   |     // Lowest kernel mode address | 
      |     // |   |     // | 
      |     DWORD64   SystemRangeStart; |   |     DWORD64   SystemRangeStart; | 
       |   |  | 
       | 
      |     DWORD64  Reserved[8]; |   |     // | 
       |   |     // Address of the user mode exception dispatcher function. | 
       |   |     // Added in API version 10. | 
       |   |     // | 
       |   |     DWORD64   KiUserExceptionDispatcher; | 
       |   |  | 
       |   |     // | 
       |   |     // Stack bounds, added in API version 11. | 
       |   |     // | 
       |   |     DWORD64   StackBase; | 
       |   |     DWORD64   StackLimit; | 
       |   |  | 
       |   |     DWORD64   Reserved[5]; | 
       |   |  | 
      | } KDHELP64, *PKDHELP64; |   | } KDHELP64, *PKDHELP64; | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define KDHELP KDHELP64 |   | #define KDHELP KDHELP64 | 
      | #define PKDHELP PKDHELP64 |   | #define PKDHELP PKDHELP64 | 
      | #else |   | #else | 
      | typedef struct _KDHELP { |   | typedef struct _KDHELP { | 
       |   |  | 
      |     // |   |     // | 
       |   |  | 
      | skipping to change at line 527 |   | skipping to change at line 678 | 
      |     // Lowest kernel mode address |   |     // Lowest kernel mode address | 
      |     // |   |     // | 
      |     DWORD   SystemRangeStart; |   |     DWORD   SystemRangeStart; | 
       |   |  | 
      |     // |   |     // | 
      |     // offset in thread object to pointer to the current callback backing |   |     // offset in thread object to pointer to the current callback backing | 
      |     // store frame in kernel stack. |   |     // store frame in kernel stack. | 
      |     // |   |     // | 
      |     DWORD   ThCallbackBStore; |   |     DWORD   ThCallbackBStore; | 
       |   |  | 
       | 
      |     DWORD  Reserved[8]; |   |     // | 
       |   |     // Address of the user mode exception dispatcher function. | 
       |   |     // Added in API version 10. | 
       |   |     // | 
       |   |     DWORD   KiUserExceptionDispatcher; | 
       |   |  | 
       |   |     // | 
       |   |     // Stack bounds, added in API version 11. | 
       |   |     // | 
       |   |     DWORD   StackBase; | 
       |   |     DWORD   StackLimit; | 
       |   |  | 
       |   |     DWORD   Reserved[5]; | 
       |   |  | 
      | } KDHELP, *PKDHELP; |   | } KDHELP, *PKDHELP; | 
       |   |  | 
      | __inline |   | __inline | 
      | void |   | void | 
      | KdHelp32To64( |   | KdHelp32To64( | 
       | 
      |     PKDHELP p32, |   |     __in PKDHELP p32, | 
      |     PKDHELP64 p64 |   |     __out PKDHELP64 p64 | 
      |     ) |   |     ) | 
      | { |   | { | 
      |     p64->Thread = p32->Thread; |   |     p64->Thread = p32->Thread; | 
      |     p64->ThCallbackStack = p32->ThCallbackStack; |   |     p64->ThCallbackStack = p32->ThCallbackStack; | 
      |     p64->NextCallback = p32->NextCallback; |   |     p64->NextCallback = p32->NextCallback; | 
      |     p64->FramePointer = p32->FramePointer; |   |     p64->FramePointer = p32->FramePointer; | 
      |     p64->KiCallUserMode = p32->KiCallUserMode; |   |     p64->KiCallUserMode = p32->KiCallUserMode; | 
      |     p64->KeUserCallbackDispatcher = p32->KeUserCallbackDispatcher; |   |     p64->KeUserCallbackDispatcher = p32->KeUserCallbackDispatcher; | 
      |     p64->SystemRangeStart = p32->SystemRangeStart; |   |     p64->SystemRangeStart = p32->SystemRangeStart; | 
       | 
       |   |     p64->KiUserExceptionDispatcher = p32->KiUserExceptionDispatcher; | 
       |   |     p64->StackBase = p32->StackBase; | 
       |   |     p64->StackLimit = p32->StackLimit; | 
      | } |   | } | 
      | #endif |   | #endif | 
       |   |  | 
      | typedef struct _tagSTACKFRAME64 { |   | typedef struct _tagSTACKFRAME64 { | 
      |     ADDRESS64   AddrPC;               // program counter |   |     ADDRESS64   AddrPC;               // program counter | 
      |     ADDRESS64   AddrReturn;           // return address |   |     ADDRESS64   AddrReturn;           // return address | 
      |     ADDRESS64   AddrFrame;            // frame pointer |   |     ADDRESS64   AddrFrame;            // frame pointer | 
      |     ADDRESS64   AddrStack;            // stack pointer |   |     ADDRESS64   AddrStack;            // stack pointer | 
      |     ADDRESS64   AddrBStore;           // backing store pointer |   |     ADDRESS64   AddrBStore;           // backing store pointer | 
      |     PVOID       FuncTableEntry;       // pointer to pdata/fpo or NULL |   |     PVOID       FuncTableEntry;       // pointer to pdata/fpo or NULL | 
       |   |  | 
      | skipping to change at line 584 |   | skipping to change at line 750 | 
      |     BOOL        Virtual;              // is this a virtual frame? |   |     BOOL        Virtual;              // is this a virtual frame? | 
      |     DWORD       Reserved[3]; |   |     DWORD       Reserved[3]; | 
      |     KDHELP      KdHelp; |   |     KDHELP      KdHelp; | 
      |     ADDRESS     AddrBStore;           // backing store pointer |   |     ADDRESS     AddrBStore;           // backing store pointer | 
      | } STACKFRAME, *LPSTACKFRAME; |   | } STACKFRAME, *LPSTACKFRAME; | 
      | #endif |   | #endif | 
       |   |  | 
      | typedef |   | typedef | 
      | BOOL |   | BOOL | 
      | (__stdcall *PREAD_PROCESS_MEMORY_ROUTINE64)( |   | (__stdcall *PREAD_PROCESS_MEMORY_ROUTINE64)( | 
       | 
      |     HANDLE      hProcess, |   |     __in HANDLE hProcess, | 
      |     DWORD64     qwBaseAddress, |   |     __in DWORD64 qwBaseAddress, | 
      |     PVOID       lpBuffer, |   |     __out_bcount(nSize) PVOID lpBuffer, | 
      |     DWORD       nSize, |   |     __in DWORD nSize, | 
      |     LPDWORD     lpNumberOfBytesRead |   |     __out LPDWORD lpNumberOfBytesRead | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef |   | typedef | 
      | PVOID |   | PVOID | 
      | (__stdcall *PFUNCTION_TABLE_ACCESS_ROUTINE64)( |   | (__stdcall *PFUNCTION_TABLE_ACCESS_ROUTINE64)( | 
       | 
      |     HANDLE  hProcess, |   |     __in HANDLE ahProcess, | 
      |     DWORD64 AddrBase |   |     __in DWORD64 AddrBase | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef |   | typedef | 
      | DWORD64 |   | DWORD64 | 
      | (__stdcall *PGET_MODULE_BASE_ROUTINE64)( |   | (__stdcall *PGET_MODULE_BASE_ROUTINE64)( | 
       | 
      |     HANDLE  hProcess, |   |     __in HANDLE hProcess, | 
      |     DWORD64 Address |   |     __in DWORD64 Address | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef |   | typedef | 
      | DWORD64 |   | DWORD64 | 
      | (__stdcall *PTRANSLATE_ADDRESS_ROUTINE64)( |   | (__stdcall *PTRANSLATE_ADDRESS_ROUTINE64)( | 
       | 
      |     HANDLE    hProcess, |   |     __in HANDLE hProcess, | 
      |     HANDLE    hThread, |   |     __in HANDLE hThread, | 
      |     LPADDRESS64 lpaddr |   |     __in LPADDRESS64 lpaddr | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | StackWalk64( |   | StackWalk64( | 
       | 
      |     DWORD                             MachineType, |   |     __in DWORD MachineType, | 
      |     HANDLE                            hProcess, |   |     __in HANDLE hProcess, | 
      |     HANDLE                            hThread, |   |     __in HANDLE hThread, | 
      |     LPSTACKFRAME64                    StackFrame, |   |     __inout LPSTACKFRAME64 StackFrame, | 
      |     PVOID                             ContextRecord, |   |     __inout PVOID ContextRecord, | 
      |     PREAD_PROCESS_MEMORY_ROUTINE64    ReadMemoryRoutine, |   |     __in_opt PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine, | 
      |     PFUNCTION_TABLE_ACCESS_ROUTINE64  FunctionTableAccessRoutine, |   |     __in_opt PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine, | 
      |     PGET_MODULE_BASE_ROUTINE64        GetModuleBaseRoutine, |   |     __in_opt PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine, | 
      |     PTRANSLATE_ADDRESS_ROUTINE64      TranslateAddress |   |     __in_opt PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
       |   |  | 
      | #define PREAD_PROCESS_MEMORY_ROUTINE PREAD_PROCESS_MEMORY_ROUTINE64 |   | #define PREAD_PROCESS_MEMORY_ROUTINE PREAD_PROCESS_MEMORY_ROUTINE64 | 
      | #define PFUNCTION_TABLE_ACCESS_ROUTINE PFUNCTION_TABLE_ACCESS_ROUTINE64 |   | #define PFUNCTION_TABLE_ACCESS_ROUTINE PFUNCTION_TABLE_ACCESS_ROUTINE64 | 
      | #define PGET_MODULE_BASE_ROUTINE PGET_MODULE_BASE_ROUTINE64 |   | #define PGET_MODULE_BASE_ROUTINE PGET_MODULE_BASE_ROUTINE64 | 
      | #define PTRANSLATE_ADDRESS_ROUTINE PTRANSLATE_ADDRESS_ROUTINE64 |   | #define PTRANSLATE_ADDRESS_ROUTINE PTRANSLATE_ADDRESS_ROUTINE64 | 
       |   |  | 
      | #define StackWalk StackWalk64 |   | #define StackWalk StackWalk64 | 
       |   |  | 
      | #else |   | #else | 
       |   |  | 
      | typedef |   | typedef | 
      | BOOL |   | BOOL | 
      | (__stdcall *PREAD_PROCESS_MEMORY_ROUTINE)( |   | (__stdcall *PREAD_PROCESS_MEMORY_ROUTINE)( | 
       | 
      |     HANDLE  hProcess, |   |     __in HANDLE hProcess, | 
      |     DWORD   lpBaseAddress, |   |     __in DWORD lpBaseAddress, | 
      |     PVOID   lpBuffer, |   |     __out_bcount(nSize) PVOID lpBuffer, | 
      |     DWORD   nSize, |   |     __in DWORD nSize, | 
      |     PDWORD  lpNumberOfBytesRead |   |     __out PDWORD lpNumberOfBytesRead | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef |   | typedef | 
      | PVOID |   | PVOID | 
      | (__stdcall *PFUNCTION_TABLE_ACCESS_ROUTINE)( |   | (__stdcall *PFUNCTION_TABLE_ACCESS_ROUTINE)( | 
       | 
      |     HANDLE  hProcess, |   |     __in HANDLE hProcess, | 
      |     DWORD   AddrBase |   |     __in DWORD AddrBase | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef |   | typedef | 
      | DWORD |   | DWORD | 
      | (__stdcall *PGET_MODULE_BASE_ROUTINE)( |   | (__stdcall *PGET_MODULE_BASE_ROUTINE)( | 
       | 
      |     HANDLE  hProcess, |   |     __in HANDLE hProcess, | 
      |     DWORD   Address |   |     __in DWORD Address | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef |   | typedef | 
      | DWORD |   | DWORD | 
      | (__stdcall *PTRANSLATE_ADDRESS_ROUTINE)( |   | (__stdcall *PTRANSLATE_ADDRESS_ROUTINE)( | 
       | 
      |     HANDLE    hProcess, |   |     __in HANDLE hProcess, | 
      |     HANDLE    hThread, |   |     __in HANDLE hThread, | 
      |     LPADDRESS lpaddr |   |     __out LPADDRESS lpaddr | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | StackWalk( |   | StackWalk( | 
       | 
      |     DWORD                             MachineType, |   |     DWORD MachineType, | 
      |     HANDLE                            hProcess, |   |     __in HANDLE hProcess, | 
      |     HANDLE                            hThread, |   |     __in HANDLE hThread, | 
      |     LPSTACKFRAME                      StackFrame, |   |     __inout LPSTACKFRAME StackFrame, | 
      |     PVOID                             ContextRecord, |   |     __inout PVOID ContextRecord, | 
      |     PREAD_PROCESS_MEMORY_ROUTINE      ReadMemoryRoutine, |   |     __in_opt PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine, | 
      |     PFUNCTION_TABLE_ACCESS_ROUTINE    FunctionTableAccessRoutine, |   |     __in_opt PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine, | 
      |     PGET_MODULE_BASE_ROUTINE          GetModuleBaseRoutine, |   |     __in_opt PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine, | 
      |     PTRANSLATE_ADDRESS_ROUTINE        TranslateAddress |   |     __in_opt PTRANSLATE_ADDRESS_ROUTINE TranslateAddress | 
      |     ); |   |     ); | 
       |   |  | 
      | #endif |   | #endif | 
       |   |  | 
       | 
      | #define API_VERSION_NUMBER 9 |   | #define API_VERSION_NUMBER 11 | 
       |   |  | 
      | typedef struct API_VERSION { |   | typedef struct API_VERSION { | 
      |     USHORT  MajorVersion; |   |     USHORT  MajorVersion; | 
      |     USHORT  MinorVersion; |   |     USHORT  MinorVersion; | 
      |     USHORT  Revision; |   |     USHORT  Revision; | 
      |     USHORT  Reserved; |   |     USHORT  Reserved; | 
      | } API_VERSION, *LPAPI_VERSION; |   | } API_VERSION, *LPAPI_VERSION; | 
       |   |  | 
      | LPAPI_VERSION |   | LPAPI_VERSION | 
      | IMAGEAPI |   | IMAGEAPI | 
      | ImagehlpApiVersion( |   | ImagehlpApiVersion( | 
      |     VOID |   |     VOID | 
      |     ); |   |     ); | 
       |   |  | 
      | LPAPI_VERSION |   | LPAPI_VERSION | 
      | IMAGEAPI |   | IMAGEAPI | 
      | ImagehlpApiVersionEx( |   | ImagehlpApiVersionEx( | 
       | 
      |     LPAPI_VERSION AppVersion |   |     __in LPAPI_VERSION AppVersion | 
      |     ); |   |     ); | 
       |   |  | 
      | DWORD |   | DWORD | 
      | IMAGEAPI |   | IMAGEAPI | 
      | GetTimestampForLoadedLibrary( |   | GetTimestampForLoadedLibrary( | 
       | 
      |     HMODULE Module |   |     __in HMODULE Module | 
      |     ); |   |     ); | 
       |   |  | 
      | // |   | // | 
      | // typedefs for function pointers |   | // typedefs for function pointers | 
      | // |   | // | 
      | typedef BOOL |   | typedef BOOL | 
      | (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)( |   | (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)( | 
       | 
      |     PSTR ModuleName, |   |     __in PCSTR ModuleName, | 
      |     DWORD64 BaseOfDll, |   |     __in DWORD64 BaseOfDll, | 
      |     PVOID UserContext |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef BOOL |   | typedef BOOL | 
       | 
      | (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)( |   | (CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)( | 
      |     PSTR SymbolName, |   |     __in PCWSTR ModuleName, | 
      |     DWORD64 SymbolAddress, |   |     __in DWORD64 BaseOfDll, | 
      |     ULONG SymbolSize, |   |     __in_opt PVOID UserContext | 
      |     PVOID UserContext |   |  | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef BOOL |   | typedef BOOL | 
       | 
      | (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)( |   | (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)( | 
      |     PWSTR SymbolName, |   |     __in PCSTR ModuleName, | 
      |     DWORD64 SymbolAddress, |   |     __in DWORD64 ModuleBase, | 
      |     ULONG SymbolSize, |   |     __in ULONG ModuleSize, | 
      |     PVOID UserContext |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef BOOL |   | typedef BOOL | 
       | 
      | (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)( |   | (CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)( | 
      |     PSTR ModuleName, |   |     __in PCWSTR ModuleName, | 
      |     DWORD64 ModuleBase, |   |     __in DWORD64 ModuleBase, | 
      |     ULONG ModuleSize, |   |     __in ULONG ModuleSize, | 
      |     PVOID UserContext |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   |  | 
       |   | typedef BOOL | 
       |   | (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)( | 
       |   |     __in PCSTR SymbolName, | 
       |   |     __in DWORD64 SymbolAddress, | 
       |   |     __in ULONG SymbolSize, | 
       |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   |  | 
       |   | typedef BOOL | 
       |   | (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)( | 
       |   |     __in PCWSTR SymbolName, | 
       |   |     __in DWORD64 SymbolAddress, | 
       |   |     __in ULONG SymbolSize, | 
       |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef BOOL |   | typedef BOOL | 
      | (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)( |   | (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)( | 
       | 
      |     HANDLE  hProcess, |   |     __in HANDLE hProcess, | 
      |     ULONG   ActionCode, |   |     __in ULONG ActionCode, | 
      |     ULONG64 CallbackData, |   |     __in_opt ULONG64 CallbackData, | 
      |     ULONG64 UserContext |   |     __in_opt ULONG64 UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef |   | typedef | 
      | PVOID |   | PVOID | 
      | (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)( |   | (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)( | 
       | 
      |     HANDLE  hProcess, |   |     __in HANDLE hProcess, | 
      |     DWORD   AddrBase, |   |     __in DWORD AddrBase, | 
      |     PVOID   UserContext |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef |   | typedef | 
      | PVOID |   | PVOID | 
      | (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)( |   | (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)( | 
       | 
      |     HANDLE  hProcess, |   |     __in HANDLE hProcess, | 
      |     ULONG64 AddrBase, |   |     __in ULONG64 AddrBase, | 
      |     ULONG64 UserContext |   |     __in ULONG64 UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
       |   |  | 
      | #define PSYM_ENUMMODULES_CALLBACK PSYM_ENUMMODULES_CALLBACK64 |   | #define PSYM_ENUMMODULES_CALLBACK PSYM_ENUMMODULES_CALLBACK64 | 
      | #define PSYM_ENUMSYMBOLS_CALLBACK PSYM_ENUMSYMBOLS_CALLBACK64 |   | #define PSYM_ENUMSYMBOLS_CALLBACK PSYM_ENUMSYMBOLS_CALLBACK64 | 
      | #define PSYM_ENUMSYMBOLS_CALLBACKW PSYM_ENUMSYMBOLS_CALLBACK64W |   | #define PSYM_ENUMSYMBOLS_CALLBACKW PSYM_ENUMSYMBOLS_CALLBACK64W | 
      | #define PENUMLOADED_MODULES_CALLBACK PENUMLOADED_MODULES_CALLBACK64 |   | #define PENUMLOADED_MODULES_CALLBACK PENUMLOADED_MODULES_CALLBACK64 | 
      | #define PSYMBOL_REGISTERED_CALLBACK PSYMBOL_REGISTERED_CALLBACK64 |   | #define PSYMBOL_REGISTERED_CALLBACK PSYMBOL_REGISTERED_CALLBACK64 | 
      | #define PSYMBOL_FUNCENTRY_CALLBACK PSYMBOL_FUNCENTRY_CALLBACK64 |   | #define PSYMBOL_FUNCENTRY_CALLBACK PSYMBOL_FUNCENTRY_CALLBACK64 | 
       |   |  | 
      | #else |   | #else | 
       |   |  | 
      | typedef BOOL |   | typedef BOOL | 
      | (CALLBACK *PSYM_ENUMMODULES_CALLBACK)( |   | (CALLBACK *PSYM_ENUMMODULES_CALLBACK)( | 
       | 
      |     PSTR  ModuleName, |   |     __in PCSTR ModuleName, | 
      |     ULONG BaseOfDll, |   |     __in ULONG BaseOfDll, | 
      |     PVOID UserContext |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef BOOL |   | typedef BOOL | 
      | (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)( |   | (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)( | 
       | 
      |     PSTR  SymbolName, |   |     __in PCSTR SymbolName, | 
      |     ULONG SymbolAddress, |   |     __in ULONG SymbolAddress, | 
      |     ULONG SymbolSize, |   |     __in ULONG SymbolSize, | 
      |     PVOID UserContext |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef BOOL |   | typedef BOOL | 
      | (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)( |   | (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)( | 
       | 
      |     PWSTR  SymbolName, |   |     __in PCWSTR SymbolName, | 
      |     ULONG SymbolAddress, |   |     __in ULONG SymbolAddress, | 
      |     ULONG SymbolSize, |   |     __in ULONG SymbolSize, | 
      |     PVOID UserContext |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef BOOL |   | typedef BOOL | 
      | (CALLBACK *PENUMLOADED_MODULES_CALLBACK)( |   | (CALLBACK *PENUMLOADED_MODULES_CALLBACK)( | 
       | 
      |     PSTR  ModuleName, |   |     __in PCSTR ModuleName, | 
      |     ULONG ModuleBase, |   |     __in ULONG ModuleBase, | 
      |     ULONG ModuleSize, |   |     __in ULONG ModuleSize, | 
      |     PVOID UserContext |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef BOOL |   | typedef BOOL | 
      | (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)( |   | (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)( | 
       | 
      |     HANDLE  hProcess, |   |     __in HANDLE hProcess, | 
      |     ULONG   ActionCode, |   |     __in ULONG ActionCode, | 
      |     PVOID   CallbackData, |   |     __in_opt PVOID CallbackData, | 
      |     PVOID   UserContext |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | #endif |   | #endif | 
       |   |  | 
       | 
       |   | // values found in SYMBOL_INFO.Tag | 
       |   | // | 
       |   | // This was taken from cvconst.h and should | 
       |   | // not override any values found there. | 
       |   | // | 
       |   | // #define _NO_CVCONST_H_ if you don't | 
       |   | // have access to that file... | 
       |   |  | 
       |   | #ifdef _NO_CVCONST_H | 
       |   |  | 
       |   | // DIA enums | 
       |   |  | 
       |   | enum SymTagEnum | 
       |   | { | 
       |   |     SymTagNull, | 
       |   |     SymTagExe, | 
       |   |     SymTagCompiland, | 
       |   |     SymTagCompilandDetails, | 
       |   |     SymTagCompilandEnv, | 
       |   |     SymTagFunction, | 
       |   |     SymTagBlock, | 
       |   |     SymTagData, | 
       |   |     SymTagAnnotation, | 
       |   |     SymTagLabel, | 
       |   |     SymTagPublicSymbol, | 
       |   |     SymTagUDT, | 
       |   |     SymTagEnum, | 
       |   |     SymTagFunctionType, | 
       |   |     SymTagPointerType, | 
       |   |     SymTagArrayType, | 
       |   |     SymTagBaseType, | 
       |   |     SymTagTypedef, | 
       |   |     SymTagBaseClass, | 
       |   |     SymTagFriend, | 
       |   |     SymTagFunctionArgType, | 
       |   |     SymTagFuncDebugStart, | 
       |   |     SymTagFuncDebugEnd, | 
       |   |     SymTagUsingNamespace, | 
       |   |     SymTagVTableShape, | 
       |   |     SymTagVTable, | 
       |   |     SymTagCustom, | 
       |   |     SymTagThunk, | 
       |   |     SymTagCustomType, | 
       |   |     SymTagManagedType, | 
       |   |     SymTagDimension, | 
       |   |     SymTagMax | 
       |   | }; | 
       |   |  | 
       |   | #endif | 
       |   |                                                                                  | 
      | // |   | // | 
      | // flags found in SYMBOL_INFO.Flags |   | // flags found in SYMBOL_INFO.Flags | 
      | // |   | // | 
       |   |  | 
      | #define SYMFLAG_VALUEPRESENT     0x00000001 |   | #define SYMFLAG_VALUEPRESENT     0x00000001 | 
      | #define SYMFLAG_REGISTER         0x00000008 |   | #define SYMFLAG_REGISTER         0x00000008 | 
      | #define SYMFLAG_REGREL           0x00000010 |   | #define SYMFLAG_REGREL           0x00000010 | 
      | #define SYMFLAG_FRAMEREL         0x00000020 |   | #define SYMFLAG_FRAMEREL         0x00000020 | 
      | #define SYMFLAG_PARAMETER        0x00000040 |   | #define SYMFLAG_PARAMETER        0x00000040 | 
      | #define SYMFLAG_LOCAL            0x00000080 |   | #define SYMFLAG_LOCAL            0x00000080 | 
      | #define SYMFLAG_CONSTANT         0x00000100 |   | #define SYMFLAG_CONSTANT         0x00000100 | 
      | #define SYMFLAG_EXPORT           0x00000200 |   | #define SYMFLAG_EXPORT           0x00000200 | 
      | #define SYMFLAG_FORWARDER        0x00000400 |   | #define SYMFLAG_FORWARDER        0x00000400 | 
      | #define SYMFLAG_FUNCTION         0x00000800 |   | #define SYMFLAG_FUNCTION         0x00000800 | 
      | #define SYMFLAG_VIRTUAL          0x00001000 |   | #define SYMFLAG_VIRTUAL          0x00001000 | 
      | #define SYMFLAG_THUNK            0x00002000 |   | #define SYMFLAG_THUNK            0x00002000 | 
      | #define SYMFLAG_TLSREL           0x00004000 |   | #define SYMFLAG_TLSREL           0x00004000 | 
       | 
       |   | #define SYMFLAG_SLOT             0x00008000 | 
       |   | #define SYMFLAG_ILREL            0x00010000 | 
       |   | #define SYMFLAG_METADATA         0x00020000 | 
       |   | #define SYMFLAG_CLR_TOKEN        0x00040000 | 
       |   |  | 
       |   | // this resets SymNext/Prev to the beginning | 
       |   | // of the module passed in the address field | 
       |   |  | 
       |   | #define SYMFLAG_RESET            0x80000000 | 
       |   |  | 
      | // |   | // | 
      | // symbol type enumeration |   | // symbol type enumeration | 
      | // |   | // | 
      | typedef enum { |   | typedef enum { | 
      |     SymNone = 0, |   |     SymNone = 0, | 
      |     SymCoff, |   |     SymCoff, | 
      |     SymCv, |   |     SymCv, | 
      |     SymPdb, |   |     SymPdb, | 
      |     SymExport, |   |     SymExport, | 
       |   |  | 
      | skipping to change at line 862 |   | skipping to change at line 1102 | 
      |     SymDia, |   |     SymDia, | 
      |     SymVirtual, |   |     SymVirtual, | 
      |     NumSymTypes |   |     NumSymTypes | 
      | } SYM_TYPE; |   | } SYM_TYPE; | 
       |   |  | 
      | // |   | // | 
      | // symbol data structure |   | // symbol data structure | 
      | // |   | // | 
       |   |  | 
      | typedef struct _IMAGEHLP_SYMBOL64 { |   | typedef struct _IMAGEHLP_SYMBOL64 { | 
       | 
      |     DWORD                       SizeOfStruct;           // set to sizeof(IMAGEHL |   |     DWORD   SizeOfStruct;           // set to sizeof(IMAGEHLP_SYMBOL64) | 
      | P_SYMBOL64) |   |     DWORD64 Address;                // virtual address including dll base addres | 
      |     DWORD64                     Address;                // virtual address inclu |   | s | 
      | ding dll base address |   |     DWORD   Size;                   // estimated size of symbol, can be zero | 
      |     DWORD                       Size;                   // estimated size of sym |   |     DWORD   Flags;                  // info about the symbols, see the SYMF defi | 
      | bol, can be zero |   | nes | 
      |     DWORD                       Flags;                  // info about the symbol |   |     DWORD   MaxNameLength;          // maximum size of symbol name in 'Name' | 
      | s, see the SYMF defines |   |     CHAR    Name[1];                // symbol name (null terminated string) | 
      |     DWORD                       MaxNameLength;          // maximum size of symbo |   |  | 
      | l name in 'Name' |   |  | 
      |     CHAR                        Name[1];                // symbol name (null ter |   |  | 
      | minated string) |   |  | 
      | } IMAGEHLP_SYMBOL64, *PIMAGEHLP_SYMBOL64; |   | } IMAGEHLP_SYMBOL64, *PIMAGEHLP_SYMBOL64; | 
       |   |  | 
      | typedef struct _IMAGEHLP_SYMBOL64_PACKAGE { |   | typedef struct _IMAGEHLP_SYMBOL64_PACKAGE { | 
      |     IMAGEHLP_SYMBOL64 sym; |   |     IMAGEHLP_SYMBOL64 sym; | 
      |     CHAR              name[MAX_SYM_NAME + 1]; |   |     CHAR              name[MAX_SYM_NAME + 1]; | 
      | } IMAGEHLP_SYMBOL64_PACKAGE, *PIMAGEHLP_SYMBOL64_PACKAGE; |   | } IMAGEHLP_SYMBOL64_PACKAGE, *PIMAGEHLP_SYMBOL64_PACKAGE; | 
       |   |  | 
       | 
       |   | typedef struct _IMAGEHLP_SYMBOLW64 { | 
       |   |     DWORD   SizeOfStruct;           // set to sizeof(IMAGEHLP_SYMBOLW64) | 
       |   |     DWORD64 Address;                // virtual address including dll base addres | 
       |   | s | 
       |   |     DWORD   Size;                   // estimated size of symbol, can be zero | 
       |   |     DWORD   Flags;                  // info about the symbols, see the SYMF defi | 
       |   | nes | 
       |   |     DWORD   MaxNameLength;          // maximum size of symbol name in 'Name' | 
       |   |     WCHAR   Name[1];                // symbol name (null terminated string) | 
       |   | } IMAGEHLP_SYMBOLW64, *PIMAGEHLP_SYMBOLW64; | 
       |   |  | 
       |   | typedef struct _IMAGEHLP_SYMBOLW64_PACKAGE { | 
       |   |     IMAGEHLP_SYMBOLW64 sym; | 
       |   |     WCHAR              name[MAX_SYM_NAME + 1]; | 
       |   | } IMAGEHLP_SYMBOLW64_PACKAGE, *PIMAGEHLP_SYMBOLW64_PACKAGE; | 
       |   |                                                                                  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
       |   |  | 
      |  #define IMAGEHLP_SYMBOL IMAGEHLP_SYMBOL64 |   |  #define IMAGEHLP_SYMBOL IMAGEHLP_SYMBOL64 | 
      |  #define PIMAGEHLP_SYMBOL PIMAGEHLP_SYMBOL64 |   |  #define PIMAGEHLP_SYMBOL PIMAGEHLP_SYMBOL64 | 
      |  #define IMAGEHLP_SYMBOL_PACKAGE IMAGEHLP_SYMBOL64_PACKAGE |   |  #define IMAGEHLP_SYMBOL_PACKAGE IMAGEHLP_SYMBOL64_PACKAGE | 
      |  #define PIMAGEHLP_SYMBOL_PACKAGE PIMAGEHLP_SYMBOL64_PACKAGE |   |  #define PIMAGEHLP_SYMBOL_PACKAGE PIMAGEHLP_SYMBOL64_PACKAGE | 
       | 
       |   |  #define IMAGEHLP_SYMBOLW IMAGEHLP_SYMBOLW64 | 
       |   |  #define PIMAGEHLP_SYMBOLW PIMAGEHLP_SYMBOLW64 | 
       |   |  #define IMAGEHLP_SYMBOLW_PACKAGE IMAGEHLP_SYMBOLW64_PACKAGE | 
       |   |  #define PIMAGEHLP_SYMBOLW_PACKAGE PIMAGEHLP_SYMBOLW64_PACKAGE | 
       |   |  | 
      | #else |   | #else | 
       |   |  | 
      |  typedef struct _IMAGEHLP_SYMBOL { |   |  typedef struct _IMAGEHLP_SYMBOL { | 
       | 
      |      DWORD                       SizeOfStruct;           // set to sizeof(IMAGEH |   |      DWORD SizeOfStruct;           // set to sizeof(IMAGEHLP_SYMBOL) | 
      | LP_SYMBOL) |   |      DWORD Address;                // virtual address including dll base address | 
      |      DWORD                       Address;                // virtual address incl |   |      DWORD Size;                   // estimated size of symbol, can be zero | 
      | uding dll base address |   |      DWORD Flags;                  // info about the symbols, see the SYMF defin | 
      |      DWORD                       Size;                   // estimated size of sy |   | es | 
      | mbol, can be zero |   |  | 
      |      DWORD                       Flags;                  // info about the symbo |   |  | 
      | ls, see the SYMF defines |   |  | 
      |      DWORD                       MaxNameLength;          // maximum size of symb
ol name in 'Name' |   |      DWORD                       MaxNameLength;          // maximum size of symb
ol name in 'Name' | 
      |      CHAR                        Name[1];                // symbol name (null te
rminated string) |   |      CHAR                        Name[1];                // symbol name (null te
rminated string) | 
      |  } IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL; |   |  } IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL; | 
       |   |  | 
      |  typedef struct _IMAGEHLP_SYMBOL_PACKAGE { |   |  typedef struct _IMAGEHLP_SYMBOL_PACKAGE { | 
      |      IMAGEHLP_SYMBOL sym; |   |      IMAGEHLP_SYMBOL sym; | 
      |      CHAR            name[MAX_SYM_NAME + 1]; |   |      CHAR            name[MAX_SYM_NAME + 1]; | 
      |  } IMAGEHLP_SYMBOL_PACKAGE, *PIMAGEHLP_SYMBOL_PACKAGE; |   |  } IMAGEHLP_SYMBOL_PACKAGE, *PIMAGEHLP_SYMBOL_PACKAGE; | 
       |   |  | 
       | 
       |   |  typedef struct _IMAGEHLP_SYMBOLW { | 
       |   |      DWORD SizeOfStruct;           // set to sizeof(IMAGEHLP_SYMBOLW) | 
       |   |      DWORD Address;                // virtual address including dll base address | 
       |   |      DWORD Size;                   // estimated size of symbol, can be zero | 
       |   |      DWORD Flags;                  // info about the symbols, see the SYMF defin | 
       |   | es | 
       |   |      DWORD                       MaxNameLength;          // maximum size of symb | 
       |   | ol name in 'Name' | 
       |   |      WCHAR                       Name[1];                // symbol name (null te | 
       |   | rminated string) | 
       |   |  } IMAGEHLP_SYMBOLW, *PIMAGEHLP_SYMBOLW; | 
       |   |  | 
       |   |  typedef struct _IMAGEHLP_SYMBOLW_PACKAGE { | 
       |   |      IMAGEHLP_SYMBOLW sym; | 
       |   |      WCHAR            name[MAX_SYM_NAME + 1]; | 
       |   |  } IMAGEHLP_SYMBOLW_PACKAGE, *PIMAGEHLP_SYMBOLW_PACKAGE; | 
       |   |                                                                                  | 
      | #endif |   | #endif | 
       |   |  | 
      | // |   | // | 
      | // module data structure |   | // module data structure | 
      | // |   | // | 
       |   |  | 
      | typedef struct _IMAGEHLP_MODULE64 { |   | typedef struct _IMAGEHLP_MODULE64 { | 
       | 
      |     DWORD                       SizeOfStruct;           // set to sizeof(IMAGEHL |   |     DWORD    SizeOfStruct;           // set to sizeof(IMAGEHLP_MODULE64) | 
      | P_MODULE64) |   |     DWORD64  BaseOfImage;            // base load address of module | 
      |     DWORD64                     BaseOfImage;            // base load address of  |   |     DWORD    ImageSize;              // virtual size of the loaded module | 
      | module |   |     DWORD    TimeDateStamp;          // date/time stamp from pe header | 
      |     DWORD                       ImageSize;              // virtual size of the l |   |     DWORD    CheckSum;               // checksum from the pe header | 
      | oaded module |   |     DWORD    NumSyms;                // number of symbols in the symbol table | 
      |     DWORD                       TimeDateStamp;          // date/time stamp from  |   |     SYM_TYPE SymType;                // type of symbols loaded | 
      | pe header |   |     CHAR     ModuleName[32];         // module name | 
      |     DWORD                       CheckSum;               // checksum from the pe  |   |     CHAR     ImageName[256];         // image name | 
      | header |   |     CHAR     LoadedImageName[256];   // symbol file name | 
      |     DWORD                       NumSyms;                // number of symbols in  |   |  | 
      | the symbol table |   |  | 
      |     SYM_TYPE                    SymType;                // type of symbols loade |   |  | 
      | d |   |  | 
      |     CHAR                        ModuleName[32];         // module name |   |  | 
      |     CHAR                        ImageName[256];         // image name |   |  | 
      |     // new elements: 07-Jun-2002 |   |     // new elements: 07-Jun-2002 | 
       | 
      |     CHAR                        LoadedImageName[256];   // symbol file name |   |     CHAR     LoadedPdbName[256];     // pdb file name | 
      |     CHAR                        LoadedPdbName[256];     // pdb file name |   |     DWORD    CVSig;                  // Signature of the CV record in the debug  | 
      |     DWORD                       CVSig;                  // Signature of the CV r |   | directories | 
      | ecord in the debug directories |   |     CHAR     CVData[MAX_PATH * 3];   // Contents of the CV record | 
      |     CHAR                                   CVData[MAX_PATH * 3];   // Contents o |   |     DWORD    PdbSig;                 // Signature of PDB | 
      | f the CV record |   |     GUID     PdbSig70;               // Signature of PDB (VC 7 and up) | 
      |     DWORD                       PdbSig;                 // Signature of PDB |   |     DWORD    PdbAge;                 // DBI age of pdb | 
      |     GUID                        PdbSig70;               // Signature of PDB (VC  |   |     BOOL     PdbUnmatched;           // loaded an unmatched pdb | 
      | 7 and up) |   |     BOOL     DbgUnmatched;           // loaded an unmatched dbg | 
      |     DWORD                       PdbAge;                 // DBI age of pdb |   |     BOOL     LineNumbers;            // we have line number information | 
      |     BOOL                        PdbUnmatched;           // loaded an unmatched p |   |     BOOL     GlobalSymbols;          // we have internal symbol information | 
      | db |   |     BOOL     TypeInfo;               // we have type information | 
      |     BOOL                        DbgUnmatched;           // loaded an unmatched d |   |     // new elements: 17-Dec-2003 | 
      | bg |   |     BOOL     SourceIndexed;          // pdb supports source server | 
      |     BOOL                        LineNumbers;            // we have line number i |   |     BOOL     Publics;                // contains public symbols | 
      | nformation |   |  | 
      |     BOOL                        GlobalSymbols;          // we have internal symb |   |  | 
      | ol information |   |  | 
      |     BOOL                        TypeInfo;               // we have type informat |   |  | 
      | ion |   |  | 
      | } IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64; |   | } IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64; | 
       |   |  | 
       | 
      | typedef struct _IMAGEHLP_MODULE64W { |   | typedef struct _IMAGEHLP_MODULEW64 { | 
      |     DWORD                       SizeOfStruct;           // set to sizeof(IMAGEHL |   |     DWORD    SizeOfStruct;           // set to sizeof(IMAGEHLP_MODULE64) | 
      | P_MODULE64) |   |     DWORD64  BaseOfImage;            // base load address of module | 
      |     DWORD64                     BaseOfImage;            // base load address of  |   |     DWORD    ImageSize;              // virtual size of the loaded module | 
      | module |   |     DWORD    TimeDateStamp;          // date/time stamp from pe header | 
      |     DWORD                       ImageSize;              // virtual size of the l |   |     DWORD    CheckSum;               // checksum from the pe header | 
      | oaded module |   |     DWORD    NumSyms;                // number of symbols in the symbol table | 
      |     DWORD                       TimeDateStamp;          // date/time stamp from  |   |     SYM_TYPE SymType;                // type of symbols loaded | 
      | pe header |   |     WCHAR    ModuleName[32];         // module name | 
      |     DWORD                       CheckSum;               // checksum from the pe  |   |     WCHAR    ImageName[256];         // image name | 
      | header |   |  | 
      |     DWORD                       NumSyms;                // number of symbols in  |   |  | 
      | the symbol table |   |  | 
      |     SYM_TYPE                    SymType;                // type of symbols loade |   |  | 
      | d |   |  | 
      |     WCHAR                       ModuleName[32];         // module name |   |  | 
      |     WCHAR                       ImageName[256];         // image name |   |  | 
      |     // new elements: 07-Jun-2002 |   |     // new elements: 07-Jun-2002 | 
       | 
      |     WCHAR                       LoadedImageName[256];   // symbol file name |   |     WCHAR    LoadedImageName[256];   // symbol file name | 
      |     WCHAR                       LoadedPdbName[256];     // pdb file name |   |     WCHAR    LoadedPdbName[256];     // pdb file name | 
      |     DWORD                       CVSig;                  // Signature of the CV r |   |     DWORD    CVSig;                  // Signature of the CV record in the debug  | 
      | ecord in the debug directories |   | directories | 
      |     WCHAR                                  CVData[MAX_PATH * 3];   // Contents o |   |     WCHAR        CVData[MAX_PATH * 3];   // Contents of the CV record | 
      | f the CV record |   |     DWORD    PdbSig;                 // Signature of PDB | 
      |     DWORD                       PdbSig;                 // Signature of PDB |   |     GUID     PdbSig70;               // Signature of PDB (VC 7 and up) | 
      |     GUID                        PdbSig70;               // Signature of PDB (VC  |   |     DWORD    PdbAge;                 // DBI age of pdb | 
      | 7 and up) |   |     BOOL     PdbUnmatched;           // loaded an unmatched pdb | 
      |     DWORD                       PdbAge;                 // DBI age of pdb |   |     BOOL     DbgUnmatched;           // loaded an unmatched dbg | 
      |     BOOL                        PdbUnmatched;           // loaded an unmatched p |   |     BOOL     LineNumbers;            // we have line number information | 
      | db |   |     BOOL     GlobalSymbols;          // we have internal symbol information | 
      |     BOOL                        DbgUnmatched;           // loaded an unmatched d |   |     BOOL     TypeInfo;               // we have type information | 
      | bg |   |     // new elements: 17-Dec-2003 | 
      |     BOOL                        LineNumbers;            // we have line number i |   |     BOOL     SourceIndexed;          // pdb supports source server | 
      | nformation |   |     BOOL     Publics;                // contains public symbols | 
      |     BOOL                        GlobalSymbols;          // we have internal symb |   |  | 
      | ol information |   |  | 
      |     BOOL                        TypeInfo;               // we have type informat |   |  | 
      | ion |   |  | 
      | } IMAGEHLP_MODULEW64, *PIMAGEHLP_MODULEW64; |   | } IMAGEHLP_MODULEW64, *PIMAGEHLP_MODULEW64; | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define IMAGEHLP_MODULE IMAGEHLP_MODULE64 |   | #define IMAGEHLP_MODULE IMAGEHLP_MODULE64 | 
      | #define PIMAGEHLP_MODULE PIMAGEHLP_MODULE64 |   | #define PIMAGEHLP_MODULE PIMAGEHLP_MODULE64 | 
      | #define IMAGEHLP_MODULEW IMAGEHLP_MODULEW64 |   | #define IMAGEHLP_MODULEW IMAGEHLP_MODULEW64 | 
      | #define PIMAGEHLP_MODULEW PIMAGEHLP_MODULEW64 |   | #define PIMAGEHLP_MODULEW PIMAGEHLP_MODULEW64 | 
      | #else |   | #else | 
      | typedef struct _IMAGEHLP_MODULE { |   | typedef struct _IMAGEHLP_MODULE { | 
       | 
      |     DWORD                       SizeOfStruct;           // set to sizeof(IMAGEHL |   |     DWORD    SizeOfStruct;           // set to sizeof(IMAGEHLP_MODULE) | 
      | P_MODULE) |   |     DWORD    BaseOfImage;            // base load address of module | 
      |     DWORD                       BaseOfImage;            // base load address of  |   |     DWORD    ImageSize;              // virtual size of the loaded module | 
      | module |   |     DWORD    TimeDateStamp;          // date/time stamp from pe header | 
      |     DWORD                       ImageSize;              // virtual size of the l |   |     DWORD    CheckSum;               // checksum from the pe header | 
      | oaded module |   |     DWORD    NumSyms;                // number of symbols in the symbol table | 
      |     DWORD                       TimeDateStamp;          // date/time stamp from  |   |     SYM_TYPE SymType;                // type of symbols loaded | 
      | pe header |   |     CHAR     ModuleName[32];         // module name | 
      |     DWORD                       CheckSum;               // checksum from the pe  |   |     CHAR     ImageName[256];         // image name | 
      | header |   |     CHAR     LoadedImageName[256];   // symbol file name | 
      |     DWORD                       NumSyms;                // number of symbols in  |   |  | 
      | the symbol table |   |  | 
      |     SYM_TYPE                    SymType;                // type of symbols loade |   |  | 
      | d |   |  | 
      |     CHAR                        ModuleName[32];         // module name |   |  | 
      |     CHAR                        ImageName[256];         // image name |   |  | 
      |     CHAR                        LoadedImageName[256];   // symbol file name |   |  | 
      | } IMAGEHLP_MODULE, *PIMAGEHLP_MODULE; |   | } IMAGEHLP_MODULE, *PIMAGEHLP_MODULE; | 
       |   |  | 
      | typedef struct _IMAGEHLP_MODULEW { |   | typedef struct _IMAGEHLP_MODULEW { | 
       | 
      |     DWORD                       SizeOfStruct;           // set to sizeof(IMAGEHL |   |     DWORD    SizeOfStruct;           // set to sizeof(IMAGEHLP_MODULE) | 
      | P_MODULE) |   |     DWORD    BaseOfImage;            // base load address of module | 
      |     DWORD                       BaseOfImage;            // base load address of  |   |     DWORD    ImageSize;              // virtual size of the loaded module | 
      | module |   |     DWORD    TimeDateStamp;          // date/time stamp from pe header | 
      |     DWORD                       ImageSize;              // virtual size of the l |   |     DWORD    CheckSum;               // checksum from the pe header | 
      | oaded module |   |     DWORD    NumSyms;                // number of symbols in the symbol table | 
      |     DWORD                       TimeDateStamp;          // date/time stamp from  |   |     SYM_TYPE SymType;                // type of symbols loaded | 
      | pe header |   |     WCHAR    ModuleName[32];         // module name | 
      |     DWORD                       CheckSum;               // checksum from the pe  |   |     WCHAR    ImageName[256];         // image name | 
      | header |   |     WCHAR    LoadedImageName[256];   // symbol file name | 
      |     DWORD                       NumSyms;                // number of symbols in  |   |  | 
      | the symbol table |   |  | 
      |     SYM_TYPE                    SymType;                // type of symbols loade |   |  | 
      | d |   |  | 
      |     WCHAR                       ModuleName[32];         // module name |   |  | 
      |     WCHAR                       ImageName[256];         // image name |   |  | 
      |     WCHAR                       LoadedImageName[256];   // symbol file name |   |  | 
      | } IMAGEHLP_MODULEW, *PIMAGEHLP_MODULEW; |   | } IMAGEHLP_MODULEW, *PIMAGEHLP_MODULEW; | 
      | #endif |   | #endif | 
       |   |  | 
      | // |   | // | 
      | // source file line data structure |   | // source file line data structure | 
      | // |   | // | 
       |   |  | 
      | typedef struct _IMAGEHLP_LINE64 { |   | typedef struct _IMAGEHLP_LINE64 { | 
       | 
      |     DWORD                       SizeOfStruct;           // set to sizeof(IMAGEHL |   |     DWORD    SizeOfStruct;           // set to sizeof(IMAGEHLP_LINE64) | 
      | P_LINE64) |   |     PVOID    Key;                    // internal | 
      |     PVOID                       Key;                    // internal |   |     DWORD    LineNumber;             // line number in file | 
      |     DWORD                       LineNumber;             // line number in file |   |     PCHAR    FileName;               // full filename | 
      |     PCHAR                       FileName;               // full filename |   |     DWORD64  Address;                // first instruction of line | 
      |     DWORD64                     Address;                // first instruction of  |   |  | 
      | line |   |  | 
      | } IMAGEHLP_LINE64, *PIMAGEHLP_LINE64; |   | } IMAGEHLP_LINE64, *PIMAGEHLP_LINE64; | 
       |   |  | 
       | 
       |   | typedef struct _IMAGEHLP_LINEW64 { | 
       |   |     DWORD    SizeOfStruct;           // set to sizeof(IMAGEHLP_LINE64) | 
       |   |     PVOID    Key;                    // internal | 
       |   |     DWORD    LineNumber;             // line number in file | 
       |   |     PWSTR    FileName;               // full filename | 
       |   |     DWORD64  Address;                // first instruction of line | 
       |   | } IMAGEHLP_LINEW64, *PIMAGEHLP_LINEW64; | 
       |   |                                                                                  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define IMAGEHLP_LINE IMAGEHLP_LINE64 |   | #define IMAGEHLP_LINE IMAGEHLP_LINE64 | 
      | #define PIMAGEHLP_LINE PIMAGEHLP_LINE64 |   | #define PIMAGEHLP_LINE PIMAGEHLP_LINE64 | 
      | #else |   | #else | 
      | typedef struct _IMAGEHLP_LINE { |   | typedef struct _IMAGEHLP_LINE { | 
       | 
      |     DWORD                       SizeOfStruct;           // set to sizeof(IMAGEHL |   |     DWORD    SizeOfStruct;           // set to sizeof(IMAGEHLP_LINE) | 
      | P_LINE) |   |     PVOID    Key;                    // internal | 
      |     PVOID                       Key;                    // internal |   |     DWORD    LineNumber;             // line number in file | 
      |     DWORD                       LineNumber;             // line number in file |   |     PCHAR    FileName;               // full filename | 
      |     PCHAR                       FileName;               // full filename |   |     DWORD    Address;                // first instruction of line | 
      |     DWORD                       Address;                // first instruction of  |   |  | 
      | line |   |  | 
      | } IMAGEHLP_LINE, *PIMAGEHLP_LINE; |   | } IMAGEHLP_LINE, *PIMAGEHLP_LINE; | 
       | 
       |   |                                                                                  | 
       |   | typedef struct _IMAGEHLP_LINEW { | 
       |   |     DWORD    SizeOfStruct;           // set to sizeof(IMAGEHLP_LINE64) | 
       |   |     PVOID    Key;                    // internal | 
       |   |     DWORD    LineNumber;             // line number in file | 
       |   |     PCHAR    FileName;               // full filename | 
       |   |     DWORD64  Address;                // first instruction of line | 
       |   | } IMAGEHLP_LINEW, *PIMAGEHLP_LINEW; | 
      | #endif |   | #endif | 
       |   |  | 
      | // |   | // | 
      | // source file structure |   | // source file structure | 
      | // |   | // | 
       |   |  | 
      | typedef struct _SOURCEFILE { |   | typedef struct _SOURCEFILE { | 
       | 
      |     DWORD64                     ModBase;                // base address of loade |   |     DWORD64  ModBase;                // base address of loaded module | 
      | d module |   |     PCHAR    FileName;               // full filename of source | 
      |     PCHAR                       FileName;               // full filename of sour |   |  | 
      | ce |   |  | 
      | } SOURCEFILE, *PSOURCEFILE; |   | } SOURCEFILE, *PSOURCEFILE; | 
       |   |  | 
       | 
       |   | typedef struct _SOURCEFILEW { | 
       |   |     DWORD64  ModBase;                // base address of loaded module | 
       |   |     PWSTR    FileName;               // full filename of source | 
       |   | } SOURCEFILEW, *PSOURCEFILEW; | 
       |   |                                                                                  | 
      | // |   | // | 
      | // data structures used for registered symbol callbacks |   | // data structures used for registered symbol callbacks | 
      | // |   | // | 
       |   |  | 
      | #define CBA_DEFERRED_SYMBOL_LOAD_START          0x00000001 |   | #define CBA_DEFERRED_SYMBOL_LOAD_START          0x00000001 | 
      | #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE       0x00000002 |   | #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE       0x00000002 | 
      | #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE        0x00000003 |   | #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE        0x00000003 | 
      | #define CBA_SYMBOLS_UNLOADED                    0x00000004 |   | #define CBA_SYMBOLS_UNLOADED                    0x00000004 | 
      | #define CBA_DUPLICATE_SYMBOL                    0x00000005 |   | #define CBA_DUPLICATE_SYMBOL                    0x00000005 | 
      | #define CBA_READ_MEMORY                         0x00000006 |   | #define CBA_READ_MEMORY                         0x00000006 | 
       |   |  | 
      | skipping to change at line 1052 |   | skipping to change at line 1351 | 
      | } IMAGEHLP_CBA_READ_MEMORY, *PIMAGEHLP_CBA_READ_MEMORY; |   | } IMAGEHLP_CBA_READ_MEMORY, *PIMAGEHLP_CBA_READ_MEMORY; | 
       |   |  | 
      | enum { |   | enum { | 
      |     sevInfo = 0, |   |     sevInfo = 0, | 
      |     sevProblem, |   |     sevProblem, | 
      |     sevAttn, |   |     sevAttn, | 
      |     sevFatal, |   |     sevFatal, | 
      |     sevMax  // unused |   |     sevMax  // unused | 
      | }; |   | }; | 
       |   |  | 
       | 
       |   | #define EVENT_SRCSPEW_START 100 | 
       |   | #define EVENT_SRCSPEW       100 | 
       |   | #define EVENT_SRCSPEW_END   199 | 
       |   |                                                                                  | 
      | typedef struct _IMAGEHLP_CBA_EVENT { |   | typedef struct _IMAGEHLP_CBA_EVENT { | 
      |     DWORD severity;                                     // values from sevInfo t
o sevFatal |   |     DWORD severity;                                     // values from sevInfo t
o sevFatal | 
      |     DWORD code;                                         // numerical code IDs th
e error |   |     DWORD code;                                         // numerical code IDs th
e error | 
      |     PCHAR desc;                                         // may contain a text de
scription of the error |   |     PCHAR desc;                                         // may contain a text de
scription of the error | 
      |     PVOID object;                                       // value dependant upon 
the error code |   |     PVOID object;                                       // value dependant upon 
the error code | 
      | } IMAGEHLP_CBA_EVENT, *PIMAGEHLP_CBA_EVENT; |   | } IMAGEHLP_CBA_EVENT, *PIMAGEHLP_CBA_EVENT; | 
       |   |  | 
       | 
       |   | typedef struct _IMAGEHLP_CBA_EVENTW { | 
       |   |     DWORD  severity;                                     // values from sevInfo  | 
       |   | to sevFatal | 
       |   |     DWORD  code;                                         // numerical code IDs t | 
       |   | he error | 
       |   |     PCWSTR desc;                                         // may contain a text d | 
       |   | escription of the error | 
       |   |     PVOID  object;                                       // value dependant upon | 
       |   |  the error code | 
       |   | } IMAGEHLP_CBA_EVENTW, *PIMAGEHLP_CBA_EVENTW; | 
       |   |                                                                                  | 
      | typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 { |   | typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 { | 
       | 
      |     DWORD                       SizeOfStruct;           // set to sizeof(IMAGEHL |   |     DWORD    SizeOfStruct;           // set to sizeof(IMAGEHLP_DEFERRED_SYMBOL_L | 
      | P_DEFERRED_SYMBOL_LOAD64) |   | OAD64) | 
      |     DWORD64                     BaseOfImage;            // base load address of  |   |     DWORD64  BaseOfImage;            // base load address of module | 
      | module |   |     DWORD    CheckSum;               // checksum from the pe header | 
      |     DWORD                       CheckSum;               // checksum from the pe  |   |     DWORD    TimeDateStamp;          // date/time stamp from pe header | 
      | header |   |     CHAR     FileName[MAX_PATH];     // symbols file or image name | 
      |     DWORD                       TimeDateStamp;          // date/time stamp from  |   |     BOOLEAN  Reparse;                // load failure reparse | 
      | pe header |   |     HANDLE   hFile;                  // file handle, if passed | 
      |     CHAR                        FileName[MAX_PATH];     // symbols file or image |   |     DWORD    Flags;                     // | 
      |  name |   |  | 
      |     BOOLEAN                     Reparse;                // load failure reparse |   |  | 
      |     HANDLE                      hFile;                  // file handle, if passe |   |  | 
      | d |   |  | 
      |     DWORD                       Flags;                 // |   |  | 
      | } IMAGEHLP_DEFERRED_SYMBOL_LOAD64, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD64; |   | } IMAGEHLP_DEFERRED_SYMBOL_LOAD64, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD64; | 
       |   |  | 
       | 
      | #define DSLFLAG_MISMATCHED_PDB 0x1 |   | typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOADW64 { | 
       |   |     DWORD    SizeOfStruct;           // set to sizeof(IMAGEHLP_DEFERRED_SYMBOL_L | 
       |   | OADW64) | 
       |   |     DWORD64  BaseOfImage;            // base load address of module | 
       |   |     DWORD    CheckSum;               // checksum from the pe header | 
       |   |     DWORD    TimeDateStamp;          // date/time stamp from pe header | 
       |   |     WCHAR    FileName[MAX_PATH + 1]; // symbols file or image name | 
       |   |     BOOLEAN  Reparse;                // load failure reparse | 
       |   |     HANDLE   hFile;                  // file handle, if passed | 
       |   |     DWORD    Flags;         // | 
       |   | } IMAGEHLP_DEFERRED_SYMBOL_LOADW64, *PIMAGEHLP_DEFERRED_SYMBOL_LOADW64; | 
       |   |                                                                                  | 
       |   | #define DSLFLAG_MISMATCHED_PDB  0x1 | 
      | #define DSLFLAG_MISMATCHED_DBG  0x2 |   | #define DSLFLAG_MISMATCHED_DBG  0x2 | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define IMAGEHLP_DEFERRED_SYMBOL_LOAD IMAGEHLP_DEFERRED_SYMBOL_LOAD64 |   | #define IMAGEHLP_DEFERRED_SYMBOL_LOAD IMAGEHLP_DEFERRED_SYMBOL_LOAD64 | 
      | #define PIMAGEHLP_DEFERRED_SYMBOL_LOAD PIMAGEHLP_DEFERRED_SYMBOL_LOAD64 |   | #define PIMAGEHLP_DEFERRED_SYMBOL_LOAD PIMAGEHLP_DEFERRED_SYMBOL_LOAD64 | 
      | #else |   | #else | 
      | typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD { |   | typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD { | 
       | 
      |     DWORD                       SizeOfStruct;           // set to sizeof(IMAGEHL |   |     DWORD    SizeOfStruct;           // set to sizeof(IMAGEHLP_DEFERRED_SYMBOL_L | 
      | P_DEFERRED_SYMBOL_LOAD) |   | OAD) | 
      |     DWORD                       BaseOfImage;            // base load address of  |   |     DWORD    BaseOfImage;            // base load address of module | 
      | module |   |     DWORD    CheckSum;               // checksum from the pe header | 
      |     DWORD                       CheckSum;               // checksum from the pe  |   |     DWORD    TimeDateStamp;          // date/time stamp from pe header | 
      | header |   |     CHAR     FileName[MAX_PATH];     // symbols file or image name | 
      |     DWORD                       TimeDateStamp;          // date/time stamp from  |   |     BOOLEAN  Reparse;                // load failure reparse | 
      | pe header |   |     HANDLE   hFile;                  // file handle, if passed | 
      |     CHAR                        FileName[MAX_PATH];     // symbols file or image |   |  | 
      |  name |   |  | 
      |     BOOLEAN                     Reparse;                // load failure reparse |   |  | 
      |     HANDLE                      hFile;                  // file handle, if passe |   |  | 
      | d |   |  | 
      | } IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD; |   | } IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD; | 
      | #endif |   | #endif | 
       |   |  | 
      | typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 { |   | typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 { | 
       | 
      |     DWORD                       SizeOfStruct;           // set to sizeof(IMAGEHL |   |     DWORD              SizeOfStruct;           // set to sizeof(IMAGEHLP_DUPLICA | 
      | P_DUPLICATE_SYMBOL64) |   | TE_SYMBOL64) | 
      |     DWORD                       NumberOfDups;           // number of duplicates  |   |     DWORD              NumberOfDups;           // number of duplicates in the Sy | 
      | in the Symbol array |   | mbol array | 
      |     PIMAGEHLP_SYMBOL64          Symbol;                 // array of duplicate sy |   |     PIMAGEHLP_SYMBOL64 Symbol;                 // array of duplicate symbols | 
      | mbols |   |     DWORD              SelectedSymbol;         // symbol selected (-1 to start) | 
      |     DWORD                       SelectedSymbol;         // symbol selected (-1 t |   |  | 
      | o start) |   |  | 
      | } IMAGEHLP_DUPLICATE_SYMBOL64, *PIMAGEHLP_DUPLICATE_SYMBOL64; |   | } IMAGEHLP_DUPLICATE_SYMBOL64, *PIMAGEHLP_DUPLICATE_SYMBOL64; | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define IMAGEHLP_DUPLICATE_SYMBOL IMAGEHLP_DUPLICATE_SYMBOL64 |   | #define IMAGEHLP_DUPLICATE_SYMBOL IMAGEHLP_DUPLICATE_SYMBOL64 | 
      | #define PIMAGEHLP_DUPLICATE_SYMBOL PIMAGEHLP_DUPLICATE_SYMBOL64 |   | #define PIMAGEHLP_DUPLICATE_SYMBOL PIMAGEHLP_DUPLICATE_SYMBOL64 | 
      | #else |   | #else | 
      | typedef struct _IMAGEHLP_DUPLICATE_SYMBOL { |   | typedef struct _IMAGEHLP_DUPLICATE_SYMBOL { | 
       | 
      |     DWORD                       SizeOfStruct;           // set to sizeof(IMAGEHL |   |     DWORD            SizeOfStruct;           // set to sizeof(IMAGEHLP_DUPLICATE | 
      | P_DUPLICATE_SYMBOL) |   | _SYMBOL) | 
      |     DWORD                       NumberOfDups;           // number of duplicates  |   |     DWORD            NumberOfDups;           // number of duplicates in the Symb | 
      | in the Symbol array |   | ol array | 
      |     PIMAGEHLP_SYMBOL            Symbol;                 // array of duplicate sy |   |     PIMAGEHLP_SYMBOL Symbol;                 // array of duplicate symbols | 
      | mbols |   |     DWORD            SelectedSymbol;         // symbol selected (-1 to start) | 
      |     DWORD                       SelectedSymbol;         // symbol selected (-1 t |   |  | 
      | o start) |   |  | 
      | } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL; |   | } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL; | 
      | #endif |   | #endif | 
       |   |  | 
      | // If dbghelp ever needs to display graphical UI, it will use this as the parent
 window. |   | // If dbghelp ever needs to display graphical UI, it will use this as the parent
 window. | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymSetParentWindow( |   | SymSetParentWindow( | 
       | 
      |     HWND hwnd |   |     __in HWND hwnd | 
      |     ); |   |     ); | 
       |   |  | 
      | PCHAR |   | PCHAR | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymSetHomeDirectory( |   | SymSetHomeDirectory( | 
       | 
      |     PCSTR dir |   |     __in_opt HANDLE hProcess, | 
       |   |     __in_opt PCSTR dir | 
       |   |     ); | 
       |   |  | 
       |   | PWSTR | 
       |   | IMAGEAPI | 
       |   | SymSetHomeDirectoryW( | 
       |   |     __in_opt HANDLE hProcess, | 
       |   |     __in_opt PCWSTR dir | 
      |     ); |   |     ); | 
       |   |  | 
      | PCHAR |   | PCHAR | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetHomeDirectory( |   | SymGetHomeDirectory( | 
       | 
      |     DWORD  type, |   |     __in DWORD type, | 
      |     PSTR   dir, |   |     __out_ecount(size) PSTR dir, | 
      |     size_t size |   |     __in size_t size | 
       |   |     ); | 
       |   |  | 
       |   | PWSTR | 
       |   | IMAGEAPI | 
       |   | SymGetHomeDirectoryW( | 
       |   |     __in DWORD type, | 
       |   |     __out_ecount(size) PWSTR dir, | 
       |   |     __in size_t size | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef enum { |   | typedef enum { | 
      |     hdBase = 0, // root directory for dbghelp |   |     hdBase = 0, // root directory for dbghelp | 
      |     hdSym,      // where symbols are stored |   |     hdSym,      // where symbols are stored | 
      |     hdSrc,      // where source is stored |   |     hdSrc,      // where source is stored | 
      |     hdMax       // end marker |   |     hdMax       // end marker | 
      | }; |   | }; | 
       |   |  | 
      | // |   | // | 
       |   |  | 
      | skipping to change at line 1160 |   | skipping to change at line 1497 | 
      | #define SYMOPT_EXACT_SYMBOLS            0x00000400 |   | #define SYMOPT_EXACT_SYMBOLS            0x00000400 | 
      | #define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS   0x00000800 |   | #define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS   0x00000800 | 
      | #define SYMOPT_IGNORE_NT_SYMPATH        0x00001000 |   | #define SYMOPT_IGNORE_NT_SYMPATH        0x00001000 | 
      | #define SYMOPT_INCLUDE_32BIT_MODULES    0x00002000 |   | #define SYMOPT_INCLUDE_32BIT_MODULES    0x00002000 | 
      | #define SYMOPT_PUBLICS_ONLY             0x00004000 |   | #define SYMOPT_PUBLICS_ONLY             0x00004000 | 
      | #define SYMOPT_NO_PUBLICS               0x00008000 |   | #define SYMOPT_NO_PUBLICS               0x00008000 | 
      | #define SYMOPT_AUTO_PUBLICS             0x00010000 |   | #define SYMOPT_AUTO_PUBLICS             0x00010000 | 
      | #define SYMOPT_NO_IMAGE_SEARCH          0x00020000 |   | #define SYMOPT_NO_IMAGE_SEARCH          0x00020000 | 
      | #define SYMOPT_SECURE                   0x00040000 |   | #define SYMOPT_SECURE                   0x00040000 | 
      | #define SYMOPT_NO_PROMPTS               0x00080000 |   | #define SYMOPT_NO_PROMPTS               0x00080000 | 
       | 
       |   | #define SYMOPT_OVERWRITE                0x00100000 | 
       |   | #define SYMOPT_IGNORE_IMAGEDIR          0x00200000 | 
       |   | #define SYMOPT_FLAT_DIRECTORY           0x00400000 | 
       |   | #define SYMOPT_FAVOR_COMPRESSED         0x00800000 | 
       |   | #define SYMOPT_ALLOW_ZERO_ADDRESS       0x01000000 | 
       |   |  | 
      | #define SYMOPT_DEBUG                    0x80000000 |   | #define SYMOPT_DEBUG                    0x80000000 | 
       |   |  | 
      | DWORD |   | DWORD | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymSetOptions( |   | SymSetOptions( | 
       | 
      |     IN DWORD   SymOptions |   |     __in DWORD   SymOptions | 
      |     ); |   |     ); | 
       |   |  | 
      | DWORD |   | DWORD | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetOptions( |   | SymGetOptions( | 
      |     VOID |   |     VOID | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymCleanup( |   | SymCleanup( | 
       | 
      |     IN HANDLE hProcess |   |     __in HANDLE hProcess | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymMatchString( |   | SymMatchString( | 
       | 
      |     IN LPSTR string, |   |     __in PCSTR string, | 
      |     IN LPSTR expression, |   |     __in PCSTR expression, | 
      |     IN BOOL  fCase |   |     __in BOOL fCase | 
      |     ); |   |     ); | 
       |   |  | 
       | 
      | typedef BOOL |   | BOOL | 
      | (CALLBACK *PSYM_ENUMSOURCFILES_CALLBACK)( |   | IMAGEAPI | 
      |     PSOURCEFILE pSourceFile, |   | SymMatchStringA( | 
      |     PVOID       UserContext |   |     __in PCSTR string, | 
       |   |     __in PCSTR expression, | 
       |   |     __in BOOL fCase | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
       | 
      | SymEnumSourceFiles( |   | SymMatchStringW( | 
      |     IN HANDLE  hProcess, |   |     __in PCWSTR string, | 
      |     IN ULONG64 ModBase, |   |     __in PCWSTR expression, | 
      |     IN LPSTR   Mask, |   |     __in BOOL fCase | 
      |     IN PSYM_ENUMSOURCFILES_CALLBACK cbSrcFiles, |   |     ); | 
      |     IN PVOID   UserContext |   |  | 
       |   | typedef BOOL | 
       |   | (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)( | 
       |   |     __in PSOURCEFILE pSourceFile, | 
       |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
       | 
       |   | // for backwards compatibility - don't use this | 
       |   | #define PSYM_ENUMSOURCFILES_CALLBACK PSYM_ENUMSOURCEFILES_CALLBACK | 
       |   |                                                                                  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
       | 
      | SymEnumerateModules64( |   | SymEnumSourceFiles( | 
      |     IN HANDLE                       hProcess, |   |     __in HANDLE hProcess, | 
      |     IN PSYM_ENUMMODULES_CALLBACK64  EnumModulesCallback, |   |     __in ULONG64 ModBase, | 
      |     IN PVOID                        UserContext |   |     __in_opt PCSTR Mask, | 
       |   |     __in PSYM_ENUMSOURCEFILES_CALLBACK cbSrcFiles, | 
       |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   |  | 
       |   | typedef BOOL | 
       |   | (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)( | 
       |   |     __in PSOURCEFILEW pSourceFile, | 
       |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
       | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   |  | 
      | #define SymEnumerateModules SymEnumerateModules64 |   |  | 
      | #else |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
       | 
      | SymEnumerateModules( |   | SymEnumSourceFilesW( | 
      |     IN HANDLE                     hProcess, |   |     __in HANDLE hProcess, | 
      |     IN PSYM_ENUMMODULES_CALLBACK  EnumModulesCallback, |   |     __in ULONG64 ModBase, | 
      |     IN PVOID                      UserContext |   |     __in_opt PCWSTR Mask, | 
       |   |     __in PSYM_ENUMSOURCEFILES_CALLBACKW cbSrcFiles, | 
       |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       | 
      | #endif |   |  | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
       | 
      | SymEnumerateSymbols64( |   | SymEnumerateModules64( | 
      |     IN HANDLE                       hProcess, |   |     __in HANDLE hProcess, | 
      |     IN DWORD64                      BaseOfDll, |   |     __in PSYM_ENUMMODULES_CALLBACK64 EnumModulesCallback, | 
      |     IN PSYM_ENUMSYMBOLS_CALLBACK64  EnumSymbolsCallback, |   |     __in_opt PVOID UserContext | 
      |     IN PVOID                        UserContext |   |  | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
       | 
      | SymEnumerateSymbolsW64( |   | SymEnumerateModulesW64( | 
      |     IN HANDLE                       hProcess, |   |     __in HANDLE hProcess, | 
      |     IN DWORD64                      BaseOfDll, |   |     __in PSYM_ENUMMODULES_CALLBACKW64 EnumModulesCallback, | 
      |     IN PSYM_ENUMSYMBOLS_CALLBACK64W EnumSymbolsCallback, |   |     __in_opt PVOID UserContext | 
      |     IN PVOID                        UserContext |   |  | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
       | 
      | #define SymEnumerateSymbols SymEnumerateSymbols64 |   | #define SymEnumerateModules SymEnumerateModules64 | 
      | #define SymEnumerateSymbolsW SymEnumerateSymbolsW64 |   |  | 
      | #else |   | #else | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
       | 
      | SymEnumerateSymbols( |   | SymEnumerateModules( | 
      |     IN HANDLE                     hProcess, |   |     __in HANDLE hProcess, | 
      |     IN DWORD                      BaseOfDll, |   |     __in PSYM_ENUMMODULES_CALLBACK EnumModulesCallback, | 
      |     IN PSYM_ENUMSYMBOLS_CALLBACK  EnumSymbolsCallback, |   |     __in_opt PVOID UserContext | 
      |     IN PVOID                      UserContext |   |  | 
      |     ); |   |     ); | 
       | 
       |   | #endif | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
       | 
      | SymEnumerateSymbolsW( |   | EnumerateLoadedModules64( | 
      |     IN HANDLE                       hProcess, |   |     __in HANDLE hProcess, | 
      |     IN DWORD                        BaseOfDll, |   |     __in PENUMLOADED_MODULES_CALLBACK64 EnumLoadedModulesCallback, | 
      |     IN PSYM_ENUMSYMBOLS_CALLBACKW   EnumSymbolsCallback, |   |     __in_opt PVOID UserContext | 
      |     IN PVOID                        UserContext |   |  | 
      |     ); |   |     ); | 
       | 
      | #endif |   |  | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
       | 
      | EnumerateLoadedModules64( |   | EnumerateLoadedModulesW64( | 
      |     IN HANDLE                           hProcess, |   |     __in HANDLE hProcess, | 
      |     IN PENUMLOADED_MODULES_CALLBACK64   EnumLoadedModulesCallback, |   |     __in PENUMLOADED_MODULES_CALLBACKW64 EnumLoadedModulesCallback, | 
      |     IN PVOID                            UserContext |   |     __in PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define EnumerateLoadedModules EnumerateLoadedModules64 |   | #define EnumerateLoadedModules EnumerateLoadedModules64 | 
      | #else |   | #else | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | EnumerateLoadedModules( |   | EnumerateLoadedModules( | 
       | 
      |     IN HANDLE                         hProcess, |   |     __in HANDLE hProcess, | 
      |     IN PENUMLOADED_MODULES_CALLBACK   EnumLoadedModulesCallback, |   |     __in PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback, | 
      |     IN PVOID                          UserContext |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
      | #endif |   | #endif | 
       |   |  | 
      | PVOID |   | PVOID | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymFunctionTableAccess64( |   | SymFunctionTableAccess64( | 
       | 
      |     HANDLE  hProcess, |   |     __in HANDLE hProcess, | 
      |     DWORD64 AddrBase |   |     __in DWORD64 AddrBase | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define SymFunctionTableAccess SymFunctionTableAccess64 |   | #define SymFunctionTableAccess SymFunctionTableAccess64 | 
      | #else |   | #else | 
      | PVOID |   | PVOID | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymFunctionTableAccess( |   | SymFunctionTableAccess( | 
       | 
      |     HANDLE  hProcess, |   |     __in HANDLE hProcess, | 
      |     DWORD   AddrBase |   |     __in DWORD AddrBase | 
      |     ); |   |     ); | 
      | #endif |   | #endif | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetModuleInfo64( |   | SymGetModuleInfo64( | 
       | 
      |     IN  HANDLE                  hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  DWORD64                 qwAddr, |   |     __in DWORD64 qwAddr, | 
      |     OUT PIMAGEHLP_MODULE64      ModuleInfo |   |     __out PIMAGEHLP_MODULE64 ModuleInfo | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetModuleInfoW64( |   | SymGetModuleInfoW64( | 
       | 
      |     IN  HANDLE                  hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  DWORD64                 qwAddr, |   |     __in DWORD64 qwAddr, | 
      |     OUT PIMAGEHLP_MODULEW64     ModuleInfo |   |     __out PIMAGEHLP_MODULEW64 ModuleInfo | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define SymGetModuleInfo   SymGetModuleInfo64 |   | #define SymGetModuleInfo   SymGetModuleInfo64 | 
      | #define SymGetModuleInfoW  SymGetModuleInfoW64 |   | #define SymGetModuleInfoW  SymGetModuleInfoW64 | 
      | #else |   | #else | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetModuleInfo( |   | SymGetModuleInfo( | 
       | 
      |     IN  HANDLE              hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  DWORD               dwAddr, |   |     __in DWORD dwAddr, | 
      |     OUT PIMAGEHLP_MODULE  ModuleInfo |   |     __out PIMAGEHLP_MODULE ModuleInfo | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetModuleInfoW( |   | SymGetModuleInfoW( | 
       | 
      |     IN  HANDLE              hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  DWORD               dwAddr, |   |     __in DWORD dwAddr, | 
      |     OUT PIMAGEHLP_MODULEW  ModuleInfo |   |     __out PIMAGEHLP_MODULEW ModuleInfo | 
      |     ); |   |     ); | 
      | #endif |   | #endif | 
       |   |  | 
      | DWORD64 |   | DWORD64 | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetModuleBase64( |   | SymGetModuleBase64( | 
       | 
      |     IN  HANDLE              hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  DWORD64             qwAddr |   |     __in DWORD64 qwAddr | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define SymGetModuleBase SymGetModuleBase64 |   | #define SymGetModuleBase SymGetModuleBase64 | 
      | #else |   | #else | 
      | DWORD |   | DWORD | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetModuleBase( |   | SymGetModuleBase( | 
       | 
      |     IN  HANDLE              hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  DWORD               dwAddr |   |     __in DWORD dwAddr | 
      |     ); |   |  | 
      | #endif |   |  | 
       |   |  | 
      | BOOL |   |  | 
      | IMAGEAPI |   |  | 
      | SymGetSymNext64( |   |  | 
      |     IN     HANDLE              hProcess, |   |  | 
      |     IN OUT PIMAGEHLP_SYMBOL64  Symbol |   |  | 
      |     ); |   |  | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   |  | 
      | #define SymGetSymNext SymGetSymNext64 |   |  | 
      | #else |   |  | 
      | BOOL |   |  | 
      | IMAGEAPI |   |  | 
      | SymGetSymNext( |   |  | 
      |     IN     HANDLE            hProcess, |   |  | 
      |     IN OUT PIMAGEHLP_SYMBOL  Symbol |   |  | 
      |     ); |   |  | 
      | #endif |   |  | 
       |   |  | 
      | BOOL |   |  | 
      | IMAGEAPI |   |  | 
      | SymGetSymPrev64( |   |  | 
      |     IN     HANDLE              hProcess, |   |  | 
      |     IN OUT PIMAGEHLP_SYMBOL64  Symbol |   |  | 
      |     ); |   |  | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   |  | 
      | #define SymGetSymPrev SymGetSymPrev64 |   |  | 
      | #else |   |  | 
      | BOOL |   |  | 
      | IMAGEAPI |   |  | 
      | SymGetSymPrev( |   |  | 
      |     IN     HANDLE            hProcess, |   |  | 
      |     IN OUT PIMAGEHLP_SYMBOL  Symbol |   |  | 
      |     ); |   |     ); | 
      | #endif |   | #endif | 
       |   |  | 
      | typedef struct _SRCCODEINFO { |   | typedef struct _SRCCODEINFO { | 
      |     DWORD   SizeOfStruct;           // set to sizeof(SRCCODEINFO) |   |     DWORD   SizeOfStruct;           // set to sizeof(SRCCODEINFO) | 
      |     PVOID   Key;                    // not used |   |     PVOID   Key;                    // not used | 
      |     DWORD64 ModBase;                // base address of module this applies to |   |     DWORD64 ModBase;                // base address of module this applies to | 
      |     CHAR    Obj[MAX_PATH + 1];      // the object file within the module |   |     CHAR    Obj[MAX_PATH + 1];      // the object file within the module | 
      |     CHAR    FileName[MAX_PATH + 1]; // full filename |   |     CHAR    FileName[MAX_PATH + 1]; // full filename | 
      |     DWORD   LineNumber;             // line number in file |   |     DWORD   LineNumber;             // line number in file | 
      |     DWORD64 Address;                // first instruction of line |   |     DWORD64 Address;                // first instruction of line | 
      | } SRCCODEINFO, *PSRCCODEINFO; |   | } SRCCODEINFO, *PSRCCODEINFO; | 
       |   |  | 
       | 
       |   | typedef struct _SRCCODEINFOW { | 
       |   |     DWORD   SizeOfStruct;           // set to sizeof(SRCCODEINFO) | 
       |   |     PVOID   Key;                    // not used | 
       |   |     DWORD64 ModBase;                // base address of module this applies to | 
       |   |     WCHAR   Obj[MAX_PATH + 1];      // the object file within the module | 
       |   |     WCHAR   FileName[MAX_PATH + 1]; // full filename | 
       |   |     DWORD   LineNumber;             // line number in file | 
       |   |     DWORD64 Address;                // first instruction of line | 
       |   | } SRCCODEINFOW, *PSRCCODEINFOW; | 
       |   |                                                                                  | 
      | typedef BOOL |   | typedef BOOL | 
      | (CALLBACK *PSYM_ENUMLINES_CALLBACK)( |   | (CALLBACK *PSYM_ENUMLINES_CALLBACK)( | 
       | 
      |     PSRCCODEINFO LineInfo, |   |     __in PSRCCODEINFO LineInfo, | 
      |     PVOID      UserContext |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymEnumLines( |   | SymEnumLines( | 
       | 
      |     IN  HANDLE  hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  ULONG64 Base, |   |     __in ULONG64 Base, | 
      |     IN  PCSTR   Obj, |   |     __in_opt PCSTR Obj, | 
      |     IN  PCSTR   File, |   |     __in_opt PCSTR File, | 
      |     IN  PSYM_ENUMLINES_CALLBACK EnumLinesCallback, |   |     __in PSYM_ENUMLINES_CALLBACK EnumLinesCallback, | 
      |     IN  PVOID   UserContext |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   |  | 
       |   | typedef BOOL | 
       |   | (CALLBACK *PSYM_ENUMLINES_CALLBACKW)( | 
       |   |     __in PSRCCODEINFOW LineInfo, | 
       |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymEnumLinesW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 Base, | 
       |   |     __in_opt PCWSTR Obj, | 
       |   |     __in_opt PCWSTR File, | 
       |   |     __in PSYM_ENUMLINES_CALLBACKW EnumLinesCallback, | 
       |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetLineFromAddr64( |   | SymGetLineFromAddr64( | 
       | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in DWORD64 qwAddr, | 
       |   |     __out PDWORD pdwDisplacement, | 
       |   |     __out PIMAGEHLP_LINE64 Line64 | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymEnumSourceLines( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 Base, | 
       |   |     __in_opt PCSTR Obj, | 
       |   |     __in_opt PCSTR File, | 
       |   |     __in_opt DWORD Line, | 
       |   |     __in DWORD Flags, | 
       |   |     __in PSYM_ENUMLINES_CALLBACK EnumLinesCallback, | 
       |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymEnumSourceLinesW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 Base, | 
       |   |     __in_opt PCWSTR Obj, | 
       |   |     __in_opt PCWSTR File, | 
       |   |     __in_opt DWORD Line, | 
       |   |     __in DWORD Flags, | 
       |   |     __in PSYM_ENUMLINES_CALLBACKW EnumLinesCallback, | 
       |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   |  | 
       |   | // flags for SymEnumSourceLines | 
       |   |  | 
       |   | #define ESLFLAG_FULLPATH        0x1 | 
       |   | #define ESLFLAG_NEAREST         0x2 | 
       |   | #define ESLFLAG_PREV            0x4 | 
       |   | #define ESLFLAG_NEXT            0x8 | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetLineFromAddrW64( | 
      |     IN  HANDLE                  hProcess, |   |     IN  HANDLE                  hProcess, | 
      |     IN  DWORD64                 qwAddr, |   |     IN  DWORD64                 qwAddr, | 
      |     OUT PDWORD                  pdwDisplacement, |   |     OUT PDWORD                  pdwDisplacement, | 
       | 
      |     OUT PIMAGEHLP_LINE64        Line64 |   |     OUT PIMAGEHLP_LINEW64       Line64 | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define SymGetLineFromAddr SymGetLineFromAddr64 |   | #define SymGetLineFromAddr SymGetLineFromAddr64 | 
       | 
       |   | #define SymGetLineFromAddrW SymGetLineFromAddrW64 | 
      | #else |   | #else | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetLineFromAddr( |   | SymGetLineFromAddr( | 
       | 
      |     IN  HANDLE                hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  DWORD                 dwAddr, |   |     __in DWORD dwAddr, | 
      |     OUT PDWORD                pdwDisplacement, |   |     __out PDWORD pdwDisplacement, | 
      |     OUT PIMAGEHLP_LINE        Line |   |     __out PIMAGEHLP_LINE Line | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetLineFromAddrW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in DWORD dwAddr, | 
       |   |     __out PDWORD pdwDisplacement, | 
       |   |     __out PIMAGEHLP_LINEW Line | 
      |     ); |   |     ); | 
      | #endif |   | #endif | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetLineFromName64( |   | SymGetLineFromName64( | 
       | 
      |     IN     HANDLE               hProcess, |   |     __in HANDLE hProcess, | 
      |     IN     PSTR                 ModuleName, |   |     __in_opt PCSTR ModuleName, | 
      |     IN     PSTR                 FileName, |   |     __in_opt PCSTR FileName, | 
      |     IN     DWORD                dwLineNumber, |   |     __in DWORD dwLineNumber, | 
      |        OUT PLONG                plDisplacement, |   |     __out PLONG plDisplacement, | 
      |     IN OUT PIMAGEHLP_LINE64     Line |   |     __inout PIMAGEHLP_LINE64 Line | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetLineFromNameW64( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt PCWSTR ModuleName, | 
       |   |     __in_opt PCWSTR FileName, | 
       |   |     __in DWORD dwLineNumber, | 
       |   |     __out PLONG plDisplacement, | 
       |   |     __inout PIMAGEHLP_LINEW64 Line | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define SymGetLineFromName SymGetLineFromName64 |   | #define SymGetLineFromName SymGetLineFromName64 | 
      | #else |   | #else | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetLineFromName( |   | SymGetLineFromName( | 
       | 
      |     IN     HANDLE             hProcess, |   |     __in HANDLE hProcess, | 
      |     IN     PSTR               ModuleName, |   |     __in_opt PCSTR ModuleName, | 
      |     IN     PSTR               FileName, |   |     __in_opt PCSTR FileName, | 
      |     IN     DWORD              dwLineNumber, |   |     __in DWORD dwLineNumber, | 
      |        OUT PLONG              plDisplacement, |   |     __out PLONG plDisplacement, | 
      |     IN OUT PIMAGEHLP_LINE     Line |   |     __inout PIMAGEHLP_LINE Line | 
      |     ); |   |     ); | 
      | #endif |   | #endif | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetLineNext64( |   | SymGetLineNext64( | 
       | 
      |     IN     HANDLE               hProcess, |   |     __in HANDLE hProcess, | 
      |     IN OUT PIMAGEHLP_LINE64     Line |   |     __inout PIMAGEHLP_LINE64 Line | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetLineNextW64( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PIMAGEHLP_LINEW64 Line | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define SymGetLineNext SymGetLineNext64 |   | #define SymGetLineNext SymGetLineNext64 | 
      | #else |   | #else | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetLineNext( |   | SymGetLineNext( | 
       | 
      |     IN     HANDLE             hProcess, |   |     __in HANDLE hProcess, | 
      |     IN OUT PIMAGEHLP_LINE     Line |   |     __inout PIMAGEHLP_LINE Line | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetLineNextW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PIMAGEHLP_LINEW Line | 
      |     ); |   |     ); | 
      | #endif |   | #endif | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetLinePrev64( |   | SymGetLinePrev64( | 
       | 
      |     IN     HANDLE               hProcess, |   |     __in HANDLE hProcess, | 
      |     IN OUT PIMAGEHLP_LINE64     Line |   |     __inout PIMAGEHLP_LINE64 Line | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetLinePrevW64( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PIMAGEHLP_LINEW64 Line | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define SymGetLinePrev SymGetLinePrev64 |   | #define SymGetLinePrev SymGetLinePrev64 | 
      | #else |   | #else | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetLinePrev( |   | SymGetLinePrev( | 
       | 
      |     IN     HANDLE             hProcess, |   |     __in HANDLE hProcess, | 
      |     IN OUT PIMAGEHLP_LINE     Line |   |     __inout PIMAGEHLP_LINE Line | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetLinePrevW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PIMAGEHLP_LINEW Line | 
      |     ); |   |     ); | 
      | #endif |   | #endif | 
       |   |  | 
       | 
       |   | ULONG | 
       |   | IMAGEAPI | 
       |   | SymGetFileLineOffsets64( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt PCSTR ModuleName, | 
       |   |     __in PCSTR FileName, | 
       |   |     __out_ecount(BufferLines) PDWORD64 Buffer, | 
       |   |     __in ULONG BufferLines | 
       |   |     ); | 
       |   |                                                                                  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymMatchFileName( |   | SymMatchFileName( | 
       | 
      |     IN  PSTR  FileName, |   |     __in PCSTR FileName, | 
      |     IN  PSTR  Match, |   |     __in PCSTR Match, | 
      |     OUT PSTR *FileNameStop, |   |     __deref_opt_out PSTR *FileNameStop, | 
      |     OUT PSTR *MatchStop |   |     __deref_opt_out PSTR *MatchStop | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymMatchFileNameW( | 
       |   |     __in PCWSTR FileName, | 
       |   |     __in PCWSTR Match, | 
       |   |     __deref_opt_out PWSTR *FileNameStop, | 
       |   |     __deref_opt_out PWSTR *MatchStop | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSourceFile( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 Base, | 
       |   |     __in PCSTR Params, | 
       |   |     __in PCSTR FileSpec, | 
       |   |     __out_ecount(Size) PSTR FilePath, | 
       |   |     __in DWORD Size | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSourceFileW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 Base, | 
       |   |     __in PCWSTR Params, | 
       |   |     __in PCWSTR FileSpec, | 
       |   |     __out_ecount(Size) PWSTR FilePath, | 
       |   |     __in DWORD Size | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSourceFileToken( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 Base, | 
       |   |     __in PCSTR FileSpec, | 
       |   |     __deref_out PVOID *Token, | 
       |   |     __out DWORD *Size | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSourceFileTokenW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 Base, | 
       |   |     __in PCWSTR FileSpec, | 
       |   |     __deref_out PVOID *Token, | 
       |   |     __out DWORD *Size | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSourceFileFromToken( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in PVOID Token, | 
       |   |     __in PCSTR Params, | 
       |   |     __out_ecount(Size) PSTR FilePath, | 
       |   |     __in DWORD Size | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSourceFileFromTokenW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in PVOID Token, | 
       |   |     __in PCWSTR Params, | 
       |   |     __out_ecount(Size) PWSTR FilePath, | 
       |   |     __in DWORD Size | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSourceVarFromToken( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in PVOID Token, | 
       |   |     __in_opt PCSTR Params, | 
       |   |     __in PCSTR VarName, | 
       |   |     __out_ecount(Size) PSTR Value, | 
       |   |     __in DWORD Size | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSourceVarFromTokenW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in PVOID Token, | 
       |   |     __in_opt PCWSTR Params, | 
       |   |     __in PCWSTR VarName, | 
       |   |     __out_ecount(Size) PWSTR Value, | 
       |   |     __in DWORD Size | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymInitialize( |   | SymInitialize( | 
       | 
      |     IN HANDLE   hProcess, |   |     __in HANDLE hProcess, | 
      |     IN PSTR     UserSearchPath, |   |     __in_opt PCSTR UserSearchPath, | 
      |     IN BOOL     fInvadeProcess |   |     __in BOOL fInvadeProcess | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymInitializeW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt PCWSTR UserSearchPath, | 
       |   |     __in BOOL fInvadeProcess | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetSearchPath( |   | SymGetSearchPath( | 
       | 
      |     IN  HANDLE          hProcess, |   |     __in HANDLE hProcess, | 
      |     OUT PSTR            SearchPath, |   |     __out_ecount(SearchPathLength) PSTR SearchPath, | 
      |     IN  DWORD           SearchPathLength |   |     __in DWORD SearchPathLength | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSearchPathW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __out_ecount(SearchPathLength) PWSTR SearchPath, | 
       |   |     __in DWORD SearchPathLength | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymSetSearchPath( |   | SymSetSearchPath( | 
       | 
      |     IN HANDLE           hProcess, |   |     __in HANDLE hProcess, | 
      |     IN PSTR             SearchPath |   |     __in_opt PCSTR SearchPath | 
      |     ); |   |     ); | 
       |   |  | 
       | 
      | DWORD64 |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
       | 
      | SymLoadModule64( |   | SymSetSearchPathW( | 
      |     IN  HANDLE          hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  HANDLE          hFile, |   |     __in_opt PCWSTR SearchPath | 
      |     IN  PSTR            ImageName, |   |  | 
      |     IN  PSTR            ModuleName, |   |  | 
      |     IN  DWORD64         BaseOfDll, |   |  | 
      |     IN  DWORD           SizeOfDll |   |  | 
      |     ); |   |     ); | 
       |   |  | 
       | 
      | #define SLMFLAG_VIRTUAL 0x1 |   | #define SLMFLAG_VIRTUAL     0x1 | 
       |   | #define SLMFLAG_ALT_INDEX   0x2 | 
       |   | #define SLMFLAG_NO_SYMBOLS  0x4 | 
       |   |  | 
      | DWORD64 |   | DWORD64 | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymLoadModuleEx( |   | SymLoadModuleEx( | 
       | 
      |     IN  HANDLE         hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  HANDLE         hFile, |   |     __in_opt HANDLE hFile, | 
      |     IN  PSTR           ImageName, |   |     __in_opt PCSTR ImageName, | 
      |     IN  PSTR           ModuleName, |   |     __in_opt PCSTR ModuleName, | 
      |     IN  DWORD64        BaseOfDll, |   |     __in DWORD64 BaseOfDll, | 
      |     IN  DWORD          DllSize, |   |     __in DWORD DllSize, | 
      |     IN  PMODLOAD_DATA  Data, |   |     __in_opt PMODLOAD_DATA Data, | 
      |     IN  DWORD          Flags |   |     __in_opt DWORD Flags | 
      |     ); |   |     ); | 
       |   |  | 
       | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | DWORD64 | 
      | #define SymLoadModule SymLoadModule64 |   |  | 
      | #else |   |  | 
      | DWORD |   |  | 
      | IMAGEAPI |   | IMAGEAPI | 
       | 
      | SymLoadModule( |   | SymLoadModuleExW( | 
      |     IN  HANDLE          hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  HANDLE          hFile, |   |     __in_opt HANDLE hFile, | 
      |     IN  PSTR            ImageName, |   |     __in_opt PCWSTR ImageName, | 
      |     IN  PSTR            ModuleName, |   |     __in_opt PCWSTR ModuleName, | 
      |     IN  DWORD           BaseOfDll, |   |     __in DWORD64 BaseOfDll, | 
      |     IN  DWORD           SizeOfDll |   |     __in DWORD DllSize, | 
       |   |     __in_opt PMODLOAD_DATA Data, | 
       |   |     __in_opt DWORD Flags | 
      |     ); |   |     ); | 
       | 
      | #endif |   |  | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymUnloadModule64( |   | SymUnloadModule64( | 
       | 
      |     IN  HANDLE          hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  DWORD64         BaseOfDll |   |     __in DWORD64 BaseOfDll | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define SymUnloadModule SymUnloadModule64 |   | #define SymUnloadModule SymUnloadModule64 | 
      | #else |   | #else | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymUnloadModule( |   | SymUnloadModule( | 
       | 
      |     IN  HANDLE          hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  DWORD           BaseOfDll |   |     __in DWORD BaseOfDll | 
      |     ); |   |     ); | 
      | #endif |   | #endif | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymUnDName64( |   | SymUnDName64( | 
       | 
      |     IN  PIMAGEHLP_SYMBOL64 sym,               // Symbol to undecorate |   |     __in PIMAGEHLP_SYMBOL64 sym,            // Symbol to undecorate | 
      |     OUT PSTR               UnDecName,         // Buffer to store undecorated nam |   |     __out_ecount(UnDecNameLength) PSTR UnDecName,   // Buffer to store undecorat | 
      | e in |   | ed name in | 
      |     IN  DWORD              UnDecNameLength    // Size of the buffer |   |     __in DWORD UnDecNameLength              // Size of the buffer | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define SymUnDName SymUnDName64 |   | #define SymUnDName SymUnDName64 | 
      | #else |   | #else | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymUnDName( |   | SymUnDName( | 
       | 
      |     IN  PIMAGEHLP_SYMBOL sym,               // Symbol to undecorate |   |     __in PIMAGEHLP_SYMBOL sym,              // Symbol to undecorate | 
      |     OUT PSTR             UnDecName,         // Buffer to store undecorated name  |   |     __out_ecount(UnDecNameLength) PSTR UnDecName,   // Buffer to store undecorat | 
      | in |   | ed name in | 
      |     IN  DWORD            UnDecNameLength    // Size of the buffer |   |     __in DWORD UnDecNameLength              // Size of the buffer | 
      |     ); |   |     ); | 
      | #endif |   | #endif | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymRegisterCallback64( |   | SymRegisterCallback64( | 
       | 
      |     IN HANDLE                        hProcess, |   |     __in HANDLE hProcess, | 
      |     IN PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction, |   |     __in PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction, | 
      |     IN ULONG64                       UserContext |   |     __in ULONG64 UserContext | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymRegisterCallbackW64( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction, | 
       |   |     __in ULONG64 UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymRegisterFunctionEntryCallback64( |   | SymRegisterFunctionEntryCallback64( | 
       | 
      |     IN HANDLE                       hProcess, |   |     __in HANDLE hProcess, | 
      |     IN PSYMBOL_FUNCENTRY_CALLBACK64 CallbackFunction, |   |     __in PSYMBOL_FUNCENTRY_CALLBACK64 CallbackFunction, | 
      |     IN ULONG64                      UserContext |   |     __in ULONG64 UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define SymRegisterCallback SymRegisterCallback64 |   | #define SymRegisterCallback SymRegisterCallback64 | 
      | #define SymRegisterFunctionEntryCallback SymRegisterFunctionEntryCallback64 |   | #define SymRegisterFunctionEntryCallback SymRegisterFunctionEntryCallback64 | 
      | #else |   | #else | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymRegisterCallback( |   | SymRegisterCallback( | 
       | 
      |     IN HANDLE                      hProcess, |   |     __in HANDLE hProcess, | 
      |     IN PSYMBOL_REGISTERED_CALLBACK CallbackFunction, |   |     __in PSYMBOL_REGISTERED_CALLBACK CallbackFunction, | 
      |     IN PVOID                       UserContext |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymRegisterFunctionEntryCallback( |   | SymRegisterFunctionEntryCallback( | 
       | 
      |     IN HANDLE                     hProcess, |   |     __in HANDLE hProcess, | 
      |     IN PSYMBOL_FUNCENTRY_CALLBACK CallbackFunction, |   |     __in PSYMBOL_FUNCENTRY_CALLBACK CallbackFunction, | 
      |     IN PVOID                      UserContext |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
      | #endif |   | #endif | 
       |   |  | 
      | typedef struct _IMAGEHLP_SYMBOL_SRC { |   | typedef struct _IMAGEHLP_SYMBOL_SRC { | 
      |     DWORD sizeofstruct; |   |     DWORD sizeofstruct; | 
      |     DWORD type; |   |     DWORD type; | 
      |     char  file[MAX_PATH]; |   |     char  file[MAX_PATH]; | 
      | } IMAGEHLP_SYMBOL_SRC, *PIMAGEHLP_SYMBOL_SRC; |   | } IMAGEHLP_SYMBOL_SRC, *PIMAGEHLP_SYMBOL_SRC; | 
       |   |  | 
      | typedef struct _MODULE_TYPE_INFO { // AKA TYPTYP |   | typedef struct _MODULE_TYPE_INFO { // AKA TYPTYP | 
      |     USHORT      dataLength; |   |     USHORT      dataLength; | 
      |     USHORT      leaf; |   |     USHORT      leaf; | 
      |     BYTE        data[1]; |   |     BYTE        data[1]; | 
      | } MODULE_TYPE_INFO, *PMODULE_TYPE_INFO; |   | } MODULE_TYPE_INFO, *PMODULE_TYPE_INFO; | 
       |   |  | 
      | typedef struct _SYMBOL_INFO { |   | typedef struct _SYMBOL_INFO { | 
      |     ULONG       SizeOfStruct; |   |     ULONG       SizeOfStruct; | 
      |     ULONG       TypeIndex;        // Type Index of symbol |   |     ULONG       TypeIndex;        // Type Index of symbol | 
      |     ULONG64     Reserved[2]; |   |     ULONG64     Reserved[2]; | 
       | 
      |     ULONG       info; |   |     ULONG       Index; | 
      |     ULONG       Size; |   |     ULONG       Size; | 
      |     ULONG64     ModBase;          // Base Address of module comtaining this symb
ol |   |     ULONG64     ModBase;          // Base Address of module comtaining this symb
ol | 
      |     ULONG       Flags; |   |     ULONG       Flags; | 
      |     ULONG64     Value;            // Value of symbol, ValuePresent should be 1 |   |     ULONG64     Value;            // Value of symbol, ValuePresent should be 1 | 
      |     ULONG64     Address;          // Address of symbol including base address of
 module |   |     ULONG64     Address;          // Address of symbol including base address of
 module | 
      |     ULONG       Register;         // register holding value or pointer to value |   |     ULONG       Register;         // register holding value or pointer to value | 
      |     ULONG       Scope;            // scope of the symbol |   |     ULONG       Scope;            // scope of the symbol | 
      |     ULONG       Tag;              // pdb classification |   |     ULONG       Tag;              // pdb classification | 
      |     ULONG       NameLen;          // Actual length of name |   |     ULONG       NameLen;          // Actual length of name | 
      |     ULONG       MaxNameLen; |   |     ULONG       MaxNameLen; | 
      |     CHAR        Name[1];          // Name of symbol |   |     CHAR        Name[1];          // Name of symbol | 
      | } SYMBOL_INFO, *PSYMBOL_INFO; |   | } SYMBOL_INFO, *PSYMBOL_INFO; | 
       |   |  | 
      | typedef struct _SYMBOL_INFO_PACKAGE { |   | typedef struct _SYMBOL_INFO_PACKAGE { | 
      |     SYMBOL_INFO si; |   |     SYMBOL_INFO si; | 
      |     CHAR        name[MAX_SYM_NAME + 1]; |   |     CHAR        name[MAX_SYM_NAME + 1]; | 
      | } SYMBOL_INFO_PACKAGE, *PSYMBOL_INFO_PACKAGE; |   | } SYMBOL_INFO_PACKAGE, *PSYMBOL_INFO_PACKAGE; | 
       |   |  | 
       | 
       |   | typedef struct _SYMBOL_INFOW { | 
       |   |     ULONG       SizeOfStruct; | 
       |   |     ULONG       TypeIndex;        // Type Index of symbol | 
       |   |     ULONG64     Reserved[2]; | 
       |   |     ULONG       Index; | 
       |   |     ULONG       Size; | 
       |   |     ULONG64     ModBase;          // Base Address of module comtaining this symb | 
       |   | ol | 
       |   |     ULONG       Flags; | 
       |   |     ULONG64     Value;            // Value of symbol, ValuePresent should be 1 | 
       |   |     ULONG64     Address;          // Address of symbol including base address of | 
       |   |  module | 
       |   |     ULONG       Register;         // register holding value or pointer to value | 
       |   |     ULONG       Scope;            // scope of the symbol | 
       |   |     ULONG       Tag;              // pdb classification | 
       |   |     ULONG       NameLen;          // Actual length of name | 
       |   |     ULONG       MaxNameLen; | 
       |   |     WCHAR       Name[1];          // Name of symbol | 
       |   | } SYMBOL_INFOW, *PSYMBOL_INFOW; | 
       |   |  | 
       |   | typedef struct _SYMBOL_INFO_PACKAGEW { | 
       |   |     SYMBOL_INFOW si; | 
       |   |     WCHAR        name[MAX_SYM_NAME + 1]; | 
       |   | } SYMBOL_INFO_PACKAGEW, *PSYMBOL_INFO_PACKAGEW; | 
       |   |                                                                                  | 
      | typedef struct _IMAGEHLP_STACK_FRAME |   | typedef struct _IMAGEHLP_STACK_FRAME | 
      | { |   | { | 
      |     ULONG64 InstructionOffset; |   |     ULONG64 InstructionOffset; | 
      |     ULONG64 ReturnOffset; |   |     ULONG64 ReturnOffset; | 
      |     ULONG64 FrameOffset; |   |     ULONG64 FrameOffset; | 
      |     ULONG64 StackOffset; |   |     ULONG64 StackOffset; | 
      |     ULONG64 BackingStoreOffset; |   |     ULONG64 BackingStoreOffset; | 
      |     ULONG64 FuncTableEntry; |   |     ULONG64 FuncTableEntry; | 
      |     ULONG64 Params[4]; |   |     ULONG64 Params[4]; | 
      |     ULONG64 Reserved[5]; |   |     ULONG64 Reserved[5]; | 
      |     BOOL    Virtual; |   |     BOOL    Virtual; | 
      |     ULONG   Reserved2; |   |     ULONG   Reserved2; | 
      | } IMAGEHLP_STACK_FRAME, *PIMAGEHLP_STACK_FRAME; |   | } IMAGEHLP_STACK_FRAME, *PIMAGEHLP_STACK_FRAME; | 
       |   |  | 
      | typedef VOID IMAGEHLP_CONTEXT, *PIMAGEHLP_CONTEXT; |   | typedef VOID IMAGEHLP_CONTEXT, *PIMAGEHLP_CONTEXT; | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymSetContext( |   | SymSetContext( | 
       | 
      |     HANDLE hProcess, |   |     __in HANDLE hProcess, | 
      |     PIMAGEHLP_STACK_FRAME StackFrame, |   |     __in PIMAGEHLP_STACK_FRAME StackFrame, | 
      |     PIMAGEHLP_CONTEXT Context |   |     __in_opt PIMAGEHLP_CONTEXT Context | 
       |   |     ); | 
       |   |  | 
       |   | typedef BOOL | 
       |   | (CALLBACK *PSYM_ENUMPROCESSES_CALLBACK)( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in PVOID UserContext | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymEnumProcesses( | 
       |   |     __in PSYM_ENUMPROCESSES_CALLBACK EnumProcessesCallback, | 
       |   |     __in PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymFromAddr( |   | SymFromAddr( | 
       | 
      |     IN  HANDLE              hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  DWORD64             Address, |   |     __in DWORD64 Address, | 
      |     OUT PDWORD64            Displacement, |   |     __out_opt PDWORD64 Displacement, | 
      |     IN OUT PSYMBOL_INFO     Symbol |   |     __inout PSYMBOL_INFO Symbol | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymFromAddrW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in DWORD64 Address, | 
       |   |     __out_opt PDWORD64 Displacement, | 
       |   |     __inout PSYMBOL_INFOW Symbol | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymFromToken( |   | SymFromToken( | 
       | 
      |     IN  HANDLE              hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  DWORD64             Base, |   |     __in DWORD64 Base, | 
      |     IN  DWORD               Token, |   |     __in DWORD Token, | 
      |     IN OUT PSYMBOL_INFO     Symbol |   |     __inout PSYMBOL_INFO Symbol | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymFromTokenW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in DWORD64 Base, | 
       |   |     __in DWORD Token, | 
       |   |     __inout PSYMBOL_INFOW Symbol | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymNext( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PSYMBOL_INFO si | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymNextW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PSYMBOL_INFOW siw | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymPrev( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PSYMBOL_INFO si | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymPrevW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PSYMBOL_INFOW siw | 
      |     ); |   |     ); | 
       |   |  | 
      | // While SymFromName will provide a symbol from a name, |   | // While SymFromName will provide a symbol from a name, | 
      | // SymEnumSymbols can provide the same matching information |   | // SymEnumSymbols can provide the same matching information | 
      | // for ALL symbols with a matching name, even regular |   | // for ALL symbols with a matching name, even regular | 
      | // expressions.  That way you can search across modules |   | // expressions.  That way you can search across modules | 
      | // and differentiate between identically named symbols. |   | // and differentiate between identically named symbols. | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymFromName( |   | SymFromName( | 
       | 
      |     IN  HANDLE              hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  LPSTR               Name, |   |     __in PCSTR Name, | 
      |     OUT PSYMBOL_INFO        Symbol |   |     __inout PSYMBOL_INFO Symbol | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymFromNameW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in PCWSTR Name, | 
       |   |     __inout PSYMBOL_INFOW Symbol | 
      |     ); |   |     ); | 
       |   |  | 
      | typedef BOOL |   | typedef BOOL | 
      | (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)( |   | (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)( | 
       | 
      |     PSYMBOL_INFO  pSymInfo, |   |     __in PSYMBOL_INFO pSymInfo, | 
      |     ULONG         SymbolSize, |   |     __in ULONG SymbolSize, | 
      |     PVOID         UserContext |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymEnumSymbols( |   | SymEnumSymbols( | 
       | 
      |     IN HANDLE                       hProcess, |   |     __in HANDLE hProcess, | 
      |     IN ULONG64                      BaseOfDll, |   |     __in ULONG64 BaseOfDll, | 
      |     IN PCSTR                        Mask, |   |     __in_opt PCSTR Mask, | 
      |     IN PSYM_ENUMERATESYMBOLS_CALLBACK    EnumSymbolsCallback, |   |     __in PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, | 
      |     IN PVOID                        UserContext |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   |  | 
       |   | typedef BOOL | 
       |   | (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)( | 
       |   |     __in PSYMBOL_INFOW pSymInfo, | 
       |   |     __in ULONG SymbolSize, | 
       |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymEnumSymbolsW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 BaseOfDll, | 
       |   |     __in_opt PCWSTR Mask, | 
       |   |     __in PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback, | 
       |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymEnumSymbolsForAddr( |   | SymEnumSymbolsForAddr( | 
       | 
      |     IN HANDLE                       hProcess, |   |     __in HANDLE hProcess, | 
      |     IN DWORD64                      Address, |   |     __in DWORD64 Address, | 
      |     IN PSYM_ENUMERATESYMBOLS_CALLBACK    EnumSymbolsCallback, |   |     __in PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, | 
      |     IN PVOID                        UserContext |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
       | 
      | #define SYMENUMFLAG_FULLSRCH        1 |   | BOOL | 
      | #define SYMENUMFLAG_SPEEDSRCH       2 |   | IMAGEAPI | 
       |   | SymEnumSymbolsForAddrW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in DWORD64 Address, | 
       |   |     __in PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback, | 
       |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   |                                                                                  | 
       |   | #define SYMSEARCH_MASKOBJS      0x01    // used internally to implement other AP | 
       |   | Is | 
       |   | #define SYMSEARCH_RECURSE       0X02    // recurse scopes | 
       |   | #define SYMSEARCH_GLOBALSONLY   0X04    // search only for global symbols | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymSearch( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 BaseOfDll, | 
       |   |     __in_opt DWORD Index, | 
       |   |     __in_opt DWORD SymTag, | 
       |   |     __in_opt PCSTR Mask, | 
       |   |     __in_opt DWORD64 Address, | 
       |   |     __in PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, | 
       |   |     __in_opt PVOID UserContext, | 
       |   |     __in DWORD Options | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymSearchW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 BaseOfDll, | 
       |   |     __in_opt DWORD Index, | 
       |   |     __in_opt DWORD SymTag, | 
       |   |     __in_opt PCWSTR Mask, | 
       |   |     __in_opt DWORD64 Address, | 
       |   |     __in PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback, | 
       |   |     __in_opt PVOID UserContext, | 
       |   |     __in DWORD Options | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetScope( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 BaseOfDll, | 
       |   |     __in DWORD Index, | 
       |   |     __inout PSYMBOL_INFO Symbol | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetScopeW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 BaseOfDll, | 
       |   |     __in DWORD Index, | 
       |   |     __inout PSYMBOL_INFOW Symbol | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymFromIndex( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 BaseOfDll, | 
       |   |     __in DWORD Index, | 
       |   |     __inout PSYMBOL_INFO Symbol | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymFromIndexW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 BaseOfDll, | 
       |   |     __in DWORD Index, | 
       |   |     __inout PSYMBOL_INFOW Symbol | 
       |   |     ); | 
       |   |  | 
      | typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO { |   | typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO { | 
      |     TI_GET_SYMTAG, |   |     TI_GET_SYMTAG, | 
      |     TI_GET_SYMNAME, |   |     TI_GET_SYMNAME, | 
      |     TI_GET_LENGTH, |   |     TI_GET_LENGTH, | 
      |     TI_GET_TYPE, |   |     TI_GET_TYPE, | 
      |     TI_GET_TYPEID, |   |     TI_GET_TYPEID, | 
      |     TI_GET_BASETYPE, |   |     TI_GET_BASETYPE, | 
      |     TI_GET_ARRAYINDEXTYPEID, |   |     TI_GET_ARRAYINDEXTYPEID, | 
      |     TI_FINDCHILDREN, |   |     TI_FINDCHILDREN, | 
       |   |  | 
      | skipping to change at line 1802 |   | skipping to change at line 2540 | 
      |     TI_GET_VIRTUALBASEPOINTEROFFSET, |   |     TI_GET_VIRTUALBASEPOINTEROFFSET, | 
      |     TI_GET_CLASSPARENTID, |   |     TI_GET_CLASSPARENTID, | 
      |     TI_GET_NESTED, |   |     TI_GET_NESTED, | 
      |     TI_GET_SYMINDEX, |   |     TI_GET_SYMINDEX, | 
      |     TI_GET_LEXICALPARENT, |   |     TI_GET_LEXICALPARENT, | 
      |     TI_GET_ADDRESS, |   |     TI_GET_ADDRESS, | 
      |     TI_GET_THISADJUST, |   |     TI_GET_THISADJUST, | 
      |     TI_GET_UDTKIND, |   |     TI_GET_UDTKIND, | 
      |     TI_IS_EQUIV_TO, |   |     TI_IS_EQUIV_TO, | 
      |     TI_GET_CALLING_CONVENTION, |   |     TI_GET_CALLING_CONVENTION, | 
       | 
       |   |     TI_IS_CLOSE_EQUIV_TO, | 
       |   |     TI_GTIEX_REQS_VALID, | 
       |   |     TI_GET_VIRTUALBASEOFFSET, | 
       |   |     TI_GET_VIRTUALBASEDISPINDEX, | 
       |   |     TI_GET_IS_REFERENCE, | 
       |   |     IMAGEHLP_SYMBOL_TYPE_INFO_MAX, | 
      | } IMAGEHLP_SYMBOL_TYPE_INFO; |   | } IMAGEHLP_SYMBOL_TYPE_INFO; | 
       |   |  | 
      | typedef struct _TI_FINDCHILDREN_PARAMS { |   | typedef struct _TI_FINDCHILDREN_PARAMS { | 
      |     ULONG Count; |   |     ULONG Count; | 
      |     ULONG Start; |   |     ULONG Start; | 
      |     ULONG ChildId[1]; |   |     ULONG ChildId[1]; | 
      | } TI_FINDCHILDREN_PARAMS; |   | } TI_FINDCHILDREN_PARAMS; | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetTypeInfo( |   | SymGetTypeInfo( | 
       | 
      |     IN  HANDLE          hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  DWORD64         ModBase, |   |     __in DWORD64 ModBase, | 
      |     IN  ULONG           TypeId, |   |     __in ULONG TypeId, | 
      |     IN  IMAGEHLP_SYMBOL_TYPE_INFO GetType, |   |     __in IMAGEHLP_SYMBOL_TYPE_INFO GetType, | 
      |     OUT PVOID           pInfo |   |     __out PVOID pInfo | 
       |   |     ); | 
       |   |  | 
       |   | #define IMAGEHLP_GET_TYPE_INFO_UNCACHED 0x00000001 | 
       |   | #define IMAGEHLP_GET_TYPE_INFO_CHILDREN 0x00000002 | 
       |   |  | 
       |   | typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS { | 
       |   |     IN  ULONG    SizeOfStruct; | 
       |   |     IN  ULONG    Flags; | 
       |   |     IN  ULONG    NumIds; | 
       |   |     IN  PULONG   TypeIds; | 
       |   |     IN  ULONG64  TagFilter; | 
       |   |     IN  ULONG    NumReqs; | 
       |   |     IN  IMAGEHLP_SYMBOL_TYPE_INFO* ReqKinds; | 
       |   |     IN  PULONG_PTR ReqOffsets; | 
       |   |     IN  PULONG   ReqSizes; | 
       |   |     IN  ULONG_PTR ReqStride; | 
       |   |     IN  ULONG_PTR BufferSize; | 
       |   |     OUT PVOID    Buffer; | 
       |   |     OUT ULONG    EntriesMatched; | 
       |   |     OUT ULONG    EntriesFilled; | 
       |   |     OUT ULONG64  TagsFound; | 
       |   |     OUT ULONG64  AllReqsValid; | 
       |   |     IN  ULONG    NumReqsValid; | 
       |   |     OUT PULONG64 ReqsValid OPTIONAL; | 
       |   | } IMAGEHLP_GET_TYPE_INFO_PARAMS, *PIMAGEHLP_GET_TYPE_INFO_PARAMS; | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetTypeInfoEx( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in DWORD64 ModBase, | 
       |   |     __inout PIMAGEHLP_GET_TYPE_INFO_PARAMS Params | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymEnumTypes( |   | SymEnumTypes( | 
       | 
      |     IN HANDLE                       hProcess, |   |     __in HANDLE hProcess, | 
      |     IN ULONG64                      BaseOfDll, |   |     __in ULONG64 BaseOfDll, | 
      |     IN PSYM_ENUMERATESYMBOLS_CALLBACK    EnumSymbolsCallback, |   |     __in PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, | 
      |     IN PVOID                        UserContext |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymEnumTypesW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 BaseOfDll, | 
       |   |     __in PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback, | 
       |   |     __in_opt PVOID UserContext | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetTypeFromName( |   | SymGetTypeFromName( | 
       | 
      |     IN  HANDLE              hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  ULONG64             BaseOfDll, |   |     __in ULONG64 BaseOfDll, | 
      |     IN  LPSTR               Name, |   |     __in PCSTR Name, | 
      |     OUT PSYMBOL_INFO        Symbol |   |     __inout PSYMBOL_INFO Symbol | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetTypeFromNameW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 BaseOfDll, | 
       |   |     __in PCWSTR Name, | 
       |   |     __inout PSYMBOL_INFOW Symbol | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymAddSymbol( |   | SymAddSymbol( | 
       | 
      |     IN HANDLE                       hProcess, |   |     __in HANDLE hProcess, | 
      |     IN ULONG64                      BaseOfDll, |   |     __in ULONG64 BaseOfDll, | 
      |     IN PCSTR                        Name, |   |     __in PCSTR Name, | 
      |     IN DWORD64                      Address, |   |     __in DWORD64 Address, | 
      |     IN DWORD                        Size, |   |     __in DWORD Size, | 
      |     IN DWORD                        Flags |   |     __in DWORD Flags | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymAddSymbolW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 BaseOfDll, | 
       |   |     __in PCWSTR Name, | 
       |   |     __in DWORD64 Address, | 
       |   |     __in DWORD Size, | 
       |   |     __in DWORD Flags | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymDeleteSymbol( |   | SymDeleteSymbol( | 
       | 
      |     IN HANDLE                       hProcess, |   |     __in HANDLE hProcess, | 
      |     IN ULONG64                      BaseOfDll, |   |     __in ULONG64 BaseOfDll, | 
      |     IN PCSTR                        Name, |   |     __in_opt PCSTR Name, | 
      |     IN DWORD64                      Address, |   |     __in DWORD64 Address, | 
      |     IN DWORD                        Flags |   |     __in DWORD Flags | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymDeleteSymbolW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 BaseOfDll, | 
       |   |     __in_opt PCWSTR Name, | 
       |   |     __in DWORD64 Address, | 
       |   |     __in DWORD Flags | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymRefreshModuleList( | 
       |   |     __in HANDLE hProcess | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymSrvIsStoreW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in PCWSTR path | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymSrvIsStore( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in PCSTR path | 
       |   |     ); | 
       |   |  | 
       |   | PCSTR | 
       |   | IMAGEAPI | 
       |   | SymSrvDeltaName( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt PCSTR SymPath, | 
       |   |     __in PCSTR Type, | 
       |   |     __in PCSTR File1, | 
       |   |     __in PCSTR File2 | 
       |   |     ); | 
       |   |  | 
       |   | PCWSTR | 
       |   | IMAGEAPI | 
       |   | SymSrvDeltaNameW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt PCWSTR SymPath, | 
       |   |     __in PCWSTR Type, | 
       |   |     __in PCWSTR File1, | 
       |   |     __in PCWSTR File2 | 
       |   |     ); | 
       |   |  | 
       |   | PCSTR | 
       |   | IMAGEAPI | 
       |   | SymSrvGetSupplement( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt PCSTR SymPath, | 
       |   |     __in PCSTR Node, | 
       |   |     __in PCSTR File | 
       |   |     ); | 
       |   |  | 
       |   | PCWSTR | 
       |   | IMAGEAPI | 
       |   | SymSrvGetSupplementW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt PCWSTR SymPath, | 
       |   |     __in PCWSTR Node, | 
       |   |     __in PCWSTR File | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymSrvGetFileIndexes( | 
       |   |     __in PCSTR File, | 
       |   |     __out GUID *Id, | 
       |   |     __out PDWORD Val1, | 
       |   |     __out_opt PDWORD Val2, | 
       |   |     __in DWORD Flags | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymSrvGetFileIndexesW( | 
       |   |     __in PCWSTR File, | 
       |   |     __out GUID *Id, | 
       |   |     __out PDWORD Val1, | 
       |   |     __out_opt PDWORD Val2, | 
       |   |     __in DWORD Flags | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymSrvGetFileIndexStringW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt PCWSTR SrvPath, | 
       |   |     __in PCWSTR File, | 
       |   |     __out_ecount(Size) PWSTR Index, | 
       |   |     __in size_t Size, | 
       |   |     __in DWORD Flags | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymSrvGetFileIndexString( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt PCSTR SrvPath, | 
       |   |     __in PCSTR File, | 
       |   |     __out_ecount(Size) PSTR Index, | 
       |   |     __in size_t Size, | 
       |   |     __in DWORD Flags | 
       |   |     ); | 
       |   |  | 
       |   | typedef struct { | 
       |   |     DWORD sizeofstruct; | 
       |   |     char file[MAX_PATH +1]; | 
       |   |     BOOL  stripped; | 
       |   |     DWORD timestamp; | 
       |   |     DWORD size; | 
       |   |     char dbgfile[MAX_PATH +1]; | 
       |   |     char pdbfile[MAX_PATH + 1]; | 
       |   |     GUID  guid; | 
       |   |     DWORD sig; | 
       |   |     DWORD age; | 
       |   | } SYMSRV_INDEX_INFO, *PSYMSRV_INDEX_INFO; | 
       |   |  | 
       |   | typedef struct { | 
       |   |     DWORD sizeofstruct; | 
       |   |     WCHAR file[MAX_PATH +1]; | 
       |   |     BOOL  stripped; | 
       |   |     DWORD timestamp; | 
       |   |     DWORD size; | 
       |   |     WCHAR dbgfile[MAX_PATH +1]; | 
       |   |     WCHAR pdbfile[MAX_PATH + 1]; | 
       |   |     GUID  guid; | 
       |   |     DWORD sig; | 
       |   |     DWORD age; | 
       |   | } SYMSRV_INDEX_INFOW, *PSYMSRV_INDEX_INFOW; | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymSrvGetFileIndexInfo( | 
       |   |     __in PCSTR File, | 
       |   |     __out PSYMSRV_INDEX_INFO Info, | 
       |   |     __in DWORD Flags | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymSrvGetFileIndexInfoW( | 
       |   |     __in PCWSTR File, | 
       |   |     __out PSYMSRV_INDEX_INFOW Info, | 
       |   |     __in DWORD Flags | 
       |   |     ); | 
       |   |  | 
       |   | PCSTR | 
       |   | IMAGEAPI | 
       |   | SymSrvStoreSupplement( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt PCSTR SrvPath, | 
       |   |     __in PCSTR Node, | 
       |   |     __in PCSTR File, | 
       |   |     __in DWORD Flags | 
       |   |     ); | 
       |   |  | 
       |   | PCWSTR | 
       |   | IMAGEAPI | 
       |   | SymSrvStoreSupplementW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt PCWSTR SymPath, | 
       |   |     __in PCWSTR Node, | 
       |   |     __in PCWSTR File, | 
       |   |     __in DWORD Flags | 
       |   |     ); | 
       |   |  | 
       |   | PCSTR | 
       |   | IMAGEAPI | 
       |   | SymSrvStoreFile( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt PCSTR SrvPath, | 
       |   |     __in PCSTR File, | 
       |   |     __in DWORD Flags | 
       |   |     ); | 
       |   |  | 
       |   | PCWSTR | 
       |   | IMAGEAPI | 
       |   | SymSrvStoreFileW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt PCWSTR SrvPath, | 
       |   |     __in PCWSTR File, | 
       |   |     __in DWORD Flags | 
       |   |     ); | 
       |   |  | 
       |   | // used by SymGetSymbolFile's "Type" parameter | 
       |   |  | 
       |   | typedef enum { | 
       |   |     sfImage = 0, | 
       |   |     sfDbg, | 
       |   |     sfPdb, | 
       |   |     sfMpd, | 
       |   |     sfMax | 
       |   | }; | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSymbolFile( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt PCSTR SymPath, | 
       |   |     __in PCSTR ImageFile, | 
       |   |     __in DWORD Type, | 
       |   |     __out_ecount(cSymbolFile) PSTR SymbolFile, | 
       |   |     __in size_t cSymbolFile, | 
       |   |     __out_ecount(cDbgFile) PSTR DbgFile, | 
       |   |     __in size_t cDbgFile | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSymbolFileW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt PCWSTR SymPath, | 
       |   |     __in PCWSTR ImageFile, | 
       |   |     __in DWORD Type, | 
       |   |     __out_ecount(cSymbolFile) PWSTR SymbolFile, | 
       |   |     __in size_t cSymbolFile, | 
       |   |     __out_ecount(cDbgFile) PWSTR DbgFile, | 
       |   |     __in size_t cDbgFile | 
      |     ); |   |     ); | 
       |   |  | 
      | // |   | // | 
      | // Full user-mode dump creation. |   | // Full user-mode dump creation. | 
      | // |   | // | 
       |   |  | 
      | typedef BOOL (WINAPI *PDBGHELP_CREATE_USER_DUMP_CALLBACK)( |   | typedef BOOL (WINAPI *PDBGHELP_CREATE_USER_DUMP_CALLBACK)( | 
       | 
      |     DWORD       DataType, |   |     __in DWORD DataType, | 
      |     PVOID*      Data, |   |     __in PVOID* Data, | 
      |     LPDWORD     DataLength, |   |     __out LPDWORD DataLength, | 
      |     PVOID       UserData |   |     __in_opt PVOID UserData | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | WINAPI |   | WINAPI | 
      | DbgHelpCreateUserDump( |   | DbgHelpCreateUserDump( | 
       | 
      |     IN LPSTR                              FileName, |   |     __in_opt LPCSTR FileName, | 
      |     IN PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback, |   |     __in PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback, | 
      |     IN PVOID                              UserData |   |     __in_opt PVOID UserData | 
      |     ); |   |     ); | 
       |   |  | 
      | BOOL |   | BOOL | 
      | WINAPI |   | WINAPI | 
      | DbgHelpCreateUserDumpW( |   | DbgHelpCreateUserDumpW( | 
       | 
      |     IN LPWSTR                             FileName, |   |     __in_opt LPCWSTR FileName, | 
      |     IN PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback, |   |     __in PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback, | 
      |     IN PVOID                              UserData |   |     __in_opt PVOID UserData | 
      |     ); |   |     ); | 
       |   |  | 
      | // ----------------------------------------------------------------- |   | // ----------------------------------------------------------------- | 
      | // The following 4 legacy APIs are fully supported, but newer |   | // The following 4 legacy APIs are fully supported, but newer | 
      | // ones are recommended.  SymFromName and SymFromAddr provide |   | // ones are recommended.  SymFromName and SymFromAddr provide | 
      | // much more detailed info on the returned symbol. |   | // much more detailed info on the returned symbol. | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetSymFromAddr64( |   | SymGetSymFromAddr64( | 
       | 
      |     IN  HANDLE              hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  DWORD64             qwAddr, |   |     __in DWORD64 qwAddr, | 
      |     OUT PDWORD64            pdwDisplacement, |   |     __out_opt PDWORD64 pdwDisplacement, | 
      |     OUT PIMAGEHLP_SYMBOL64  Symbol |   |     __inout PIMAGEHLP_SYMBOL64  Symbol | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define SymGetSymFromAddr SymGetSymFromAddr64 |   | #define SymGetSymFromAddr SymGetSymFromAddr64 | 
      | #else |   | #else | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetSymFromAddr( |   | SymGetSymFromAddr( | 
       | 
      |     IN  HANDLE            hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  DWORD             dwAddr, |   |     __in DWORD dwAddr, | 
      |     OUT PDWORD            pdwDisplacement, |   |     __out_opt PDWORD pdwDisplacement, | 
      |     OUT PIMAGEHLP_SYMBOL  Symbol |   |     __inout PIMAGEHLP_SYMBOL Symbol | 
      |     ); |   |     ); | 
      | #endif |   | #endif | 
       |   |  | 
      | // While following two APIs will provide a symbol from a name, |   | // While following two APIs will provide a symbol from a name, | 
      | // SymEnumSymbols can provide the same matching information |   | // SymEnumSymbols can provide the same matching information | 
      | // for ALL symbols with a matching name, even regular |   | // for ALL symbols with a matching name, even regular | 
      | // expressions.  That way you can search across modules |   | // expressions.  That way you can search across modules | 
      | // and differentiate between identically named symbols. |   | // and differentiate between identically named symbols. | 
       |   |  | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetSymFromName64( |   | SymGetSymFromName64( | 
       | 
      |     IN  HANDLE              hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  PSTR                Name, |   |     __in PCSTR Name, | 
      |     OUT PIMAGEHLP_SYMBOL64  Symbol |   |     __inout PIMAGEHLP_SYMBOL64 Symbol | 
      |     ); |   |     ); | 
       |   |  | 
      | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
      | #define SymGetSymFromName SymGetSymFromName64 |   | #define SymGetSymFromName SymGetSymFromName64 | 
      | #else |   | #else | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymGetSymFromName( |   | SymGetSymFromName( | 
       | 
      |     IN  HANDLE            hProcess, |   |     __in HANDLE hProcess, | 
      |     IN  PSTR              Name, |   |     __in PCSTR Name, | 
      |     OUT PIMAGEHLP_SYMBOL  Symbol |   |     __inout PIMAGEHLP_SYMBOL Symbol | 
      |     ); |   |     ); | 
      | #endif |   | #endif | 
       |   |  | 
       | 
       |   | // Symbol server exports | 
       |   |  | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERPROC)(PCSTR, PCSTR, PVOID, DWORD, DWORD, PSTR | 
       |   | ); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERPROCA)(PCSTR, PCSTR, PVOID, DWORD, DWORD, PST | 
       |   | R); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERPROCW)(PCWSTR, PCWSTR, PVOID, DWORD, DWORD, P | 
       |   | WSTR); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERBYINDEXPROC)(PCSTR, PCSTR, PCSTR, PSTR); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERBYINDEXPROCA)(PCSTR, PCSTR, PCSTR, PSTR); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERBYINDEXPROCW)(PCWSTR, PCWSTR, PCWSTR, PWSTR); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVEROPENPROC)(VOID); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERCLOSEPROC)(VOID); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERSETOPTIONSPROC)(UINT_PTR, ULONG64); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERSETOPTIONSWPROC)(UINT_PTR, ULONG64); | 
       |   | typedef BOOL (CALLBACK WINAPI *PSYMBOLSERVERCALLBACKPROC)(UINT_PTR action, ULONG | 
       |   | 64 data, ULONG64 context); | 
       |   | typedef UINT_PTR (WINAPI *PSYMBOLSERVERGETOPTIONSPROC)(); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERPINGPROC)(PCSTR); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERPINGPROCA)(PCSTR); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERPINGPROCW)(PCWSTR); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERGETVERSION)(LPAPI_VERSION); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERDELTANAME)(PCSTR, PVOID, DWORD, DWORD, PVOID, | 
       |   |  DWORD, DWORD, PSTR, size_t); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERDELTANAMEW)(PCWSTR, PVOID, DWORD, DWORD, PVOI | 
       |   | D, DWORD, DWORD, PWSTR, size_t); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERGETSUPPLEMENT)(PCSTR, PCSTR, PCSTR, PSTR, siz | 
       |   | e_t); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERGETSUPPLEMENTW)(PCWSTR, PCWSTR, PCWSTR, PWSTR | 
       |   | , size_t); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERSTORESUPPLEMENT)(PCSTR, PCSTR, PCSTR, PSTR, s | 
       |   | ize_t, DWORD); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERSTORESUPPLEMENTW)(PCWSTR, PCWSTR, PCWSTR, PWS | 
       |   | TR, size_t, DWORD); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERGETINDEXSTRING)(PVOID, DWORD, DWORD, PSTR, si | 
       |   | ze_t); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERGETINDEXSTRINGW)(PVOID, DWORD, DWORD, PWSTR,  | 
       |   | size_t); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERSTOREFILE)(PCSTR, PCSTR, PVOID, DWORD, DWORD, | 
       |   |  PSTR, size_t, DWORD); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERSTOREFILEW)(PCWSTR, PCWSTR, PVOID, DWORD, DWO | 
       |   | RD, PWSTR, size_t, DWORD); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERISSTORE)(PCSTR); | 
       |   | typedef BOOL (WINAPI *PSYMBOLSERVERISSTOREW)(PCWSTR); | 
       |   | typedef DWORD (WINAPI *PSYMBOLSERVERVERSION)(); | 
       |   | typedef BOOL (CALLBACK WINAPI *PSYMBOLSERVERMESSAGEPROC)(UINT_PTR action, ULONG6 | 
       |   | 4 data, ULONG64 context); | 
       |   |  | 
       |   | #define SYMSRV_VERSION              2 | 
       |   |  | 
       |   | #define SSRVOPT_CALLBACK            0x000001 | 
       |   | #define SSRVOPT_DWORD               0x000002 | 
       |   | #define SSRVOPT_DWORDPTR            0x000004 | 
       |   | #define SSRVOPT_GUIDPTR             0x000008 | 
       |   | #define SSRVOPT_OLDGUIDPTR          0x000010 | 
       |   | #define SSRVOPT_UNATTENDED          0x000020 | 
       |   | #define SSRVOPT_NOCOPY              0x000040 | 
       |   | #define SSRVOPT_GETPATH             0x000040 | 
       |   | #define SSRVOPT_PARENTWIN           0x000080 | 
       |   | #define SSRVOPT_PARAMTYPE           0x000100 | 
       |   | #define SSRVOPT_SECURE              0x000200 | 
       |   | #define SSRVOPT_TRACE               0x000400 | 
       |   | #define SSRVOPT_SETCONTEXT          0x000800 | 
       |   | #define SSRVOPT_PROXY               0x001000 | 
       |   | #define SSRVOPT_DOWNSTREAM_STORE    0x002000 | 
       |   | #define SSRVOPT_OVERWRITE           0x004000 | 
       |   | #define SSRVOPT_RESETTOU            0x008000 | 
       |   | #define SSRVOPT_CALLBACKW           0x010000 | 
       |   | #define SSRVOPT_FLAT_DEFAULT_STORE  0x020000 | 
       |   | #define SSRVOPT_PROXYW              0x040000 | 
       |   | #define SSRVOPT_MESSAGE             0x080000 | 
       |   | #define SSRVOPT_SERVICE             0x100000   // deprecated | 
       |   | #define SSRVOPT_FAVOR_COMPRESSED    0x200000 | 
       |   |  | 
       |   | #define SSRVOPT_MAX                 0x40000 | 
       |   |  | 
       |   | #define SSRVOPT_RESET               ((ULONG_PTR)-1) | 
       |   |  | 
       |   | #define NUM_SSRVOPTS                30 | 
       |   |  | 
       |   | #define SSRVACTION_TRACE        1 | 
       |   | #define SSRVACTION_QUERYCANCEL  2 | 
       |   | #define SSRVACTION_EVENT        3 | 
       |   | #define SSRVACTION_EVENTW       4 | 
       |   |  | 
       |   | #define SYMSTOREOPT_COMPRESS        0x01 | 
       |   | #define SYMSTOREOPT_OVERWRITE       0x02 | 
       |   | #define SYMSTOREOPT_RETURNINDEX     0x04 | 
       |   | #define SYMSTOREOPT_POINTER         0x08 | 
       |   | #define SYMSTOREOPT_ALT_INDEX       0x10 | 
       |   | #define SYMSTOREOPT_UNICODE         0x20 | 
       |   | #define SYMSTOREOPT_PASS_IF_EXISTS  0x40 | 
       |   |  | 
       |   | #ifdef DBGHELP_TRANSLATE_TCHAR | 
       |   |  #define SymInitialize                     SymInitializeW | 
       |   |  #define SymAddSymbol                      SymAddSymbolW | 
       |   |  #define SymDeleteSymbol                   SymDeleteSymbolW | 
       |   |  #define SearchTreeForFile                 SearchTreeForFileW | 
       |   |  #define UnDecorateSymbolName              UnDecorateSymbolNameW | 
       |   |  #define SymGetLineFromName64              SymGetLineFromNameW64 | 
       |   |  #define SymGetLineFromAddr64              SymGetLineFromAddrW64 | 
       |   |  #define SymGetLineNext64                  SymGetLineNextW64 | 
       |   |  #define SymGetLinePrev64                  SymGetLinePrevW64 | 
       |   |  #define SymFromName                       SymFromNameW | 
       |   |  #define SymFindExecutableImage            SymFindExecutableImageW | 
       |   |  #define FindExecutableImageEx             FindExecutableImageExW | 
       |   |  #define SymSearch                         SymSearchW | 
       |   |  #define SymEnumLines                      SymEnumLinesW | 
       |   |  #define SymEnumSourceLines                SymEnumSourceLinesW | 
       |   |  #define SymGetTypeFromName                SymGetTypeFromNameW | 
       |   |  #define SymEnumSymbolsForAddr             SymEnumSymbolsForAddrW | 
       |   |  #define SymFromAddr                       SymFromAddrW | 
       |   |  #define SymMatchString                    SymMatchStringW | 
       |   |  #define SymEnumSourceFiles                SymEnumSourceFilesW | 
       |   |  #define SymEnumSymbols                    SymEnumSymbolsW | 
       |   |  #define SymLoadModuleEx                   SymLoadModuleExW | 
       |   |  #define SymSetSearchPath                  SymSetSearchPathW | 
       |   |  #define SymGetSearchPath                  SymGetSearchPathW | 
       |   |  #define EnumDirTree                       EnumDirTreeW | 
       |   |  #define SymFromToken                      SymFromTokenW | 
       |   |  #define SymFromIndex                      SymFromIndexW | 
       |   |  #define SymGetScope                       SymGetScopeW | 
       |   |  #define SymNext                           SymNextW | 
       |   |  #define SymPrev                           SymPrevW | 
       |   |  #define SymEnumTypes                      SymEnumTypesW | 
       |   |  #define SymRegisterCallback64             SymRegisterCallbackW64 | 
       |   |  #define SymFindDebugInfoFile              SymFindDebugInfoFileW | 
       |   |  #define FindDebugInfoFileEx               FindDebugInfoFileExW | 
       |   |  #define SymFindFileInPath                 SymFindFileInPathW | 
       |   |  #define SymEnumerateModules64             SymEnumerateModulesW64 | 
       |   |  #define SymSetHomeDirectory               SymSetHomeDirectoryW | 
       |   |  #define SymGetHomeDirectory               SymGetHomeDirectoryW | 
       |   |  #define SymGetSourceFile                  SymGetSourceFileW | 
       |   |  #define SymGetSourceFileToken             SymGetSourceFileTokenW | 
       |   |  #define SymGetSourceFileFromToken         SymGetSourceFileFromTokenW | 
       |   |  #define SymGetSourceVarFromToken          SymGetSourceVarFromTokenW | 
       |   |  #define SymGetSourceFileToken             SymGetSourceFileTokenW | 
       |   |  #define SymGetFileLineOffsets64           SymGetFileLineOffsetsW64 | 
       |   |  #define SymFindFileInPath                 SymFindFileInPathW | 
       |   |  #define SymMatchFileName                  SymMatchFileNameW | 
       |   |  #define SymGetSourceFileFromToken         SymGetSourceFileFromTokenW | 
       |   |  #define SymGetSourceVarFromToken          SymGetSourceVarFromTokenW | 
       |   |  #define SymGetModuleInfo64                SymGetModuleInfoW64 | 
       |   |  #define SymSrvIsStore                     SymSrvIsStoreW | 
       |   |  #define SymSrvDeltaName                   SymSrvDeltaNameW | 
       |   |  #define SymSrvGetSupplement               SymSrvGetSupplementW | 
       |   |  #define SymSrvStoreSupplement             SymSrvStoreSupplementW | 
       |   |  #define SymSrvGetFileIndexes              SymSrvGetFileIndexes | 
       |   |  #define SymSrvGetFileIndexString          SymSrvGetFileIndexStringW | 
       |   |  #define SymSrvStoreFile                   SymSrvStoreFileW | 
       |   |  #define SymGetSymbolFile                  SymGetSymbolFileW | 
       |   |  #define EnumerateLoadedModules64      EnumerateLoadedModulesW64 | 
       |   |  #define SymSrvGetFileIndexInfo            SymSrvGetFileIndexInfoW | 
       |   |  | 
       |   |  #define IMAGEHLP_LINE64                   IMAGEHLP_LINEW64 | 
       |   |  #define PIMAGEHLP_LINE64                  PIMAGEHLP_LINEW64 | 
       |   |  #define SYMBOL_INFO                       SYMBOL_INFOW | 
       |   |  #define PSYMBOL_INFO                      PSYMBOL_INFOW | 
       |   |  #define SYMBOL_INFO_PACKAGE               SYMBOL_INFO_PACKAGEW | 
       |   |  #define PSYMBOL_INFO_PACKAGE              PSYMBOL_INFO_PACKAGEW | 
       |   |  #define FIND_EXE_FILE_CALLBACK            FIND_EXE_FILE_CALLBACKW | 
       |   |  #define PFIND_EXE_FILE_CALLBACK           PFIND_EXE_FILE_CALLBACKW | 
       |   |  #define SYM_ENUMERATESYMBOLS_CALLBACK     SYM_ENUMERATESYMBOLS_CALLBACKW | 
       |   |  #define PSYM_ENUMERATESYMBOLS_CALLBACK    PSYM_ENUMERATESYMBOLS_CALLBACKW | 
       |   |  #define SRCCODEINFO                       SRCCODEINFOW | 
       |   |  #define PSRCCODEINFO                      PSRCCODEINFOW | 
       |   |  #define SOURCEFILE                        SOURCEFILEW | 
       |   |  #define PSOURCEFILE                       PSOURCEFILEW | 
       |   |  #define SYM_ENUMSOURECFILES_CALLBACK      SYM_ENUMSOURCEFILES_CALLBACKW | 
       |   |  #define PSYM_ENUMSOURCEFILES_CALLBACK     PSYM_ENUMSOURECFILES_CALLBACKW | 
       |   |  #define IMAGEHLP_CBA_EVENT                IMAGEHLP_CBA_EVENTW | 
       |   |  #define PIMAGEHLP_CBA_EVENT               PIMAGEHLP_CBA_EVENTW | 
       |   |  #define PENUMDIRTREE_CALLBACK             PENUMDIRTREE_CALLBACKW | 
       |   |  #define IMAGEHLP_DEFERRED_SYMBOL_LOAD64   IMAGEHLP_DEFERRED_SYMBOL_LOADW64 | 
       |   |  #define PIMAGEHLP_DEFERRED_SYMBOL_LOAD64  PIMAGEHLP_DEFERRED_SYMBOL_LOADW64 | 
       |   |  #define PFIND_DEBUG_FILE_CALLBACK         PFIND_DEBUG_FILE_CALLBACKW | 
       |   |  #define PFINDFILEINPATHCALLBACK           PFINDFILEINPATHCALLBACKW | 
       |   |  #define IMAGEHLP_MODULE64                 IMAGEHLP_MODULEW64 | 
       |   |  #define PIMAGEHLP_MODULE64                PIMAGEHLP_MODULEW64 | 
       |   |  #define SYMSRV_INDEX_INFO         SYMSRV_INDEX_INFOw | 
       |   |  #define PSYMSRV_INDEX_INFO                PSYMSRV_INDEX_INFOW | 
       |   |  | 
       |   |  #define PSYMBOLSERVERPROC                 PSYMBOLSERVERPROCW | 
       |   |  #define PSYMBOLSERVERPINGPROC             PSYMBOLSERVERPINGPROCW | 
       |   | #endif | 
       |   |                                                                                  | 
      | // ----------------------------------------------------------------- |   | // ----------------------------------------------------------------- | 
      | // The following APIs exist only for backwards compatibility |   | // The following APIs exist only for backwards compatibility | 
      | // with a pre-release version documented in an MSDN release. |   | // with a pre-release version documented in an MSDN release. | 
       |   |  | 
      | // You should use SymFindFileInPath if you want to maintain |   | // You should use SymFindFileInPath if you want to maintain | 
      | // future compatibility. |   | // future compatibility. | 
       |   |  | 
      | DBHLP_DEPRECIATED |   | DBHLP_DEPRECIATED | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | FindFileInPath( |   | FindFileInPath( | 
       | 
      |     HANDLE hprocess, |   |     __in HANDLE hprocess, | 
      |     LPSTR  SearchPath, |   |     __in PCSTR SearchPath, | 
      |     LPSTR  FileName, |   |     __in PCSTR FileName, | 
      |     PVOID  id, |   |     __in PVOID id, | 
      |     DWORD  two, |   |     __in DWORD two, | 
      |     DWORD  three, |   |     __in DWORD three, | 
      |     DWORD  flags, |   |     __in DWORD flags, | 
      |     LPSTR  FilePath |   |     __out_ecount(MAX_PATH + 1) PSTR FilePath | 
      |     ); |   |     ); | 
       |   |  | 
      | // You should use SymFindFileInPath if you want to maintain |   | // You should use SymFindFileInPath if you want to maintain | 
      | // future compatibility. |   | // future compatibility. | 
       |   |  | 
      | DBHLP_DEPRECIATED |   | DBHLP_DEPRECIATED | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | FindFileInSearchPath( |   | FindFileInSearchPath( | 
       | 
      |     HANDLE hprocess, |   |     __in HANDLE hprocess, | 
      |     LPSTR  SearchPath, |   |     __in PCSTR SearchPath, | 
      |     LPSTR  FileName, |   |     __in PCSTR FileName, | 
      |     DWORD  one, |   |     __in DWORD one, | 
      |     DWORD  two, |   |     __in DWORD two, | 
      |     DWORD  three, |   |     __in DWORD three, | 
      |     LPSTR  FilePath |   |     __out_ecount(MAX_PATH + 1) PSTR FilePath | 
      |     ); |   |     ); | 
       |   |  | 
      | DBHLP_DEPRECIATED |   | DBHLP_DEPRECIATED | 
      | BOOL |   | BOOL | 
      | IMAGEAPI |   | IMAGEAPI | 
      | SymEnumSym( |   | SymEnumSym( | 
       | 
      |     IN HANDLE                       hProcess, |   |     __in HANDLE hProcess, | 
      |     IN ULONG64                      BaseOfDll, |   |     __in ULONG64 BaseOfDll, | 
      |     IN PSYM_ENUMERATESYMBOLS_CALLBACK    EnumSymbolsCallback, |   |     __in PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, | 
      |     IN PVOID                        UserContext |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   |  | 
       |   | DBHLP_DEPRECIATED | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymEnumerateSymbols64( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 BaseOfDll, | 
       |   |     __in PSYM_ENUMSYMBOLS_CALLBACK64 EnumSymbolsCallback, | 
       |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   |  | 
       |   | DBHLP_DEPRECIATED | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymEnumerateSymbolsW64( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG64 BaseOfDll, | 
       |   |     __in PSYM_ENUMSYMBOLS_CALLBACK64W EnumSymbolsCallback, | 
       |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   |  | 
       |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
       |   | #define SymEnumerateSymbols SymEnumerateSymbols64 | 
       |   | #define SymEnumerateSymbolsW SymEnumerateSymbolsW64 | 
       |   | #else | 
       |   | DBHLP_DEPRECIATED | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymEnumerateSymbols( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG BaseOfDll, | 
       |   |     __in PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback, | 
       |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   |  | 
       |   | DBHLP_DEPRECIATED | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymEnumerateSymbolsW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in ULONG BaseOfDll, | 
       |   |     __in PSYM_ENUMSYMBOLS_CALLBACKW EnumSymbolsCallback, | 
       |   |     __in_opt PVOID UserContext | 
       |   |     ); | 
       |   | #endif | 
       |   |  | 
       |   | // use SymLoadModuleEx | 
       |   |  | 
       |   | DWORD64 | 
       |   | IMAGEAPI | 
       |   | SymLoadModule64( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt HANDLE hFile, | 
       |   |     __in_opt PCSTR ImageName, | 
       |   |     __in_opt PCSTR ModuleName, | 
       |   |     __in DWORD64 BaseOfDll, | 
       |   |     __in DWORD SizeOfDll | 
       |   |     ); | 
       |   |  | 
       |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
       |   | #define SymLoadModule SymLoadModule64 | 
       |   | #else | 
       |   | DWORD | 
       |   | IMAGEAPI | 
       |   | SymLoadModule( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __in_opt HANDLE hFile, | 
       |   |     __in_opt PCSTR ImageName, | 
       |   |     __in_opt PCSTR ModuleName, | 
       |   |     __in DWORD BaseOfDll, | 
       |   |     __in DWORD SizeOfDll | 
       |   |     ); | 
       |   | #endif | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSymNext64( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PIMAGEHLP_SYMBOL64 Symbol | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSymNextW64( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PIMAGEHLP_SYMBOLW64 Symbol | 
       |   |     ); | 
       |   |  | 
       |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
       |   | #define SymGetSymNext SymGetSymNext64 | 
       |   | #define SymGetSymNextW SymGetSymNextW64 | 
       |   | #else | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSymNext( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PIMAGEHLP_SYMBOL Symbol | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSymNextW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PIMAGEHLP_SYMBOLW Symbol | 
       |   |     ); | 
       |   | #endif | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSymPrev64( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PIMAGEHLP_SYMBOL64 Symbol | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSymPrevW64( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PIMAGEHLP_SYMBOLW64 Symbol | 
       |   |     ); | 
       |   |  | 
       |   | #if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64) | 
       |   | #define SymGetSymPrev SymGetSymPrev64 | 
       |   | #define SymGetSymPrevW SymGetSymPrevW64 | 
       |   | #else | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSymPrev( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PIMAGEHLP_SYMBOL Symbol | 
       |   |     ); | 
       |   |  | 
       |   | BOOL | 
       |   | IMAGEAPI | 
       |   | SymGetSymPrevW( | 
       |   |     __in HANDLE hProcess, | 
       |   |     __inout PIMAGEHLP_SYMBOLW Symbol | 
      |     ); |   |     ); | 
       | 
       |   | #endif | 
       |   |  | 
      | // These values should not be used. |   | // These values should not be used. | 
      | // They have been replaced by SYMFLAG_ values. |   | // They have been replaced by SYMFLAG_ values. | 
       |   |  | 
      | #define SYMF_OMAP_GENERATED   0x00000001 |   | #define SYMF_OMAP_GENERATED   0x00000001 | 
      | #define SYMF_OMAP_MODIFIED    0x00000002 |   | #define SYMF_OMAP_MODIFIED    0x00000002 | 
      | #define SYMF_REGISTER         0x00000008 |   | #define SYMF_REGISTER         0x00000008 | 
      | #define SYMF_REGREL           0x00000010 |   | #define SYMF_REGREL           0x00000010 | 
      | #define SYMF_FRAMEREL         0x00000020 |   | #define SYMF_FRAMEREL         0x00000020 | 
      | #define SYMF_PARAMETER        0x00000040 |   | #define SYMF_PARAMETER        0x00000040 | 
       |   |  | 
      | skipping to change at line 2115 |   | skipping to change at line 3456 | 
      |     ExceptionStream             = 6, |   |     ExceptionStream             = 6, | 
      |     SystemInfoStream            = 7, |   |     SystemInfoStream            = 7, | 
      |     ThreadExListStream          = 8, |   |     ThreadExListStream          = 8, | 
      |     Memory64ListStream          = 9, |   |     Memory64ListStream          = 9, | 
      |     CommentStreamA              = 10, |   |     CommentStreamA              = 10, | 
      |     CommentStreamW              = 11, |   |     CommentStreamW              = 11, | 
      |     HandleDataStream            = 12, |   |     HandleDataStream            = 12, | 
      |     FunctionTableStream         = 13, |   |     FunctionTableStream         = 13, | 
      |     UnloadedModuleListStream    = 14, |   |     UnloadedModuleListStream    = 14, | 
      |     MiscInfoStream              = 15, |   |     MiscInfoStream              = 15, | 
       | 
       |   |     MemoryInfoListStream        = 16, | 
       |   |     ThreadInfoListStream        = 17, | 
       |   |     HandleOperationListStream   = 18, | 
       |   |  | 
       |   |     ceStreamNull                = 0x8000, | 
       |   |     ceStreamSystemInfo          = 0x8001, | 
       |   |     ceStreamException           = 0x8002, | 
       |   |     ceStreamModuleList          = 0x8003, | 
       |   |     ceStreamProcessList         = 0x8004, | 
       |   |     ceStreamThreadList          = 0x8005, | 
       |   |     ceStreamThreadContextList   = 0x8006, | 
       |   |     ceStreamThreadCallStackList = 0x8007, | 
       |   |     ceStreamMemoryVirtualList   = 0x8008, | 
       |   |     ceStreamMemoryPhysicalList  = 0x8009, | 
       |   |     ceStreamBucketParameters    = 0x800A, | 
       |   |  | 
      |     LastReservedStream          = 0xffff |   |     LastReservedStream          = 0xffff | 
       |   |  | 
      | } MINIDUMP_STREAM_TYPE; |   | } MINIDUMP_STREAM_TYPE; | 
       |   |  | 
      | // |   | // | 
      | // The minidump system information contains processor and |   | // The minidump system information contains processor and | 
      | // Operating System specific information. |   | // Operating System specific information. | 
      | // |   | // | 
       |   |  | 
       |   |  | 
      | skipping to change at line 2377 |   | skipping to change at line 3733 | 
      |     DWORD ThreadId; |   |     DWORD ThreadId; | 
      |     ULONG64 ExceptionRecord; |   |     ULONG64 ExceptionRecord; | 
      |     ULONG64 ContextRecord; |   |     ULONG64 ContextRecord; | 
      |     BOOL ClientPointers; |   |     BOOL ClientPointers; | 
      | } MINIDUMP_EXCEPTION_INFORMATION64, *PMINIDUMP_EXCEPTION_INFORMATION64; |   | } MINIDUMP_EXCEPTION_INFORMATION64, *PMINIDUMP_EXCEPTION_INFORMATION64; | 
       |   |  | 
      | // |   | // | 
      | // Support for capturing system handle state at the time of the dump. |   | // Support for capturing system handle state at the time of the dump. | 
      | // |   | // | 
       |   |  | 
       | 
       |   | // Per-handle object information varies according to | 
       |   | // the OS, the OS version, the processor type and | 
       |   | // so on.  The minidump gives a minidump identifier | 
       |   | // to each possible data format for identification | 
       |   | // purposes but does not control nor describe the actual data. | 
       |   | typedef enum _MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE { | 
       |   |     MiniHandleObjectInformationNone, | 
       |   |     MiniThreadInformation1, | 
       |   |     MiniMutantInformation1, | 
       |   |     MiniMutantInformation2, | 
       |   |     MiniProcessInformation1, | 
       |   |     MiniProcessInformation2, | 
       |   |     MiniHandleObjectInformationTypeMax | 
       |   | } MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE; | 
       |   |  | 
       |   | typedef struct _MINIDUMP_HANDLE_OBJECT_INFORMATION { | 
       |   |     RVA NextInfoRva; | 
       |   |     ULONG32 InfoType; | 
       |   |     ULONG32 SizeOfInfo; | 
       |   |     // Raw information follows. | 
       |   | } MINIDUMP_HANDLE_OBJECT_INFORMATION; | 
       |   |                                                                                  | 
      | typedef struct _MINIDUMP_HANDLE_DESCRIPTOR { |   | typedef struct _MINIDUMP_HANDLE_DESCRIPTOR { | 
      |     ULONG64 Handle; |   |     ULONG64 Handle; | 
      |     RVA TypeNameRva; |   |     RVA TypeNameRva; | 
      |     RVA ObjectNameRva; |   |     RVA ObjectNameRva; | 
      |     ULONG32 Attributes; |   |     ULONG32 Attributes; | 
      |     ULONG32 GrantedAccess; |   |     ULONG32 GrantedAccess; | 
      |     ULONG32 HandleCount; |   |     ULONG32 HandleCount; | 
      |     ULONG32 PointerCount; |   |     ULONG32 PointerCount; | 
      | } MINIDUMP_HANDLE_DESCRIPTOR, *PMINIDUMP_HANDLE_DESCRIPTOR; |   | } MINIDUMP_HANDLE_DESCRIPTOR, *PMINIDUMP_HANDLE_DESCRIPTOR; | 
       |   |  | 
       | 
       |   | typedef struct _MINIDUMP_HANDLE_DESCRIPTOR_2 { | 
       |   |     ULONG64 Handle; | 
       |   |     RVA TypeNameRva; | 
       |   |     RVA ObjectNameRva; | 
       |   |     ULONG32 Attributes; | 
       |   |     ULONG32 GrantedAccess; | 
       |   |     ULONG32 HandleCount; | 
       |   |     ULONG32 PointerCount; | 
       |   |     RVA ObjectInfoRva; | 
       |   |     ULONG32 Reserved0; | 
       |   | } MINIDUMP_HANDLE_DESCRIPTOR_2, *PMINIDUMP_HANDLE_DESCRIPTOR_2; | 
       |   |  | 
       |   | // The latest MINIDUMP_HANDLE_DESCRIPTOR definition. | 
       |   | typedef MINIDUMP_HANDLE_DESCRIPTOR_2 MINIDUMP_HANDLE_DESCRIPTOR_N; | 
       |   | typedef MINIDUMP_HANDLE_DESCRIPTOR_N *PMINIDUMP_HANDLE_DESCRIPTOR_N; | 
       |   |                                                                                  | 
      | typedef struct _MINIDUMP_HANDLE_DATA_STREAM { |   | typedef struct _MINIDUMP_HANDLE_DATA_STREAM { | 
      |     ULONG32 SizeOfHeader; |   |     ULONG32 SizeOfHeader; | 
      |     ULONG32 SizeOfDescriptor; |   |     ULONG32 SizeOfDescriptor; | 
      |     ULONG32 NumberOfDescriptors; |   |     ULONG32 NumberOfDescriptors; | 
      |     ULONG32 Reserved; |   |     ULONG32 Reserved; | 
      | } MINIDUMP_HANDLE_DATA_STREAM, *PMINIDUMP_HANDLE_DATA_STREAM; |   | } MINIDUMP_HANDLE_DATA_STREAM, *PMINIDUMP_HANDLE_DATA_STREAM; | 
       |   |  | 
       | 
       |   | // Some operating systems can track the last operations | 
       |   | // performed on a handle.  For example, Application Verifier | 
       |   | // can enable this for some versions of Windows.  The | 
       |   | // handle operation list collects handle operations | 
       |   | // known for the dump target. | 
       |   | // Each entry is an AVRF_HANDLE_OPERATION. | 
       |   | typedef struct _MINIDUMP_HANDLE_OPERATION_LIST { | 
       |   |     ULONG32 SizeOfHeader; | 
       |   |     ULONG32 SizeOfEntry; | 
       |   |     ULONG32 NumberOfEntries; | 
       |   |     ULONG32 Reserved; | 
       |   | } MINIDUMP_HANDLE_OPERATION_LIST, *PMINIDUMP_HANDLE_OPERATION_LIST; | 
       |   |                                                                                  | 
      | // |   | // | 
      | // Support for capturing dynamic function table state at the time of the dump. |   | // Support for capturing dynamic function table state at the time of the dump. | 
      | // |   | // | 
       |   |  | 
      | typedef struct _MINIDUMP_FUNCTION_TABLE_DESCRIPTOR { |   | typedef struct _MINIDUMP_FUNCTION_TABLE_DESCRIPTOR { | 
      |     ULONG64 MinimumAddress; |   |     ULONG64 MinimumAddress; | 
      |     ULONG64 MaximumAddress; |   |     ULONG64 MaximumAddress; | 
      |     ULONG64 BaseAddress; |   |     ULONG64 BaseAddress; | 
      |     ULONG32 EntryCount; |   |     ULONG32 EntryCount; | 
      |     ULONG32 SizeOfAlignPad; |   |     ULONG32 SizeOfAlignPad; | 
       |   |  | 
      | skipping to change at line 2447 |   | skipping to change at line 3854 | 
      |     ULONG32 NumberOfEntries; |   |     ULONG32 NumberOfEntries; | 
      | } MINIDUMP_UNLOADED_MODULE_LIST, *PMINIDUMP_UNLOADED_MODULE_LIST; |   | } MINIDUMP_UNLOADED_MODULE_LIST, *PMINIDUMP_UNLOADED_MODULE_LIST; | 
       |   |  | 
      | // |   | // | 
      | // The miscellaneous information stream contains a variety |   | // The miscellaneous information stream contains a variety | 
      | // of small pieces of information.  A member is valid if |   | // of small pieces of information.  A member is valid if | 
      | // it's within the available size and its corresponding |   | // it's within the available size and its corresponding | 
      | // bit is set. |   | // bit is set. | 
      | // |   | // | 
       |   |  | 
       | 
      | #define MINIDUMP_MISC1_PROCESS_ID    0x00000001 |   | #define MINIDUMP_MISC1_PROCESS_ID           0x00000001 | 
      | #define MINIDUMP_MISC1_PROCESS_TIMES 0x00000002 |   | #define MINIDUMP_MISC1_PROCESS_TIMES        0x00000002 | 
       |   | #define MINIDUMP_MISC1_PROCESSOR_POWER_INFO 0x00000004 | 
       |   |  | 
      | typedef struct _MINIDUMP_MISC_INFO { |   | typedef struct _MINIDUMP_MISC_INFO { | 
      |     ULONG32 SizeOfInfo; |   |     ULONG32 SizeOfInfo; | 
      |     ULONG32 Flags1; |   |     ULONG32 Flags1; | 
      |     ULONG32 ProcessId; |   |     ULONG32 ProcessId; | 
      |     ULONG32 ProcessCreateTime; |   |     ULONG32 ProcessCreateTime; | 
      |     ULONG32 ProcessUserTime; |   |     ULONG32 ProcessUserTime; | 
      |     ULONG32 ProcessKernelTime; |   |     ULONG32 ProcessKernelTime; | 
      | } MINIDUMP_MISC_INFO, *PMINIDUMP_MISC_INFO; |   | } MINIDUMP_MISC_INFO, *PMINIDUMP_MISC_INFO; | 
       |   |  | 
       | 
       |   | typedef struct _MINIDUMP_MISC_INFO_2 { | 
       |   |     ULONG32 SizeOfInfo; | 
       |   |     ULONG32 Flags1; | 
       |   |     ULONG32 ProcessId; | 
       |   |     ULONG32 ProcessCreateTime; | 
       |   |     ULONG32 ProcessUserTime; | 
       |   |     ULONG32 ProcessKernelTime; | 
       |   |     ULONG32 ProcessorMaxMhz; | 
       |   |     ULONG32 ProcessorCurrentMhz; | 
       |   |     ULONG32 ProcessorMhzLimit; | 
       |   |     ULONG32 ProcessorMaxIdleState; | 
       |   |     ULONG32 ProcessorCurrentIdleState; | 
       |   | } MINIDUMP_MISC_INFO_2, *PMINIDUMP_MISC_INFO_2; | 
       |   |  | 
       |   | // The latest MINIDUMP_MISC_INFO definition. | 
       |   | typedef MINIDUMP_MISC_INFO_2 MINIDUMP_MISC_INFO_N; | 
       |   | typedef MINIDUMP_MISC_INFO_N* PMINIDUMP_MISC_INFO_N; | 
       |   |  | 
       |   | // | 
       |   | // The memory information stream contains memory region | 
       |   | // description information.  This stream corresponds to | 
       |   | // what VirtualQuery would return for the process the | 
       |   | // dump was created for. | 
       |   | // | 
       |   |  | 
       |   | typedef struct _MINIDUMP_MEMORY_INFO { | 
       |   |     ULONG64 BaseAddress; | 
       |   |     ULONG64 AllocationBase; | 
       |   |     ULONG32 AllocationProtect; | 
       |   |     ULONG32 __alignment1; | 
       |   |     ULONG64 RegionSize; | 
       |   |     ULONG32 State; | 
       |   |     ULONG32 Protect; | 
       |   |     ULONG32 Type; | 
       |   |     ULONG32 __alignment2; | 
       |   | } MINIDUMP_MEMORY_INFO, *PMINIDUMP_MEMORY_INFO; | 
       |   |  | 
       |   | typedef struct _MINIDUMP_MEMORY_INFO_LIST { | 
       |   |     ULONG SizeOfHeader; | 
       |   |     ULONG SizeOfEntry; | 
       |   |     ULONG64 NumberOfEntries; | 
       |   | } MINIDUMP_MEMORY_INFO_LIST, *PMINIDUMP_MEMORY_INFO_LIST; | 
       |   |  | 
       |   | // | 
       |   | // The memory information stream contains memory region | 
       |   | // description information.  This stream corresponds to | 
       |   | // what VirtualQuery would return for the process the | 
       |   | // dump was created for. | 
       |   | // | 
       |   |  | 
       |   | // Thread dump writer status flags. | 
       |   | #define MINIDUMP_THREAD_INFO_ERROR_THREAD    0x00000001 | 
       |   | #define MINIDUMP_THREAD_INFO_WRITING_THREAD  0x00000002 | 
       |   | #define MINIDUMP_THREAD_INFO_EXITED_THREAD   0x00000004 | 
       |   | #define MINIDUMP_THREAD_INFO_INVALID_INFO    0x00000008 | 
       |   | #define MINIDUMP_THREAD_INFO_INVALID_CONTEXT 0x00000010 | 
       |   | #define MINIDUMP_THREAD_INFO_INVALID_TEB     0x00000020 | 
       |   |  | 
       |   | typedef struct _MINIDUMP_THREAD_INFO { | 
       |   |     ULONG32 ThreadId; | 
       |   |     ULONG32 DumpFlags; | 
       |   |     ULONG32 DumpError; | 
       |   |     ULONG32 ExitStatus; | 
       |   |     ULONG64 CreateTime; | 
       |   |     ULONG64 ExitTime; | 
       |   |     ULONG64 KernelTime; | 
       |   |     ULONG64 UserTime; | 
       |   |     ULONG64 StartAddress; | 
       |   |     ULONG64 Affinity; | 
       |   | } MINIDUMP_THREAD_INFO, *PMINIDUMP_THREAD_INFO; | 
       |   |  | 
       |   | typedef struct _MINIDUMP_THREAD_INFO_LIST { | 
       |   |     ULONG SizeOfHeader; | 
       |   |     ULONG SizeOfEntry; | 
       |   |     ULONG NumberOfEntries; | 
       |   | } MINIDUMP_THREAD_INFO_LIST, *PMINIDUMP_THREAD_INFO_LIST; | 
       |   |                                                                                  | 
      | // |   | // | 
      | // Support for arbitrary user-defined information. |   | // Support for arbitrary user-defined information. | 
      | // |   | // | 
       |   |  | 
      | typedef struct _MINIDUMP_USER_RECORD { |   | typedef struct _MINIDUMP_USER_RECORD { | 
      |     ULONG32 Type; |   |     ULONG32 Type; | 
      |     MINIDUMP_LOCATION_DESCRIPTOR Memory; |   |     MINIDUMP_LOCATION_DESCRIPTOR Memory; | 
      | } MINIDUMP_USER_RECORD, *PMINIDUMP_USER_RECORD; |   | } MINIDUMP_USER_RECORD, *PMINIDUMP_USER_RECORD; | 
       |   |  | 
      | typedef struct _MINIDUMP_USER_STREAM { |   | typedef struct _MINIDUMP_USER_STREAM { | 
       |   |  | 
      | skipping to change at line 2491 |   | skipping to change at line 3976 | 
      | // Callback support. |   | // Callback support. | 
      | // |   | // | 
       |   |  | 
      | typedef enum _MINIDUMP_CALLBACK_TYPE { |   | typedef enum _MINIDUMP_CALLBACK_TYPE { | 
      |     ModuleCallback, |   |     ModuleCallback, | 
      |     ThreadCallback, |   |     ThreadCallback, | 
      |     ThreadExCallback, |   |     ThreadExCallback, | 
      |     IncludeThreadCallback, |   |     IncludeThreadCallback, | 
      |     IncludeModuleCallback, |   |     IncludeModuleCallback, | 
      |     MemoryCallback, |   |     MemoryCallback, | 
       | 
       |   |     CancelCallback, | 
       |   |     WriteKernelMinidumpCallback, | 
       |   |     KernelMinidumpStatusCallback, | 
       |   |     RemoveMemoryCallback, | 
       |   |     IncludeVmRegionCallback, | 
       |   |     IoStartCallback, | 
       |   |     IoWriteAllCallback, | 
       |   |     IoFinishCallback, | 
       |   |     ReadMemoryFailureCallback, | 
       |   |     SecondaryFlagsCallback, | 
      | } MINIDUMP_CALLBACK_TYPE; |   | } MINIDUMP_CALLBACK_TYPE; | 
       |   |  | 
      | typedef struct _MINIDUMP_THREAD_CALLBACK { |   | typedef struct _MINIDUMP_THREAD_CALLBACK { | 
      |     ULONG ThreadId; |   |     ULONG ThreadId; | 
      |     HANDLE ThreadHandle; |   |     HANDLE ThreadHandle; | 
      |     CONTEXT Context; |   |     CONTEXT Context; | 
      |     ULONG SizeOfContext; |   |     ULONG SizeOfContext; | 
      |     ULONG64 StackBase; |   |     ULONG64 StackBase; | 
      |     ULONG64 StackEnd; |   |     ULONG64 StackEnd; | 
      | } MINIDUMP_THREAD_CALLBACK, *PMINIDUMP_THREAD_CALLBACK; |   | } MINIDUMP_THREAD_CALLBACK, *PMINIDUMP_THREAD_CALLBACK; | 
       |   |  | 
      | skipping to change at line 2524 |   | skipping to change at line 4019 | 
      |     ULONG ThreadId; |   |     ULONG ThreadId; | 
      | } MINIDUMP_INCLUDE_THREAD_CALLBACK, *PMINIDUMP_INCLUDE_THREAD_CALLBACK; |   | } MINIDUMP_INCLUDE_THREAD_CALLBACK, *PMINIDUMP_INCLUDE_THREAD_CALLBACK; | 
       |   |  | 
      | typedef enum _THREAD_WRITE_FLAGS { |   | typedef enum _THREAD_WRITE_FLAGS { | 
      |     ThreadWriteThread            = 0x0001, |   |     ThreadWriteThread            = 0x0001, | 
      |     ThreadWriteStack             = 0x0002, |   |     ThreadWriteStack             = 0x0002, | 
      |     ThreadWriteContext           = 0x0004, |   |     ThreadWriteContext           = 0x0004, | 
      |     ThreadWriteBackingStore      = 0x0008, |   |     ThreadWriteBackingStore      = 0x0008, | 
      |     ThreadWriteInstructionWindow = 0x0010, |   |     ThreadWriteInstructionWindow = 0x0010, | 
      |     ThreadWriteThreadData        = 0x0020, |   |     ThreadWriteThreadData        = 0x0020, | 
       | 
       |   |     ThreadWriteThreadInfo        = 0x0040, | 
      | } THREAD_WRITE_FLAGS; |   | } THREAD_WRITE_FLAGS; | 
       |   |  | 
      | typedef struct _MINIDUMP_MODULE_CALLBACK { |   | typedef struct _MINIDUMP_MODULE_CALLBACK { | 
      |     PWCHAR FullPath; |   |     PWCHAR FullPath; | 
      |     ULONG64 BaseOfImage; |   |     ULONG64 BaseOfImage; | 
      |     ULONG SizeOfImage; |   |     ULONG SizeOfImage; | 
      |     ULONG CheckSum; |   |     ULONG CheckSum; | 
      |     ULONG TimeDateStamp; |   |     ULONG TimeDateStamp; | 
      |     VS_FIXEDFILEINFO VersionInfo; |   |     VS_FIXEDFILEINFO VersionInfo; | 
      |     PVOID CvRecord; |   |     PVOID CvRecord; | 
       |   |  | 
      | skipping to change at line 2548 |   | skipping to change at line 4044 | 
       |   |  | 
      | typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK { |   | typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK { | 
      |     ULONG64 BaseOfImage; |   |     ULONG64 BaseOfImage; | 
      | } MINIDUMP_INCLUDE_MODULE_CALLBACK, *PMINIDUMP_INCLUDE_MODULE_CALLBACK; |   | } MINIDUMP_INCLUDE_MODULE_CALLBACK, *PMINIDUMP_INCLUDE_MODULE_CALLBACK; | 
       |   |  | 
      | typedef enum _MODULE_WRITE_FLAGS { |   | typedef enum _MODULE_WRITE_FLAGS { | 
      |     ModuleWriteModule        = 0x0001, |   |     ModuleWriteModule        = 0x0001, | 
      |     ModuleWriteDataSeg       = 0x0002, |   |     ModuleWriteDataSeg       = 0x0002, | 
      |     ModuleWriteMiscRecord    = 0x0004, |   |     ModuleWriteMiscRecord    = 0x0004, | 
      |     ModuleWriteCvRecord      = 0x0008, |   |     ModuleWriteCvRecord      = 0x0008, | 
       | 
      |     ModuleReferencedByMemory = 0x0010 |   |     ModuleReferencedByMemory = 0x0010, | 
       |   |     ModuleWriteTlsData       = 0x0020, | 
       |   |     ModuleWriteCodeSegs      = 0x0040, | 
      | } MODULE_WRITE_FLAGS; |   | } MODULE_WRITE_FLAGS; | 
       |   |  | 
       | 
       |   | typedef struct _MINIDUMP_IO_CALLBACK { | 
       |   |     HANDLE Handle; | 
       |   |     ULONG64 Offset; | 
       |   |     PVOID Buffer; | 
       |   |     ULONG BufferBytes; | 
       |   | } MINIDUMP_IO_CALLBACK, *PMINIDUMP_IO_CALLBACK; | 
       |   |  | 
       |   | typedef struct _MINIDUMP_READ_MEMORY_FAILURE_CALLBACK | 
       |   | { | 
       |   |     ULONG64 Offset; | 
       |   |     ULONG Bytes; | 
       |   |     HRESULT FailureStatus; | 
       |   | } MINIDUMP_READ_MEMORY_FAILURE_CALLBACK, | 
       |   |   *PMINIDUMP_READ_MEMORY_FAILURE_CALLBACK; | 
       |   |                                                                                  | 
      | typedef struct _MINIDUMP_CALLBACK_INPUT { |   | typedef struct _MINIDUMP_CALLBACK_INPUT { | 
      |     ULONG ProcessId; |   |     ULONG ProcessId; | 
      |     HANDLE ProcessHandle; |   |     HANDLE ProcessHandle; | 
      |     ULONG CallbackType; |   |     ULONG CallbackType; | 
      |     union { |   |     union { | 
       | 
       |   |         HRESULT Status; | 
      |         MINIDUMP_THREAD_CALLBACK Thread; |   |         MINIDUMP_THREAD_CALLBACK Thread; | 
      |         MINIDUMP_THREAD_EX_CALLBACK ThreadEx; |   |         MINIDUMP_THREAD_EX_CALLBACK ThreadEx; | 
      |         MINIDUMP_MODULE_CALLBACK Module; |   |         MINIDUMP_MODULE_CALLBACK Module; | 
      |         MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread; |   |         MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread; | 
      |         MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule; |   |         MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule; | 
       | 
       |   |         MINIDUMP_IO_CALLBACK Io; | 
       |   |         MINIDUMP_READ_MEMORY_FAILURE_CALLBACK ReadMemoryFailure; | 
       |   |         ULONG SecondaryFlags; | 
      |     }; |   |     }; | 
      | } MINIDUMP_CALLBACK_INPUT, *PMINIDUMP_CALLBACK_INPUT; |   | } MINIDUMP_CALLBACK_INPUT, *PMINIDUMP_CALLBACK_INPUT; | 
       |   |  | 
      | typedef struct _MINIDUMP_CALLBACK_OUTPUT { |   | typedef struct _MINIDUMP_CALLBACK_OUTPUT { | 
      |     union { |   |     union { | 
      |         ULONG ModuleWriteFlags; |   |         ULONG ModuleWriteFlags; | 
      |         ULONG ThreadWriteFlags; |   |         ULONG ThreadWriteFlags; | 
       | 
       |   |         ULONG SecondaryFlags; | 
      |         struct { |   |         struct { | 
      |             ULONG64 MemoryBase; |   |             ULONG64 MemoryBase; | 
      |             ULONG MemorySize; |   |             ULONG MemorySize; | 
      |         }; |   |         }; | 
       | 
       |   |         struct { | 
       |   |             BOOL CheckCancel; | 
       |   |             BOOL Cancel; | 
       |   |         }; | 
       |   |         HANDLE Handle; | 
       |   |         struct { | 
       |   |             MINIDUMP_MEMORY_INFO VmRegion; | 
       |   |             BOOL Continue; | 
       |   |         }; | 
       |   |         HRESULT Status; | 
      |     }; |   |     }; | 
      | } MINIDUMP_CALLBACK_OUTPUT, *PMINIDUMP_CALLBACK_OUTPUT; |   | } MINIDUMP_CALLBACK_OUTPUT, *PMINIDUMP_CALLBACK_OUTPUT; | 
       |   |  | 
      | // |   | // | 
      | // A normal minidump contains just the information |   | // A normal minidump contains just the information | 
      | // necessary to capture stack traces for all of the |   | // necessary to capture stack traces for all of the | 
      | // existing threads in a process. |   | // existing threads in a process. | 
      | // |   | // | 
      | // A minidump with data segments includes all of the data |   | // A minidump with data segments includes all of the data | 
      | // sections from loaded modules in order to capture |   | // sections from loaded modules in order to capture | 
       |   |  | 
      | skipping to change at line 2630 |   | skipping to change at line 4158 | 
      | // The virtual address space can be scanned for various types |   | // The virtual address space can be scanned for various types | 
      | // of memory to be included in the dump. |   | // of memory to be included in the dump. | 
      | // |   | // | 
      | // Code which is concerned with potentially private information |   | // Code which is concerned with potentially private information | 
      | // getting into the minidump can set a flag that automatically |   | // getting into the minidump can set a flag that automatically | 
      | // modifies all existing and future flags to avoid placing |   | // modifies all existing and future flags to avoid placing | 
      | // unnecessary data in the dump.  Basic data, such as stack |   | // unnecessary data in the dump.  Basic data, such as stack | 
      | // information, will still be included but optional data, such |   | // information, will still be included but optional data, such | 
      | // as indirect memory, will not. |   | // as indirect memory, will not. | 
      | // |   | // | 
       | 
       |   | // When doing a full memory dump it's possible to store all | 
       |   | // of the enumerated memory region descriptive information | 
       |   | // in a memory information stream. | 
       |   | // | 
       |   | // Additional thread information beyond the basic thread | 
       |   | // structure can be collected if desired. | 
       |   | // | 
       |   | // A minidump with code segments includes all of the code | 
       |   | // and code-related sections from loaded modules in order | 
       |   | // to capture executable content. | 
       |   | // | 
       |   | // MiniDumpWithoutAuxiliaryState turns off any secondary, | 
       |   | // auxiliary-supported memory gathering. | 
       |   | // | 
       |   | // MiniDumpWithFullAuxiliaryState asks any present auxiliary | 
       |   | // data providers to include all of their state in the dump. | 
       |   | // The exact set of what is provided depends on the auxiliary. | 
       |   | // This can be quite large. | 
       |   | // | 
       |   |  | 
      | typedef enum _MINIDUMP_TYPE { |   | typedef enum _MINIDUMP_TYPE { | 
       | 
      |     MiniDumpNormal                         = 0x0000, |   |     MiniDumpNormal                         = 0x00000000, | 
      |     MiniDumpWithDataSegs                   = 0x0001, |   |     MiniDumpWithDataSegs                   = 0x00000001, | 
      |     MiniDumpWithFullMemory                 = 0x0002, |   |     MiniDumpWithFullMemory                 = 0x00000002, | 
      |     MiniDumpWithHandleData                 = 0x0004, |   |     MiniDumpWithHandleData                 = 0x00000004, | 
      |     MiniDumpFilterMemory                   = 0x0008, |   |     MiniDumpFilterMemory                   = 0x00000008, | 
      |     MiniDumpScanMemory                     = 0x0010, |   |     MiniDumpScanMemory                     = 0x00000010, | 
      |     MiniDumpWithUnloadedModules            = 0x0020, |   |     MiniDumpWithUnloadedModules            = 0x00000020, | 
      |     MiniDumpWithIndirectlyReferencedMemory = 0x0040, |   |     MiniDumpWithIndirectlyReferencedMemory = 0x00000040, | 
      |     MiniDumpFilterModulePaths              = 0x0080, |   |     MiniDumpFilterModulePaths              = 0x00000080, | 
      |     MiniDumpWithProcessThreadData          = 0x0100, |   |     MiniDumpWithProcessThreadData          = 0x00000100, | 
      |     MiniDumpWithPrivateReadWriteMemory     = 0x0200, |   |     MiniDumpWithPrivateReadWriteMemory     = 0x00000200, | 
      |     MiniDumpWithoutOptionalData            = 0x0400, |   |     MiniDumpWithoutOptionalData            = 0x00000400, | 
       |   |     MiniDumpWithFullMemoryInfo             = 0x00000800, | 
       |   |     MiniDumpWithThreadInfo                 = 0x00001000, | 
       |   |     MiniDumpWithCodeSegs                   = 0x00002000, | 
       |   |     MiniDumpWithoutAuxiliaryState          = 0x00004000, | 
       |   |     MiniDumpWithFullAuxiliaryState         = 0x00008000, | 
       |   |  | 
       |   |     MiniDumpValidTypeFlags                 = 0x0000ffff, | 
      | } MINIDUMP_TYPE; |   | } MINIDUMP_TYPE; | 
       |   |  | 
      | // |   | // | 
       | 
       |   | // In addition to the primary flags provided to | 
       |   | // MiniDumpWriteDump there are additional, less | 
       |   | // frequently used options queried via the secondary | 
       |   | // flags callback. | 
       |   | // | 
       |   | // MiniSecondaryWithoutPowerInfo suppresses the minidump | 
       |   | // query that retrieves processor power information for | 
       |   | // MINIDUMP_MISC_INFO. | 
       |   | // | 
       |   |  | 
       |   | typedef enum _MINIDUMP_SECONDARY_FLAGS { | 
       |   |     MiniSecondaryWithoutPowerInfo = 0x00000001, | 
       |   |  | 
       |   |     MiniSecondaryValidFlags       = 0x00000001, | 
       |   | } MINIDUMP_SECONDARY_FLAGS; | 
       |   |  | 
       |   | // | 
      | // The minidump callback should modify the FieldsToWrite parameter to reflect |   | // The minidump callback should modify the FieldsToWrite parameter to reflect | 
      | // what portions of the specified thread or module should be written to the |   | // what portions of the specified thread or module should be written to the | 
      | // file. |   | // file. | 
      | // |   | // | 
       |   |  | 
      | typedef |   | typedef | 
      | BOOL |   | BOOL | 
      | (WINAPI * MINIDUMP_CALLBACK_ROUTINE) ( |   | (WINAPI * MINIDUMP_CALLBACK_ROUTINE) ( | 
      |     IN PVOID CallbackParam, |   |     IN PVOID CallbackParam, | 
      |     IN CONST PMINIDUMP_CALLBACK_INPUT CallbackInput, |   |     IN CONST PMINIDUMP_CALLBACK_INPUT CallbackInput, | 
      |   |  | 
     |  End of changes. 193 change blocks.  | 
     | 724 lines changed or deleted |   | 2255 lines changed or added | 
      |