mirror of
https://github.com/yuzu-emu/ext-boost.git
synced 2025-01-05 17:35:41 +00:00
111 lines
2.2 KiB
C++
111 lines
2.2 KiB
C++
// waitable_timer.hpp --------------------------------------------------------------//
|
|
|
|
// Copyright 2013 Andrey Semashev
|
|
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
// See http://www.boost.org/LICENSE_1_0.txt
|
|
|
|
|
|
#ifndef BOOST_DETAIL_WINAPI_WAITABLE_TIMER_HPP
|
|
#define BOOST_DETAIL_WINAPI_WAITABLE_TIMER_HPP
|
|
|
|
#include <boost/detail/winapi/basic_types.hpp>
|
|
|
|
#ifdef BOOST_HAS_PRAGMA_ONCE
|
|
#pragma once
|
|
#endif
|
|
|
|
namespace boost
|
|
{
|
|
namespace detail
|
|
{
|
|
namespace winapi
|
|
{
|
|
#if defined( BOOST_USE_WINDOWS_H )
|
|
|
|
typedef ::PTIMERAPCROUTINE PTIMERAPCROUTINE_;
|
|
|
|
# ifdef BOOST_NO_ANSI_APIS
|
|
using ::CreateWaitableTimerW;
|
|
using ::OpenWaitableTimerW;
|
|
# else
|
|
using ::CreateWaitableTimerA;
|
|
using ::OpenWaitableTimerA;
|
|
# endif
|
|
using ::SetWaitableTimer;
|
|
using ::CancelWaitableTimer;
|
|
|
|
#else
|
|
|
|
extern "C" {
|
|
|
|
struct _SECURITY_ATTRIBUTES;
|
|
|
|
typedef void (WINAPI* PTIMERAPCROUTINE_)
|
|
(
|
|
LPVOID_ lpArgToCompletionRoutine,
|
|
DWORD_ dwTimerLowValue,
|
|
DWORD_ dwTimerHighValue
|
|
);
|
|
|
|
# ifdef BOOST_NO_ANSI_APIS
|
|
__declspec(dllimport) HANDLE_ WINAPI CreateWaitableTimerW
|
|
(
|
|
_SECURITY_ATTRIBUTES* lpTimerAttributes,
|
|
BOOL_ bManualReset,
|
|
LPCWSTR_ lpTimerName
|
|
);
|
|
|
|
__declspec(dllimport) HANDLE_ WINAPI OpenWaitableTimerW
|
|
(
|
|
DWORD_ dwDesiredAccess,
|
|
BOOL_ bInheritHandle,
|
|
LPCWSTR_ lpTimerName
|
|
);
|
|
# else
|
|
__declspec(dllimport) HANDLE_ WINAPI CreateWaitableTimerA
|
|
(
|
|
_SECURITY_ATTRIBUTES* lpTimerAttributes,
|
|
BOOL_ bManualReset,
|
|
LPCSTR_ lpTimerName
|
|
);
|
|
|
|
__declspec(dllimport) HANDLE_ WINAPI OpenWaitableTimerA
|
|
(
|
|
DWORD_ dwDesiredAccess,
|
|
BOOL_ bInheritHandle,
|
|
LPCSTR_ lpTimerName
|
|
);
|
|
# endif
|
|
|
|
__declspec(dllimport) BOOL_ WINAPI SetWaitableTimer
|
|
(
|
|
HANDLE_ hTimer,
|
|
const LARGE_INTEGER_ *lpDueTime,
|
|
LONG_ lPeriod,
|
|
PTIMERAPCROUTINE_ pfnCompletionRoutine,
|
|
LPVOID_ lpArgToCompletionRoutine,
|
|
BOOL_ fResume
|
|
);
|
|
|
|
__declspec(dllimport) BOOL_ WINAPI CancelWaitableTimer(HANDLE_ hTimer);
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
BOOST_FORCEINLINE HANDLE_ create_anonymous_waitable_timer(_SECURITY_ATTRIBUTES* lpTimerAttributes, BOOL_ bManualReset)
|
|
{
|
|
#ifdef BOOST_NO_ANSI_APIS
|
|
return CreateWaitableTimerW(lpTimerAttributes, bManualReset, 0);
|
|
#else
|
|
return CreateWaitableTimerA(lpTimerAttributes, bManualReset, 0);
|
|
#endif
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif // BOOST_DETAIL_WINAPI_WAITABLE_TIMER_HPP
|