]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | * Copyright 2017 Andrey Semashev | |
3 | * | |
4 | * Distributed under the Boost Software License, Version 1.0. | |
5 | * See http://www.boost.org/LICENSE_1_0.txt | |
6 | */ | |
7 | ||
8 | #ifndef BOOST_WINAPI_STACK_BACKTRACE_HPP_INCLUDED_ | |
9 | #define BOOST_WINAPI_STACK_BACKTRACE_HPP_INCLUDED_ | |
10 | ||
11 | #include <boost/winapi/basic_types.hpp> | |
12 | #include <boost/winapi/config.hpp> | |
13 | ||
14 | #ifdef BOOST_HAS_PRAGMA_ONCE | |
15 | #pragma once | |
16 | #endif | |
17 | ||
18 | // MinGW does not provide RtlCaptureStackBackTrace | |
19 | #if !defined( BOOST_WINAPI_IS_MINGW ) | |
20 | ||
21 | // Note: RtlCaptureStackBackTrace is available in WinXP SP1 and later | |
22 | #if (BOOST_USE_NTDDI_VERSION > BOOST_WINAPI_NTDDI_WINXP) | |
23 | ||
24 | #if BOOST_WINAPI_PARTITION_APP_SYSTEM | |
25 | ||
26 | // Windows SDK shipped with MSVC 7.1 and 8 does not declare RtlCaptureStackBackTrace in headers but allows to link with it | |
27 | #if !defined( BOOST_USE_WINDOWS_H ) || (defined(_MSC_VER) && (_MSC_VER+0) < 1500) | |
28 | extern "C" { | |
29 | ||
30 | BOOST_SYMBOL_IMPORT boost::winapi::WORD_ | |
31 | BOOST_WINAPI_NTAPI_CC RtlCaptureStackBackTrace( | |
32 | boost::winapi::DWORD_ FramesToSkip, | |
33 | boost::winapi::DWORD_ FramesToCapture, | |
34 | boost::winapi::PVOID_* BackTrace, | |
35 | boost::winapi::PDWORD_ BackTraceHash); | |
36 | ||
37 | } // extern "C" | |
38 | #endif | |
39 | ||
40 | namespace boost { | |
41 | namespace winapi { | |
42 | ||
43 | using ::RtlCaptureStackBackTrace; | |
44 | ||
45 | } | |
46 | } | |
47 | ||
48 | #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM | |
49 | #endif // (BOOST_USE_NTDDI_VERSION > BOOST_WINAPI_NTDDI_WINXP) | |
50 | #endif // !defined( BOOST_WINAPI_IS_MINGW ) | |
51 | #endif // BOOST_WINAPI_STACK_BACKTRACE_HPP_INCLUDED_ |