1 | // boost/system/windows_error.hpp ------------------------------------------// |
2 | |
3 | // Copyright Beman Dawes 2007 |
4 | |
5 | // Distributed under the Boost Software License, Version 1.0. (See accompanying |
6 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
7 | |
8 | // See library home page at http://www.boost.org/libs/system |
9 | |
10 | #ifndef BOOST_WINDOWS_ERROR_HPP |
11 | #define BOOST_WINDOWS_ERROR_HPP |
12 | |
13 | // This header is effectively empty for compiles on operating systems where |
14 | // it is not applicable. |
15 | |
16 | #include <boost/system/config.hpp> |
17 | |
18 | #ifdef BOOST_WINDOWS_API |
19 | |
20 | #include <boost/system/error_code.hpp> |
21 | |
22 | // Neither MinGW or Cygwin versions of winerror.h work if used alone, so on |
23 | // either of those platforms include the full windows.h |
24 | |
25 | #if defined(__MINGW32__) || defined(__CYGWIN__) |
26 | #include <windows.h> |
27 | #else |
28 | #include <winerror.h> |
29 | #endif |
30 | |
31 | namespace boost |
32 | { |
33 | namespace system |
34 | { |
35 | |
36 | // Microsoft Windows ---------------------------------------------------// |
37 | |
38 | // To construct an error_code after a API error: |
39 | // |
40 | // error_code( ::GetLastError(), system_category() ) |
41 | |
42 | namespace windows_error |
43 | { |
44 | enum windows_error_code |
45 | { |
46 | success = 0, |
47 | // These names and values are based on Windows winerror.h |
48 | invalid_function = ERROR_INVALID_FUNCTION, |
49 | file_not_found = ERROR_FILE_NOT_FOUND, |
50 | path_not_found = ERROR_PATH_NOT_FOUND, |
51 | too_many_open_files = ERROR_TOO_MANY_OPEN_FILES, |
52 | access_denied = ERROR_ACCESS_DENIED, |
53 | invalid_handle = ERROR_INVALID_HANDLE, |
54 | arena_trashed = ERROR_ARENA_TRASHED, |
55 | not_enough_memory = ERROR_NOT_ENOUGH_MEMORY, |
56 | invalid_block = ERROR_INVALID_BLOCK, |
57 | bad_environment = ERROR_BAD_ENVIRONMENT, |
58 | bad_format = ERROR_BAD_FORMAT, |
59 | invalid_access = ERROR_INVALID_ACCESS, |
60 | outofmemory = ERROR_OUTOFMEMORY, |
61 | invalid_drive = ERROR_INVALID_DRIVE, |
62 | current_directory = ERROR_CURRENT_DIRECTORY, |
63 | not_same_device = ERROR_NOT_SAME_DEVICE, |
64 | no_more_files = ERROR_NO_MORE_FILES, |
65 | write_protect = ERROR_WRITE_PROTECT, |
66 | bad_unit = ERROR_BAD_UNIT, |
67 | not_ready = ERROR_NOT_READY, |
68 | bad_command = ERROR_BAD_COMMAND, |
69 | crc = ERROR_CRC, |
70 | bad_length = ERROR_BAD_LENGTH, |
71 | seek = ERROR_SEEK, |
72 | not_dos_disk = ERROR_NOT_DOS_DISK, |
73 | sector_not_found = ERROR_SECTOR_NOT_FOUND, |
74 | out_of_paper = ERROR_OUT_OF_PAPER, |
75 | write_fault = ERROR_WRITE_FAULT, |
76 | read_fault = ERROR_READ_FAULT, |
77 | gen_failure = ERROR_GEN_FAILURE, |
78 | sharing_violation = ERROR_SHARING_VIOLATION, |
79 | lock_violation = ERROR_LOCK_VIOLATION, |
80 | wrong_disk = ERROR_WRONG_DISK, |
81 | sharing_buffer_exceeded = ERROR_SHARING_BUFFER_EXCEEDED, |
82 | handle_eof = ERROR_HANDLE_EOF, |
83 | handle_disk_full= ERROR_HANDLE_DISK_FULL, |
84 | rem_not_list = ERROR_REM_NOT_LIST, |
85 | dup_name = ERROR_DUP_NAME, |
86 | bad_net_path = ERROR_BAD_NETPATH, |
87 | network_busy = ERROR_NETWORK_BUSY, |
88 | // ... |
89 | file_exists = ERROR_FILE_EXISTS, |
90 | cannot_make = ERROR_CANNOT_MAKE, |
91 | // ... |
92 | broken_pipe = ERROR_BROKEN_PIPE, |
93 | open_failed = ERROR_OPEN_FAILED, |
94 | buffer_overflow = ERROR_BUFFER_OVERFLOW, |
95 | disk_full= ERROR_DISK_FULL, |
96 | // ... |
97 | lock_failed = ERROR_LOCK_FAILED, |
98 | busy = ERROR_BUSY, |
99 | cancel_violation = ERROR_CANCEL_VIOLATION, |
100 | already_exists = ERROR_ALREADY_EXISTS |
101 | // ... |
102 | |
103 | // TODO: add more Windows errors |
104 | }; |
105 | |
106 | } // namespace windows |
107 | |
108 | # ifndef BOOST_SYSTEM_NO_DEPRECATED |
109 | namespace windows = windows_error; |
110 | # endif |
111 | |
112 | template<> struct is_error_code_enum<windows_error::windows_error_code> |
113 | { static const bool value = true; }; |
114 | |
115 | namespace windows_error |
116 | { |
117 | inline error_code make_error_code( windows_error_code e ) |
118 | { return error_code( e, system_category() ); } |
119 | } |
120 | |
121 | } // namespace system |
122 | } // namespace boost |
123 | |
124 | #endif // BOOST_WINDOWS_API |
125 | |
126 | #endif // BOOST_WINDOWS_ERROR_HPP |
127 | |