]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/boost/winapi/waitable_timer.hpp
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / boost / winapi / waitable_timer.hpp
CommitLineData
b32b8144
FG
1/*
2 * Copyright 2013 Andrey Semashev
3 *
4 * Distributed under the Boost Software License, Version 1.0.
5 * See http://www.boost.org/LICENSE_1_0.txt
6 */
7c673cae 7
b32b8144
FG
8#ifndef BOOST_WINAPI_WAITABLE_TIMER_HPP_INCLUDED_
9#define BOOST_WINAPI_WAITABLE_TIMER_HPP_INCLUDED_
7c673cae 10
b32b8144 11#include <boost/winapi/basic_types.hpp>
7c673cae
FG
12
13#ifdef BOOST_HAS_PRAGMA_ONCE
14#pragma once
15#endif
16
b32b8144
FG
17#if BOOST_WINAPI_PARTITION_APP_SYSTEM
18
20effc67
TL
19#include <boost/winapi/detail/header.hpp>
20
7c673cae
FG
21#if !defined( BOOST_USE_WINDOWS_H )
22extern "C" {
b32b8144 23typedef boost::winapi::VOID_
92f5a8d4 24(BOOST_WINAPI_WINAPI_CC *PTIMERAPCROUTINE)(
b32b8144
FG
25 boost::winapi::LPVOID_ lpArgToCompletionRoutine,
26 boost::winapi::DWORD_ dwTimerLowValue,
27 boost::winapi::DWORD_ dwTimerHighValue);
7c673cae
FG
28
29#if !defined( BOOST_NO_ANSI_APIS )
20effc67 30BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
7c673cae
FG
31CreateWaitableTimerA(
32 ::_SECURITY_ATTRIBUTES* lpTimerAttributes,
b32b8144
FG
33 boost::winapi::BOOL_ bManualReset,
34 boost::winapi::LPCSTR_ lpTimerName);
7c673cae 35
20effc67 36BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
7c673cae 37OpenWaitableTimerA(
b32b8144
FG
38 boost::winapi::DWORD_ dwDesiredAccess,
39 boost::winapi::BOOL_ bInheritHandle,
40 boost::winapi::LPCSTR_ lpTimerName);
7c673cae
FG
41#endif
42
20effc67 43BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
7c673cae
FG
44CreateWaitableTimerW(
45 ::_SECURITY_ATTRIBUTES* lpTimerAttributes,
b32b8144
FG
46 boost::winapi::BOOL_ bManualReset,
47 boost::winapi::LPCWSTR_ lpTimerName);
7c673cae 48
20effc67 49BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
7c673cae 50OpenWaitableTimerW(
b32b8144
FG
51 boost::winapi::DWORD_ dwDesiredAccess,
52 boost::winapi::BOOL_ bInheritHandle,
53 boost::winapi::LPCWSTR_ lpTimerName);
7c673cae 54
20effc67 55BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
7c673cae 56SetWaitableTimer(
b32b8144 57 boost::winapi::HANDLE_ hTimer,
7c673cae 58 const ::_LARGE_INTEGER* lpDueTime,
b32b8144 59 boost::winapi::LONG_ lPeriod,
7c673cae 60 PTIMERAPCROUTINE pfnCompletionRoutine,
b32b8144
FG
61 boost::winapi::LPVOID_ lpArgToCompletionRoutine,
62 boost::winapi::BOOL_ fResume);
7c673cae 63
20effc67 64BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
b32b8144
FG
65CancelWaitableTimer(boost::winapi::HANDLE_ hTimer);
66} // extern "C"
7c673cae
FG
67#endif
68
69namespace boost {
7c673cae
FG
70namespace winapi {
71
72typedef ::PTIMERAPCROUTINE PTIMERAPCROUTINE_;
73
74#if !defined( BOOST_NO_ANSI_APIS )
75using ::OpenWaitableTimerA;
76#endif
77using ::OpenWaitableTimerW;
78using ::CancelWaitableTimer;
79
80#if defined( BOOST_USE_WINDOWS_H )
81
92f5a8d4
TL
82BOOST_CONSTEXPR_OR_CONST DWORD_ TIMER_ALL_ACCESS_ = TIMER_ALL_ACCESS;
83BOOST_CONSTEXPR_OR_CONST DWORD_ TIMER_MODIFY_STATE_ = TIMER_MODIFY_STATE;
84BOOST_CONSTEXPR_OR_CONST DWORD_ TIMER_QUERY_STATE_ = TIMER_QUERY_STATE;
7c673cae
FG
85
86#else // defined( BOOST_USE_WINDOWS_H )
87
92f5a8d4
TL
88BOOST_CONSTEXPR_OR_CONST DWORD_ TIMER_ALL_ACCESS_ = 0x001F0003;
89BOOST_CONSTEXPR_OR_CONST DWORD_ TIMER_MODIFY_STATE_ = 0x00000002;
90BOOST_CONSTEXPR_OR_CONST DWORD_ TIMER_QUERY_STATE_ = 0x00000001;
7c673cae
FG
91
92#endif // defined( BOOST_USE_WINDOWS_H )
93
92f5a8d4
TL
94BOOST_CONSTEXPR_OR_CONST DWORD_ timer_all_access = TIMER_ALL_ACCESS_;
95BOOST_CONSTEXPR_OR_CONST DWORD_ timer_modify_state = TIMER_MODIFY_STATE_;
96BOOST_CONSTEXPR_OR_CONST DWORD_ timer_query_state = TIMER_QUERY_STATE_;
7c673cae
FG
97
98
99#if !defined( BOOST_NO_ANSI_APIS )
100BOOST_FORCEINLINE HANDLE_ CreateWaitableTimerA(PSECURITY_ATTRIBUTES_ lpTimerAttributes, BOOL_ bManualReset, LPCSTR_ lpTimerName)
101{
102 return ::CreateWaitableTimerA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpTimerAttributes), bManualReset, lpTimerName);
103}
104#endif
105
106BOOST_FORCEINLINE HANDLE_ CreateWaitableTimerW(PSECURITY_ATTRIBUTES_ lpTimerAttributes, BOOL_ bManualReset, LPCWSTR_ lpTimerName)
107{
108 return ::CreateWaitableTimerW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpTimerAttributes), bManualReset, lpTimerName);
109}
110
111BOOST_FORCEINLINE BOOL_ SetWaitableTimer(
112 HANDLE_ hTimer,
113 const LARGE_INTEGER_* lpDueTime,
114 LONG_ lPeriod,
115 PTIMERAPCROUTINE_ pfnCompletionRoutine,
116 LPVOID_ lpArgToCompletionRoutine,
117 BOOL_ fResume)
118{
119 return ::SetWaitableTimer(hTimer, reinterpret_cast< const ::_LARGE_INTEGER* >(lpDueTime), lPeriod, pfnCompletionRoutine, lpArgToCompletionRoutine, fResume);
120}
121
122#if !defined( BOOST_NO_ANSI_APIS )
123BOOST_FORCEINLINE HANDLE_ create_waitable_timer(PSECURITY_ATTRIBUTES_ lpTimerAttributes, BOOL_ bManualReset, LPCSTR_ lpTimerName)
124{
125 return ::CreateWaitableTimerA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpTimerAttributes), bManualReset, lpTimerName);
126}
127#endif
128
129BOOST_FORCEINLINE HANDLE_ create_waitable_timer(PSECURITY_ATTRIBUTES_ lpTimerAttributes, BOOL_ bManualReset, LPCWSTR_ lpTimerName)
130{
131 return ::CreateWaitableTimerW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpTimerAttributes), bManualReset, lpTimerName);
132}
133
134BOOST_FORCEINLINE HANDLE_ create_anonymous_waitable_timer(PSECURITY_ATTRIBUTES_ lpTimerAttributes, BOOL_ bManualReset)
135{
136#ifdef BOOST_NO_ANSI_APIS
137 return ::CreateWaitableTimerW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpTimerAttributes), bManualReset, 0);
138#else
139 return ::CreateWaitableTimerA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpTimerAttributes), bManualReset, 0);
140#endif
141}
142
7c673cae
FG
143}
144}
145
20effc67
TL
146#include <boost/winapi/detail/footer.hpp>
147
b32b8144
FG
148#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
149#endif // BOOST_WINAPI_WAITABLE_TIMER_HPP_INCLUDED_