File indexing completed on 2025-01-18 09:28:35
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef BOOST_ASIO_DETAIL_IMPL_WIN_EVENT_IPP
0012 #define BOOST_ASIO_DETAIL_IMPL_WIN_EVENT_IPP
0013
0014 #if defined(_MSC_VER) && (_MSC_VER >= 1200)
0015 # pragma once
0016 #endif
0017
0018 #include <boost/asio/detail/config.hpp>
0019
0020 #if defined(BOOST_ASIO_WINDOWS)
0021
0022 #include <boost/asio/detail/throw_error.hpp>
0023 #include <boost/asio/detail/win_event.hpp>
0024 #include <boost/asio/error.hpp>
0025
0026 #include <boost/asio/detail/push_options.hpp>
0027
0028 namespace boost {
0029 namespace asio {
0030 namespace detail {
0031
0032 win_event::win_event()
0033 : state_(0)
0034 {
0035 #if defined(BOOST_ASIO_WINDOWS_APP)
0036 events_[0] = ::CreateEventExW(0, 0,
0037 CREATE_EVENT_MANUAL_RESET, EVENT_ALL_ACCESS);
0038 #else
0039 events_[0] = ::CreateEventW(0, true, false, 0);
0040 #endif
0041 if (!events_[0])
0042 {
0043 DWORD last_error = ::GetLastError();
0044 boost::system::error_code ec(last_error,
0045 boost::asio::error::get_system_category());
0046 boost::asio::detail::throw_error(ec, "event");
0047 }
0048
0049 #if defined(BOOST_ASIO_WINDOWS_APP)
0050 events_[1] = ::CreateEventExW(0, 0, 0, EVENT_ALL_ACCESS);
0051 #else
0052 events_[1] = ::CreateEventW(0, false, false, 0);
0053 #endif
0054 if (!events_[1])
0055 {
0056 DWORD last_error = ::GetLastError();
0057 ::CloseHandle(events_[0]);
0058 boost::system::error_code ec(last_error,
0059 boost::asio::error::get_system_category());
0060 boost::asio::detail::throw_error(ec, "event");
0061 }
0062 }
0063
0064 win_event::~win_event()
0065 {
0066 ::CloseHandle(events_[0]);
0067 ::CloseHandle(events_[1]);
0068 }
0069
0070 }
0071 }
0072 }
0073
0074 #include <boost/asio/detail/pop_options.hpp>
0075
0076 #endif
0077
0078 #endif