1251881Speter/*
2251881Speter * win32_crashrpt_dll.h : private header file.
3251881Speter *
4251881Speter * ====================================================================
5251881Speter *    Licensed to the Apache Software Foundation (ASF) under one
6251881Speter *    or more contributor license agreements.  See the NOTICE file
7251881Speter *    distributed with this work for additional information
8251881Speter *    regarding copyright ownership.  The ASF licenses this file
9251881Speter *    to you under the Apache License, Version 2.0 (the
10251881Speter *    "License"); you may not use this file except in compliance
11251881Speter *    with the License.  You may obtain a copy of the License at
12251881Speter *
13251881Speter *      http://www.apache.org/licenses/LICENSE-2.0
14251881Speter *
15251881Speter *    Unless required by applicable law or agreed to in writing,
16251881Speter *    software distributed under the License is distributed on an
17251881Speter *    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18251881Speter *    KIND, either express or implied.  See the License for the
19251881Speter *    specific language governing permissions and limitations
20251881Speter *    under the License.
21251881Speter * ====================================================================
22251881Speter */
23251881Speter
24251881Speter#ifndef SVN_LIBSVN_SUBR_WIN32_CRASHRPT_DLL_H
25251881Speter#define SVN_LIBSVN_SUBR_WIN32_CRASHRPT_DLL_H
26251881Speter
27251881Speter#ifdef WIN32
28251881Speter#ifdef SVN_USE_WIN32_CRASHHANDLER
29251881Speter
30251881Speter/* public functions in dbghelp.dll */
31251881Spetertypedef BOOL  (WINAPI * MINIDUMPWRITEDUMP)(HANDLE hProcess, DWORD ProcessId,
32251881Speter               HANDLE hFile, MINIDUMP_TYPE DumpType,
33251881Speter               CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
34251881Speter               CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
35251881Speter               CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam);
36251881Spetertypedef BOOL  (WINAPI * SYMINITIALIZE)(HANDLE hProcess, PSTR UserSearchPath,
37251881Speter                                    BOOL fInvadeProcess);
38251881Spetertypedef DWORD (WINAPI * SYMSETOPTIONS)(DWORD SymOptions);
39251881Speter
40251881Spetertypedef DWORD (WINAPI * SYMGETOPTIONS)(VOID);
41251881Speter
42251881Spetertypedef BOOL  (WINAPI * SYMCLEANUP)(HANDLE hProcess);
43251881Speter
44251881Spetertypedef BOOL  (WINAPI * SYMGETTYPEINFO)(HANDLE hProcess, DWORD64 ModBase,
45251881Speter                                     ULONG TypeId, IMAGEHLP_SYMBOL_TYPE_INFO GetType,
46251881Speter                                     PVOID pInfo);
47251881Speter
48251881Spetertypedef BOOL  (WINAPI * SYMGETLINEFROMADDR64)(HANDLE hProcess, DWORD64 dwAddr,
49251881Speter                                 PDWORD pdwDisplacement, PIMAGEHLP_LINE64 Line);
50251881Speter
51251881Spetertypedef BOOL  (WINAPI * SYMENUMSYMBOLS)(HANDLE hProcess, ULONG64 BaseOfDll, PCSTR Mask,
52251881Speter                             PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
53251881Speter                             PVOID UserContext);
54251881Speter
55251881Spetertypedef BOOL  (WINAPI * SYMSETCONTEXT)(HANDLE hProcess, PIMAGEHLP_STACK_FRAME StackFrame,
56251881Speter                            PIMAGEHLP_CONTEXT Context);
57251881Speter
58251881Spetertypedef BOOL  (WINAPI * SYMFROMADDR)(HANDLE hProcess, DWORD64 Address,
59251881Speter                          PDWORD64 Displacement, PSYMBOL_INFO Symbol);
60251881Speter
61251881Spetertypedef BOOL (WINAPI * STACKWALK64)(DWORD MachineType, HANDLE hProcess, HANDLE hThread,
62251881Speter                                LPSTACKFRAME64 StackFrame, PVOID ContextRecord,
63251881Speter                                PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine,
64251881Speter                                PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine,
65251881Speter                                PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine,
66251881Speter                                PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress);
67251881Speter
68251881Spetertypedef PVOID (WINAPI * SYMFUNCTIONTABLEACCESS64)(HANDLE hProcess, DWORD64 AddrBase);
69251881Speter
70251881Spetertypedef DWORD64 (WINAPI * SYMGETMODULEBASE64)(HANDLE hProcess, DWORD64 dwAddr);
71251881Speter
72251881Speter/* function pointers */
73251881SpeterMINIDUMPWRITEDUMP        MiniDumpWriteDump_;
74251881SpeterSYMINITIALIZE            SymInitialize_;
75251881SpeterSYMSETOPTIONS            SymSetOptions_;
76251881SpeterSYMGETOPTIONS            SymGetOptions_;
77251881SpeterSYMCLEANUP               SymCleanup_;
78251881SpeterSYMGETTYPEINFO           SymGetTypeInfo_;
79251881SpeterSYMGETLINEFROMADDR64     SymGetLineFromAddr64_;
80251881SpeterSYMENUMSYMBOLS           SymEnumSymbols_;
81251881SpeterSYMSETCONTEXT            SymSetContext_;
82251881SpeterSYMFROMADDR              SymFromAddr_;
83251881SpeterSTACKWALK64              StackWalk64_;
84251881SpeterSYMFUNCTIONTABLEACCESS64 SymFunctionTableAccess64_;
85251881SpeterSYMGETMODULEBASE64       SymGetModuleBase64_;
86251881Speter
87251881Speter#endif /* SVN_USE_WIN32_CRASHHANDLER */
88251881Speter#endif /* WIN32 */
89251881Speter
90251881Speter#endif /* SVN_LIBSVN_SUBR_WIN32_CRASHRPT_DLL_H */