1 // error_handling.hpp --------------------------------------------------------------// 2 3 // Copyright 2010 Vicente J. Botet Escriba 4 5 // Distributed under the Boost Software License, Version 1.0. 6 // See http://www.boost.org/LICENSE_1_0.txt 7 8 9 #ifndef BOOST_DETAIL_WINAPI_ERROR_HANDLING_HPP 10 #define BOOST_DETAIL_WINAPI_ERROR_HANDLING_HPP 11 12 #include <boost/detail/winapi/basic_types.hpp> 13 #include <boost/detail/winapi/GetCurrentThread.hpp> 14 15 #ifdef BOOST_HAS_PRAGMA_ONCE 16 #pragma once 17 #endif 18 19 namespace boost { 20 namespace detail { 21 namespace winapi { 22 23 #if defined( BOOST_USE_WINDOWS_H ) 24 using ::FormatMessageA; 25 using ::FormatMessageW; 26 27 const int FORMAT_MESSAGE_ALLOCATE_BUFFER_= FORMAT_MESSAGE_ALLOCATE_BUFFER; 28 const int FORMAT_MESSAGE_IGNORE_INSERTS_= FORMAT_MESSAGE_IGNORE_INSERTS; 29 const int FORMAT_MESSAGE_FROM_STRING_= FORMAT_MESSAGE_FROM_STRING; 30 const int FORMAT_MESSAGE_FROM_HMODULE_= FORMAT_MESSAGE_FROM_HMODULE; 31 const int FORMAT_MESSAGE_FROM_SYSTEM_= FORMAT_MESSAGE_FROM_SYSTEM; 32 const int FORMAT_MESSAGE_ARGUMENT_ARRAY_= FORMAT_MESSAGE_ARGUMENT_ARRAY; 33 const int FORMAT_MESSAGE_MAX_WIDTH_MASK_= FORMAT_MESSAGE_MAX_WIDTH_MASK; 34 35 const char LANG_NEUTRAL_= LANG_NEUTRAL; 36 const char LANG_INVARIANT_= LANG_INVARIANT; 37 38 const char SUBLANG_DEFAULT_= SUBLANG_DEFAULT; // user default MAKELANGID_(WORD_ p,WORD_ s)39 inline WORD_ MAKELANGID_(WORD_ p, WORD_ s) { 40 return MAKELANGID(p,s); 41 } 42 #else 43 extern "C" { 44 // using ::FormatMessageA; 45 __declspec(dllimport) 46 DWORD_ 47 WINAPI 48 FormatMessageA( 49 DWORD_ dwFlags, 50 LPCVOID_ lpSource, 51 DWORD_ dwMessageId, 52 DWORD_ dwLanguageId, 53 LPSTR_ lpBuffer, 54 DWORD_ nSize, 55 va_list *Arguments 56 ); 57 58 // using ::FormatMessageW; 59 __declspec(dllimport) 60 DWORD_ 61 WINAPI 62 FormatMessageW( 63 DWORD_ dwFlags, 64 LPCVOID_ lpSource, 65 DWORD_ dwMessageId, 66 DWORD_ dwLanguageId, 67 LPWSTR_ lpBuffer, 68 DWORD_ nSize, 69 va_list *Arguments 70 ); 71 72 const int FORMAT_MESSAGE_ALLOCATE_BUFFER_= 0x00000100; 73 const int FORMAT_MESSAGE_IGNORE_INSERTS_= 0x00000200; 74 const int FORMAT_MESSAGE_FROM_STRING_= 0x00000400; 75 const int FORMAT_MESSAGE_FROM_HMODULE_= 0x00000800; 76 const int FORMAT_MESSAGE_FROM_SYSTEM_= 0x00001000; 77 const int FORMAT_MESSAGE_ARGUMENT_ARRAY_= 0x00002000; 78 const int FORMAT_MESSAGE_MAX_WIDTH_MASK_= 0x000000FF; 79 80 const char LANG_NEUTRAL_= 0x00; 81 const char LANG_INVARIANT_= 0x7f; 82 83 const char SUBLANG_DEFAULT_= 0x01; // user default 84 inline WORD_ MAKELANGID_(WORD_ p, WORD_ s) { 85 return ((((WORD_ )(s)) << 10) | (WORD_ )(p)); 86 } 87 88 } 89 #endif 90 } 91 } 92 } 93 #endif // BOOST_DETAIL_WINAPI_ERROR_HANDLING_HPP 94