error_handling.hpp 2.8 KB

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