mirror of
https://git.suyu.dev/suyu/ext-boost.git
synced 2025-12-30 03:04:45 +01:00
externals: Update boost to 1.72 and add Boost Context
This commit is contained in:
parent
5e8300b76a
commit
77abe07b3b
618 changed files with 96299 additions and 14263 deletions
81
boost/winapi/access_rights.hpp
Normal file
81
boost/winapi/access_rights.hpp
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* Copyright 2016 Andrey Semashev
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* See http://www.boost.org/LICENSE_1_0.txt
|
||||
*/
|
||||
|
||||
#ifndef BOOST_WINAPI_ACCESS_RIGHTS_HPP_INCLUDED_
|
||||
#define BOOST_WINAPI_ACCESS_RIGHTS_HPP_INCLUDED_
|
||||
|
||||
#include <boost/winapi/basic_types.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace winapi {
|
||||
|
||||
#if defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ DELETE_ = DELETE;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ READ_CONTROL_ = READ_CONTROL;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ WRITE_DAC_ = WRITE_DAC;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ WRITE_OWNER_ = WRITE_OWNER;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ SYNCHRONIZE_ = SYNCHRONIZE;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_ALL_ = STANDARD_RIGHTS_ALL;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_EXECUTE_ = STANDARD_RIGHTS_EXECUTE;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_READ_ = STANDARD_RIGHTS_READ;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_REQUIRED_ = STANDARD_RIGHTS_REQUIRED;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_WRITE_ = STANDARD_RIGHTS_WRITE;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ SPECIFIC_RIGHTS_ALL_ = SPECIFIC_RIGHTS_ALL;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ ACCESS_SYSTEM_SECURITY_ = ACCESS_SYSTEM_SECURITY;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ MAXIMUM_ALLOWED_ = MAXIMUM_ALLOWED;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_ALL_ = GENERIC_ALL;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_EXECUTE_ = GENERIC_EXECUTE;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_WRITE_ = GENERIC_WRITE;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_READ_ = GENERIC_READ;
|
||||
|
||||
typedef ::ACCESS_MASK ACCESS_MASK_;
|
||||
typedef ::PACCESS_MASK PACCESS_MASK_;
|
||||
|
||||
#else // defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ DELETE_ = 0x00010000;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ READ_CONTROL_ = 0x00020000;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ WRITE_DAC_ = 0x00040000;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ WRITE_OWNER_ = 0x00080000;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ SYNCHRONIZE_ = 0x00100000;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_ALL_ = 0x001F0000;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_EXECUTE_ = READ_CONTROL_;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_READ_ = READ_CONTROL_;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_REQUIRED_ = 0x000F0000;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_WRITE_ = READ_CONTROL_;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ SPECIFIC_RIGHTS_ALL_ = 0x0000FFFF;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ ACCESS_SYSTEM_SECURITY_ = 0x01000000;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ MAXIMUM_ALLOWED_ = 0x02000000;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_ALL_ = 0x10000000;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_EXECUTE_ = 0x20000000;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_WRITE_ = 0x40000000;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_READ_ = 0x80000000;
|
||||
|
||||
typedef DWORD_ ACCESS_MASK_;
|
||||
typedef ACCESS_MASK_* PACCESS_MASK_;
|
||||
|
||||
#endif // defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BOOST_WINAPI_ACCESS_RIGHTS_HPP_INCLUDED_
|
||||
189
boost/winapi/critical_section.hpp
Normal file
189
boost/winapi/critical_section.hpp
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
/*
|
||||
* Copyright 2010 Vicente J. Botet Escriba
|
||||
* Copyright 2015 Andrey Semashev
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* See http://www.boost.org/LICENSE_1_0.txt
|
||||
*/
|
||||
|
||||
#ifndef BOOST_WINAPI_CRITICAL_SECTION_HPP_INCLUDED_
|
||||
#define BOOST_WINAPI_CRITICAL_SECTION_HPP_INCLUDED_
|
||||
|
||||
#include <boost/winapi/basic_types.hpp>
|
||||
#include <boost/winapi/detail/cast_ptr.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#if !defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
extern "C" {
|
||||
#if !defined( BOOST_WINAPI_IS_MINGW )
|
||||
struct _RTL_CRITICAL_SECTION;
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
|
||||
InitializeCriticalSection(::_RTL_CRITICAL_SECTION* lpCriticalSection);
|
||||
#endif
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
|
||||
EnterCriticalSection(::_RTL_CRITICAL_SECTION* lpCriticalSection);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
|
||||
LeaveCriticalSection(::_RTL_CRITICAL_SECTION* lpCriticalSection);
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= 0x0403
|
||||
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
InitializeCriticalSectionAndSpinCount(
|
||||
::_RTL_CRITICAL_SECTION* lpCriticalSection,
|
||||
boost::winapi::DWORD_ dwSpinCount);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
|
||||
SetCriticalSectionSpinCount(
|
||||
::_RTL_CRITICAL_SECTION* lpCriticalSection,
|
||||
boost::winapi::DWORD_ dwSpinCount);
|
||||
#endif
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
InitializeCriticalSectionEx(
|
||||
::_RTL_CRITICAL_SECTION* lpCriticalSection,
|
||||
boost::winapi::DWORD_ dwSpinCount,
|
||||
boost::winapi::DWORD_ Flags);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
TryEnterCriticalSection(::_RTL_CRITICAL_SECTION* lpCriticalSection);
|
||||
#endif
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
|
||||
DeleteCriticalSection(::_RTL_CRITICAL_SECTION* lpCriticalSection);
|
||||
|
||||
#else // defined( BOOST_WINAPI_IS_MINGW )
|
||||
|
||||
// MinGW uses a different name for the structure
|
||||
struct _CRITICAL_SECTION;
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
|
||||
InitializeCriticalSection(::_CRITICAL_SECTION* lpCriticalSection);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
|
||||
EnterCriticalSection(::_CRITICAL_SECTION* lpCriticalSection);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
|
||||
LeaveCriticalSection(::_CRITICAL_SECTION* lpCriticalSection);
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= 0x0403
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
InitializeCriticalSectionAndSpinCount(
|
||||
::_CRITICAL_SECTION* lpCriticalSection,
|
||||
boost::winapi::DWORD_ dwSpinCount);
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
InitializeCriticalSectionEx(
|
||||
::_CRITICAL_SECTION* lpCriticalSection,
|
||||
boost::winapi::DWORD_ dwSpinCount,
|
||||
boost::winapi::DWORD_ Flags);
|
||||
#endif
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
|
||||
SetCriticalSectionSpinCount(
|
||||
::_CRITICAL_SECTION* lpCriticalSection,
|
||||
boost::winapi::DWORD_ dwSpinCount);
|
||||
#endif
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
TryEnterCriticalSection(::_CRITICAL_SECTION* lpCriticalSection);
|
||||
#endif
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
|
||||
DeleteCriticalSection(::_CRITICAL_SECTION* lpCriticalSection);
|
||||
|
||||
#endif // defined( BOOST_WINAPI_IS_MINGW )
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace winapi {
|
||||
|
||||
struct _RTL_CRITICAL_SECTION_DEBUG;
|
||||
|
||||
#pragma pack(push, 8)
|
||||
|
||||
typedef struct BOOST_MAY_ALIAS _RTL_CRITICAL_SECTION {
|
||||
_RTL_CRITICAL_SECTION_DEBUG* DebugInfo;
|
||||
LONG_ LockCount;
|
||||
LONG_ RecursionCount;
|
||||
HANDLE_ OwningThread;
|
||||
HANDLE_ LockSemaphore;
|
||||
ULONG_PTR_ SpinCount;
|
||||
} CRITICAL_SECTION_, *PCRITICAL_SECTION_;
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
BOOST_FORCEINLINE VOID_ InitializeCriticalSection(CRITICAL_SECTION_* lpCriticalSection)
|
||||
{
|
||||
::InitializeCriticalSection(winapi::detail::cast_ptr(lpCriticalSection));
|
||||
}
|
||||
#endif
|
||||
|
||||
BOOST_FORCEINLINE VOID_ EnterCriticalSection(CRITICAL_SECTION_* lpCriticalSection)
|
||||
{
|
||||
::EnterCriticalSection(winapi::detail::cast_ptr(lpCriticalSection));
|
||||
}
|
||||
|
||||
BOOST_FORCEINLINE VOID_ LeaveCriticalSection(CRITICAL_SECTION_* lpCriticalSection)
|
||||
{
|
||||
::LeaveCriticalSection(winapi::detail::cast_ptr(lpCriticalSection));
|
||||
}
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= 0x0403
|
||||
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
BOOST_FORCEINLINE BOOL_ InitializeCriticalSectionAndSpinCount(CRITICAL_SECTION_* lpCriticalSection, DWORD_ dwSpinCount)
|
||||
{
|
||||
return ::InitializeCriticalSectionAndSpinCount(winapi::detail::cast_ptr(lpCriticalSection), dwSpinCount);
|
||||
}
|
||||
|
||||
BOOST_FORCEINLINE DWORD_ SetCriticalSectionSpinCount(CRITICAL_SECTION_* lpCriticalSection, DWORD_ dwSpinCount)
|
||||
{
|
||||
return ::SetCriticalSectionSpinCount(winapi::detail::cast_ptr(lpCriticalSection), dwSpinCount);
|
||||
}
|
||||
#endif
|
||||
|
||||
// CRITICAL_SECTION_NO_DEBUG_INFO is defined for WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ CRITICAL_SECTION_NO_DEBUG_INFO_ = 0x01000000;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ CRITICAL_SECTION_FLAG_NO_DEBUG_INFO_ = CRITICAL_SECTION_NO_DEBUG_INFO_;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ CRITICAL_SECTION_FLAG_DYNAMIC_SPIN_ = 0x02000000; // undocumented
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ CRITICAL_SECTION_FLAG_STATIC_INIT_ = 0x04000000; // undocumented
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
BOOST_FORCEINLINE BOOL_ InitializeCriticalSectionEx(CRITICAL_SECTION_* lpCriticalSection, DWORD_ dwSpinCount, DWORD_ Flags)
|
||||
{
|
||||
return ::InitializeCriticalSectionEx(winapi::detail::cast_ptr(lpCriticalSection), dwSpinCount, Flags);
|
||||
}
|
||||
#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
#endif // BOOST_USE_WINAPI_VERSION >= 0x0403
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4
|
||||
BOOST_FORCEINLINE BOOL_ TryEnterCriticalSection(CRITICAL_SECTION_* lpCriticalSection)
|
||||
{
|
||||
return ::TryEnterCriticalSection(winapi::detail::cast_ptr(lpCriticalSection));
|
||||
}
|
||||
#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4
|
||||
|
||||
BOOST_FORCEINLINE VOID_ DeleteCriticalSection(CRITICAL_SECTION_* lpCriticalSection)
|
||||
{
|
||||
::DeleteCriticalSection(winapi::detail::cast_ptr(lpCriticalSection));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BOOST_WINAPI_CRITICAL_SECTION_HPP_INCLUDED_
|
||||
37
boost/winapi/detail/cast_ptr.hpp
Normal file
37
boost/winapi/detail/cast_ptr.hpp
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Copyright 2015 Andrey Semashev
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* See http://www.boost.org/LICENSE_1_0.txt
|
||||
*/
|
||||
|
||||
#ifndef BOOST_WINAPI_DETAIL_CAST_PTR_HPP_INCLUDED_
|
||||
#define BOOST_WINAPI_DETAIL_CAST_PTR_HPP_INCLUDED_
|
||||
|
||||
#include <boost/winapi/config.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace winapi {
|
||||
namespace detail {
|
||||
|
||||
//! This class is used to automatically cast pointers to the type used in the current Windows SDK function declarations
|
||||
class cast_ptr
|
||||
{
|
||||
private:
|
||||
const void* m_p;
|
||||
|
||||
public:
|
||||
explicit BOOST_FORCEINLINE cast_ptr(const void* p) BOOST_NOEXCEPT : m_p(p) {}
|
||||
template< typename T >
|
||||
BOOST_FORCEINLINE operator T* () const BOOST_NOEXCEPT { return (T*)m_p; }
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BOOST_WINAPI_DETAIL_CAST_PTR_HPP_INCLUDED_
|
||||
238
boost/winapi/dll.hpp
Normal file
238
boost/winapi/dll.hpp
Normal file
|
|
@ -0,0 +1,238 @@
|
|||
/*
|
||||
* Copyright 2010 Vicente J. Botet Escriba
|
||||
* Copyright 2014 Renato Tegon Forti, Antony Polukhin
|
||||
* Copyright 2015 Andrey Semashev
|
||||
* Copyright 2015 Antony Polukhin
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* See http://www.boost.org/LICENSE_1_0.txt
|
||||
*/
|
||||
|
||||
#ifndef BOOST_WINAPI_DLL_HPP_INCLUDED_
|
||||
#define BOOST_WINAPI_DLL_HPP_INCLUDED_
|
||||
|
||||
#include <boost/winapi/basic_types.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
|
||||
|
||||
#if !defined( BOOST_USE_WINDOWS_H )
|
||||
extern "C" {
|
||||
namespace boost { namespace winapi {
|
||||
#ifdef _WIN64
|
||||
typedef INT_PTR_ (BOOST_WINAPI_WINAPI_CC *FARPROC_)();
|
||||
typedef INT_PTR_ (BOOST_WINAPI_WINAPI_CC *NEARPROC_)();
|
||||
typedef INT_PTR_ (BOOST_WINAPI_WINAPI_CC *PROC_)();
|
||||
#else
|
||||
typedef int (BOOST_WINAPI_WINAPI_CC *FARPROC_)();
|
||||
typedef int (BOOST_WINAPI_WINAPI_CC *NEARPROC_)();
|
||||
typedef int (BOOST_WINAPI_WINAPI_CC *PROC_)();
|
||||
#endif // _WIN64
|
||||
}} // namespace boost::winapi
|
||||
|
||||
#if !defined( BOOST_NO_ANSI_APIS )
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
|
||||
LoadLibraryA(boost::winapi::LPCSTR_ lpFileName);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
|
||||
LoadLibraryExA(
|
||||
boost::winapi::LPCSTR_ lpFileName,
|
||||
boost::winapi::HANDLE_ hFile,
|
||||
boost::winapi::DWORD_ dwFlags
|
||||
);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
|
||||
GetModuleHandleA(boost::winapi::LPCSTR_ lpFileName);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
|
||||
GetModuleFileNameA(
|
||||
boost::winapi::HMODULE_ hModule,
|
||||
boost::winapi::LPSTR_ lpFilename,
|
||||
boost::winapi::DWORD_ nSize
|
||||
);
|
||||
#endif
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
|
||||
LoadLibraryW(boost::winapi::LPCWSTR_ lpFileName);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
|
||||
LoadLibraryExW(
|
||||
boost::winapi::LPCWSTR_ lpFileName,
|
||||
boost::winapi::HANDLE_ hFile,
|
||||
boost::winapi::DWORD_ dwFlags
|
||||
);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
|
||||
GetModuleHandleW(boost::winapi::LPCWSTR_ lpFileName);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
|
||||
GetModuleFileNameW(
|
||||
boost::winapi::HMODULE_ hModule,
|
||||
boost::winapi::LPWSTR_ lpFilename,
|
||||
boost::winapi::DWORD_ nSize
|
||||
);
|
||||
|
||||
#if !defined( UNDER_CE )
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::FARPROC_ BOOST_WINAPI_WINAPI_CC
|
||||
GetProcAddress(boost::winapi::HMODULE_ hModule, boost::winapi::LPCSTR_ lpProcName);
|
||||
#else
|
||||
// On Windows CE there are two functions: GetProcAddressA (since Windows CE 3.0) and GetProcAddressW.
|
||||
// GetProcAddress is a macro that is _always_ defined to GetProcAddressW.
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::FARPROC_ BOOST_WINAPI_WINAPI_CC
|
||||
GetProcAddressA(boost::winapi::HMODULE_ hModule, boost::winapi::LPCSTR_ lpProcName);
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::FARPROC_ BOOST_WINAPI_WINAPI_CC
|
||||
GetProcAddressW(boost::winapi::HMODULE_ hModule, boost::winapi::LPCWSTR_ lpProcName);
|
||||
#endif
|
||||
|
||||
struct _MEMORY_BASIC_INFORMATION;
|
||||
|
||||
#if !defined( BOOST_WINAPI_IS_MINGW )
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::SIZE_T_ BOOST_WINAPI_WINAPI_CC
|
||||
VirtualQuery(
|
||||
boost::winapi::LPCVOID_ lpAddress,
|
||||
::_MEMORY_BASIC_INFORMATION* lpBuffer,
|
||||
boost::winapi::SIZE_T_ dwLength
|
||||
);
|
||||
#else // !defined( BOOST_WINAPI_IS_MINGW )
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
|
||||
VirtualQuery(
|
||||
boost::winapi::LPCVOID_ lpAddress,
|
||||
::_MEMORY_BASIC_INFORMATION* lpBuffer,
|
||||
boost::winapi::DWORD_ dwLength
|
||||
);
|
||||
#endif // !defined( BOOST_WINAPI_IS_MINGW )
|
||||
} // extern "C"
|
||||
#endif // #if !defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
namespace boost {
|
||||
namespace winapi {
|
||||
|
||||
typedef struct BOOST_MAY_ALIAS MEMORY_BASIC_INFORMATION_ {
|
||||
PVOID_ BaseAddress;
|
||||
PVOID_ AllocationBase;
|
||||
DWORD_ AllocationProtect;
|
||||
SIZE_T_ RegionSize;
|
||||
DWORD_ State;
|
||||
DWORD_ Protect;
|
||||
DWORD_ Type;
|
||||
} *PMEMORY_BASIC_INFORMATION_;
|
||||
|
||||
#if defined( BOOST_USE_WINDOWS_H )
|
||||
typedef ::FARPROC FARPROC_;
|
||||
typedef ::NEARPROC NEARPROC_;
|
||||
typedef ::PROC PROC_;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ DONT_RESOLVE_DLL_REFERENCES_ = DONT_RESOLVE_DLL_REFERENCES;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ LOAD_WITH_ALTERED_SEARCH_PATH_ = LOAD_WITH_ALTERED_SEARCH_PATH;
|
||||
#else // defined( BOOST_USE_WINDOWS_H )
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ DONT_RESOLVE_DLL_REFERENCES_ = 0x00000001;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ LOAD_WITH_ALTERED_SEARCH_PATH_ = 0x00000008;
|
||||
#endif // defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
// This one is not defined by MinGW
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ LOAD_IGNORE_CODE_AUTHZ_LEVEL_ = 0x00000010;
|
||||
|
||||
#if !defined( BOOST_NO_ANSI_APIS )
|
||||
using ::LoadLibraryA;
|
||||
using ::LoadLibraryExA;
|
||||
using ::GetModuleHandleA;
|
||||
using ::GetModuleFileNameA;
|
||||
#endif // !defined( BOOST_NO_ANSI_APIS )
|
||||
using ::LoadLibraryW;
|
||||
using ::LoadLibraryExW;
|
||||
using ::GetModuleHandleW;
|
||||
using ::GetModuleFileNameW;
|
||||
|
||||
#if !defined( UNDER_CE )
|
||||
// For backward compatibility, don't use directly. Use get_proc_address instead.
|
||||
using ::GetProcAddress;
|
||||
#else
|
||||
using ::GetProcAddressA;
|
||||
using ::GetProcAddressW;
|
||||
#endif
|
||||
|
||||
BOOST_FORCEINLINE FARPROC_ get_proc_address(HMODULE_ hModule, LPCSTR_ lpProcName)
|
||||
{
|
||||
#if !defined( UNDER_CE )
|
||||
return ::GetProcAddress(hModule, lpProcName);
|
||||
#else
|
||||
return ::GetProcAddressA(hModule, lpProcName);
|
||||
#endif
|
||||
}
|
||||
|
||||
BOOST_FORCEINLINE SIZE_T_ VirtualQuery(LPCVOID_ lpAddress, MEMORY_BASIC_INFORMATION_* lpBuffer, SIZE_T_ dwLength)
|
||||
{
|
||||
return ::VirtualQuery(lpAddress, reinterpret_cast< ::_MEMORY_BASIC_INFORMATION* >(lpBuffer), dwLength);
|
||||
}
|
||||
|
||||
#if !defined( BOOST_NO_ANSI_APIS )
|
||||
BOOST_FORCEINLINE HMODULE_ load_library(LPCSTR_ lpFileName)
|
||||
{
|
||||
return ::LoadLibraryA(lpFileName);
|
||||
}
|
||||
|
||||
BOOST_FORCEINLINE HMODULE_ load_library_ex(LPCSTR_ lpFileName, HANDLE_ hFile, DWORD_ dwFlags)
|
||||
{
|
||||
return ::LoadLibraryExA(lpFileName, hFile, dwFlags);
|
||||
}
|
||||
|
||||
BOOST_FORCEINLINE HMODULE_ get_module_handle(LPCSTR_ lpFileName)
|
||||
{
|
||||
return ::GetModuleHandleA(lpFileName);
|
||||
}
|
||||
|
||||
BOOST_FORCEINLINE DWORD_ get_module_file_name(HMODULE_ hModule, LPSTR_ lpFilename, DWORD_ nSize)
|
||||
{
|
||||
return ::GetModuleFileNameA(hModule, lpFilename, nSize);
|
||||
}
|
||||
#endif // #if !defined( BOOST_NO_ANSI_APIS )
|
||||
|
||||
BOOST_FORCEINLINE HMODULE_ load_library(LPCWSTR_ lpFileName)
|
||||
{
|
||||
return ::LoadLibraryW(lpFileName);
|
||||
}
|
||||
|
||||
BOOST_FORCEINLINE HMODULE_ load_library_ex(LPCWSTR_ lpFileName, HANDLE_ hFile, DWORD_ dwFlags)
|
||||
{
|
||||
return ::LoadLibraryExW(lpFileName, hFile, dwFlags);
|
||||
}
|
||||
|
||||
BOOST_FORCEINLINE HMODULE_ get_module_handle(LPCWSTR_ lpFileName)
|
||||
{
|
||||
return ::GetModuleHandleW(lpFileName);
|
||||
}
|
||||
|
||||
BOOST_FORCEINLINE DWORD_ get_module_file_name(HMODULE_ hModule, LPWSTR_ lpFilename, DWORD_ nSize)
|
||||
{
|
||||
return ::GetModuleFileNameW(hModule, lpFilename, nSize);
|
||||
}
|
||||
|
||||
} // namespace winapi
|
||||
} // namespace boost
|
||||
|
||||
#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
|
||||
|
||||
//
|
||||
// FreeLibrary is in a different partition set (slightly)
|
||||
//
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
|
||||
|
||||
#if !defined(BOOST_USE_WINDOWS_H)
|
||||
extern "C" {
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
FreeLibrary(boost::winapi::HMODULE_ hModule);
|
||||
}
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace winapi {
|
||||
using ::FreeLibrary;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
|
||||
#endif // BOOST_WINAPI_DLL_HPP_INCLUDED_
|
||||
190
boost/winapi/event.hpp
Normal file
190
boost/winapi/event.hpp
Normal file
|
|
@ -0,0 +1,190 @@
|
|||
/*
|
||||
* Copyright 2010 Vicente J. Botet Escriba
|
||||
* Copyright 2015, 2017 Andrey Semashev
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* See http://www.boost.org/LICENSE_1_0.txt
|
||||
*/
|
||||
|
||||
#ifndef BOOST_WINAPI_EVENT_HPP_INCLUDED_
|
||||
#define BOOST_WINAPI_EVENT_HPP_INCLUDED_
|
||||
|
||||
#include <boost/winapi/basic_types.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#if !defined( BOOST_USE_WINDOWS_H ) && BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
extern "C" {
|
||||
#if !defined( BOOST_NO_ANSI_APIS )
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
|
||||
CreateEventA(
|
||||
::_SECURITY_ATTRIBUTES* lpEventAttributes,
|
||||
boost::winapi::BOOL_ bManualReset,
|
||||
boost::winapi::BOOL_ bInitialState,
|
||||
boost::winapi::LPCSTR_ lpName);
|
||||
#endif
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
|
||||
CreateEventW(
|
||||
::_SECURITY_ATTRIBUTES* lpEventAttributes,
|
||||
boost::winapi::BOOL_ bManualReset,
|
||||
boost::winapi::BOOL_ bInitialState,
|
||||
boost::winapi::LPCWSTR_ lpName);
|
||||
} // extern "C"
|
||||
#endif // !defined( BOOST_USE_WINDOWS_H ) && BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
|
||||
#if !defined( BOOST_USE_WINDOWS_H )
|
||||
extern "C" {
|
||||
#if !defined( BOOST_NO_ANSI_APIS )
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
|
||||
CreateEventExA(
|
||||
::_SECURITY_ATTRIBUTES *lpEventAttributes,
|
||||
boost::winapi::LPCSTR_ lpName,
|
||||
boost::winapi::DWORD_ dwFlags,
|
||||
boost::winapi::DWORD_ dwDesiredAccess);
|
||||
#endif
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
|
||||
OpenEventA(
|
||||
boost::winapi::DWORD_ dwDesiredAccess,
|
||||
boost::winapi::BOOL_ bInheritHandle,
|
||||
boost::winapi::LPCSTR_ lpName);
|
||||
#endif // !defined( BOOST_NO_ANSI_APIS )
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
|
||||
CreateEventExW(
|
||||
::_SECURITY_ATTRIBUTES *lpEventAttributes,
|
||||
boost::winapi::LPCWSTR_ lpName,
|
||||
boost::winapi::DWORD_ dwFlags,
|
||||
boost::winapi::DWORD_ dwDesiredAccess);
|
||||
#endif
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
|
||||
OpenEventW(
|
||||
boost::winapi::DWORD_ dwDesiredAccess,
|
||||
boost::winapi::BOOL_ bInheritHandle,
|
||||
boost::winapi::LPCWSTR_ lpName);
|
||||
|
||||
// Windows CE define SetEvent/ResetEvent as inline functions in kfuncs.h
|
||||
#if !defined( UNDER_CE )
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
SetEvent(boost::winapi::HANDLE_ hEvent);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
ResetEvent(boost::winapi::HANDLE_ hEvent);
|
||||
#endif
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace winapi {
|
||||
|
||||
#if !defined( BOOST_NO_ANSI_APIS )
|
||||
using ::OpenEventA;
|
||||
#endif
|
||||
using ::OpenEventW;
|
||||
using ::SetEvent;
|
||||
using ::ResetEvent;
|
||||
|
||||
#if defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ EVENT_ALL_ACCESS_ = EVENT_ALL_ACCESS;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ EVENT_MODIFY_STATE_ = EVENT_MODIFY_STATE;
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_EVENT_INITIAL_SET_ = CREATE_EVENT_INITIAL_SET;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_EVENT_MANUAL_RESET_ = CREATE_EVENT_MANUAL_RESET;
|
||||
#endif
|
||||
|
||||
#else // defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ EVENT_ALL_ACCESS_ = 0x001F0003;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ EVENT_MODIFY_STATE_ = 0x00000002;
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_EVENT_INITIAL_SET_ = 0x00000002;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_EVENT_MANUAL_RESET_ = 0x00000001;
|
||||
#endif
|
||||
|
||||
#endif // defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
// Undocumented and not present in Windows SDK. Enables NtQueryEvent.
|
||||
// http://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FNT%20Objects%2FEvent%2FNtQueryEvent.html
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ EVENT_QUERY_STATE_ = 0x00000001;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ event_all_access = EVENT_ALL_ACCESS_;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ event_modify_state = EVENT_MODIFY_STATE_;
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ create_event_initial_set = CREATE_EVENT_INITIAL_SET_;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ create_event_manual_reset = CREATE_EVENT_MANUAL_RESET_;
|
||||
#endif
|
||||
|
||||
#if !defined( BOOST_NO_ANSI_APIS )
|
||||
BOOST_FORCEINLINE HANDLE_ CreateEventA(SECURITY_ATTRIBUTES_* lpEventAttributes, BOOL_ bManualReset, BOOL_ bInitialState, LPCSTR_ lpName)
|
||||
{
|
||||
#if !BOOST_WINAPI_PARTITION_APP_SYSTEM && BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
const DWORD_ flags = (bManualReset ? create_event_manual_reset : 0u) | (bInitialState ? create_event_initial_set : 0u);
|
||||
return ::CreateEventExA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpEventAttributes), lpName, flags, event_all_access);
|
||||
#else
|
||||
return ::CreateEventA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpEventAttributes), bManualReset, bInitialState, lpName);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
BOOST_FORCEINLINE HANDLE_ CreateEventExA(SECURITY_ATTRIBUTES_* lpEventAttributes, LPCSTR_ lpName, DWORD_ dwFlags, DWORD_ dwDesiredAccess)
|
||||
{
|
||||
return ::CreateEventExA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpEventAttributes), lpName, dwFlags, dwDesiredAccess);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
BOOST_FORCEINLINE HANDLE_ CreateEventW(SECURITY_ATTRIBUTES_* lpEventAttributes, BOOL_ bManualReset, BOOL_ bInitialState, LPCWSTR_ lpName)
|
||||
{
|
||||
#if !BOOST_WINAPI_PARTITION_APP_SYSTEM && BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
const DWORD_ flags = (bManualReset ? create_event_manual_reset : 0u) | (bInitialState ? create_event_initial_set : 0u);
|
||||
return ::CreateEventExW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpEventAttributes), lpName, flags, event_all_access);
|
||||
#else
|
||||
return ::CreateEventW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpEventAttributes), bManualReset, bInitialState, lpName);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
BOOST_FORCEINLINE HANDLE_ CreateEventExW(SECURITY_ATTRIBUTES_* lpEventAttributes, LPCWSTR_ lpName, DWORD_ dwFlags, DWORD_ dwDesiredAccess)
|
||||
{
|
||||
return ::CreateEventExW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpEventAttributes), lpName, dwFlags, dwDesiredAccess);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined( BOOST_NO_ANSI_APIS )
|
||||
BOOST_FORCEINLINE HANDLE_ create_event(SECURITY_ATTRIBUTES_* lpEventAttributes, BOOL_ bManualReset, BOOL_ bInitialState, LPCSTR_ lpName)
|
||||
{
|
||||
return winapi::CreateEventA(lpEventAttributes, bManualReset, bInitialState, lpName);
|
||||
}
|
||||
|
||||
BOOST_FORCEINLINE HANDLE_ open_event(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCSTR_ lpName)
|
||||
{
|
||||
return ::OpenEventA(dwDesiredAccess, bInheritHandle, lpName);
|
||||
}
|
||||
#endif
|
||||
|
||||
BOOST_FORCEINLINE HANDLE_ create_event(SECURITY_ATTRIBUTES_* lpEventAttributes, BOOL_ bManualReset, BOOL_ bInitialState, LPCWSTR_ lpName)
|
||||
{
|
||||
return winapi::CreateEventW(lpEventAttributes, bManualReset, bInitialState, lpName);
|
||||
}
|
||||
|
||||
BOOST_FORCEINLINE HANDLE_ open_event(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCWSTR_ lpName)
|
||||
{
|
||||
return ::OpenEventW(dwDesiredAccess, bInheritHandle, lpName);
|
||||
}
|
||||
|
||||
BOOST_FORCEINLINE HANDLE_ create_anonymous_event(SECURITY_ATTRIBUTES_* lpEventAttributes, BOOL_ bManualReset, BOOL_ bInitialState)
|
||||
{
|
||||
return winapi::CreateEventW(lpEventAttributes, bManualReset, bInitialState, 0);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BOOST_WINAPI_EVENT_HPP_INCLUDED_
|
||||
30
boost/winapi/get_current_process_id.hpp
Normal file
30
boost/winapi/get_current_process_id.hpp
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright 2010 Vicente J. Botet Escriba
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* See http://www.boost.org/LICENSE_1_0.txt
|
||||
*/
|
||||
|
||||
#ifndef BOOST_WINAPI_GET_CURRENT_PROCESS_ID_HPP_INCLUDED_
|
||||
#define BOOST_WINAPI_GET_CURRENT_PROCESS_ID_HPP_INCLUDED_
|
||||
|
||||
#include <boost/winapi/basic_types.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
// Windows CE define GetCurrentProcessId as an inline function in kfuncs.h
|
||||
#if !defined( BOOST_USE_WINDOWS_H ) && !defined( UNDER_CE )
|
||||
extern "C" {
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC GetCurrentProcessId(BOOST_WINAPI_DETAIL_VOID);
|
||||
}
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace winapi {
|
||||
using ::GetCurrentProcessId;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BOOST_WINAPI_GET_CURRENT_PROCESS_ID_HPP_INCLUDED_
|
||||
31
boost/winapi/get_current_thread_id.hpp
Normal file
31
boost/winapi/get_current_thread_id.hpp
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright 2010 Vicente J. Botet Escriba
|
||||
* Copyright 2015 Andrey Semashev
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* See http://www.boost.org/LICENSE_1_0.txt
|
||||
*/
|
||||
|
||||
#ifndef BOOST_WINAPI_GET_CURRENT_THREAD_ID_HPP_INCLUDED_
|
||||
#define BOOST_WINAPI_GET_CURRENT_THREAD_ID_HPP_INCLUDED_
|
||||
|
||||
#include <boost/winapi/basic_types.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
// Windows CE define GetCurrentThreadId as an inline function in kfuncs.h
|
||||
#if !defined( BOOST_USE_WINDOWS_H ) && !defined( UNDER_CE )
|
||||
extern "C" {
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC GetCurrentThreadId(BOOST_WINAPI_DETAIL_VOID);
|
||||
}
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace winapi {
|
||||
using ::GetCurrentThreadId;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BOOST_WINAPI_GET_CURRENT_THREAD_ID_HPP_INCLUDED_
|
||||
72
boost/winapi/handles.hpp
Normal file
72
boost/winapi/handles.hpp
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* Copyright 2010 Vicente J. Botet Escriba
|
||||
* Copyright 2015 Andrey Semashev
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* See http://www.boost.org/LICENSE_1_0.txt
|
||||
*/
|
||||
|
||||
#ifndef BOOST_WINAPI_HANDLES_HPP_INCLUDED_
|
||||
#define BOOST_WINAPI_HANDLES_HPP_INCLUDED_
|
||||
|
||||
#include <boost/winapi/basic_types.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#if !defined( BOOST_USE_WINDOWS_H )
|
||||
extern "C" {
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
CloseHandle(boost::winapi::HANDLE_ handle);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
DuplicateHandle(
|
||||
boost::winapi::HANDLE_ hSourceProcessHandle,
|
||||
boost::winapi::HANDLE_ hSourceHandle,
|
||||
boost::winapi::HANDLE_ hTargetProcessHandle,
|
||||
boost::winapi::HANDLE_* lpTargetHandle,
|
||||
boost::winapi::DWORD_ dwDesiredAccess,
|
||||
boost::winapi::BOOL_ bInheritHandle,
|
||||
boost::winapi::DWORD_ dwOptions);
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN10
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
CompareObjectHandles(
|
||||
boost::winapi::HANDLE_ hFirstObjectHandle,
|
||||
boost::winapi::HANDLE_ hSecondObjectHandle);
|
||||
#endif
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace winapi {
|
||||
|
||||
using ::CloseHandle;
|
||||
using ::DuplicateHandle;
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN10
|
||||
using ::CompareObjectHandles;
|
||||
#endif
|
||||
|
||||
// Note: MSVC-14.1 does not interpret INVALID_HANDLE_VALUE_ initializer as a constant expression
|
||||
#if defined( BOOST_USE_WINDOWS_H )
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ DUPLICATE_CLOSE_SOURCE_ = DUPLICATE_CLOSE_SOURCE;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ DUPLICATE_SAME_ACCESS_ = DUPLICATE_SAME_ACCESS;
|
||||
const HANDLE_ INVALID_HANDLE_VALUE_ = INVALID_HANDLE_VALUE;
|
||||
#else
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ DUPLICATE_CLOSE_SOURCE_ = 1;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ DUPLICATE_SAME_ACCESS_ = 2;
|
||||
const HANDLE_ INVALID_HANDLE_VALUE_ = (HANDLE_)(-1);
|
||||
#endif
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ duplicate_close_source = DUPLICATE_CLOSE_SOURCE_;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ duplicate_same_access = DUPLICATE_SAME_ACCESS_;
|
||||
// Note: The "unused" attribute here should not be necessary because the variable is a constant.
|
||||
// However, MinGW gcc 5.3 spams warnings about this particular constant.
|
||||
const HANDLE_ invalid_handle_value BOOST_ATTRIBUTE_UNUSED = INVALID_HANDLE_VALUE_;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BOOST_WINAPI_HANDLES_HPP_INCLUDED_
|
||||
83
boost/winapi/heap_memory.hpp
Normal file
83
boost/winapi/heap_memory.hpp
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
/*
|
||||
* Copyright 2010 Vicente J. Botet Escriba
|
||||
* Copyright 2015, 2017 Andrey Semashev
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* See http://www.boost.org/LICENSE_1_0.txt
|
||||
*/
|
||||
|
||||
#ifndef BOOST_WINAPI_HEAP_MEMORY_HPP_INCLUDED_
|
||||
#define BOOST_WINAPI_HEAP_MEMORY_HPP_INCLUDED_
|
||||
|
||||
#include <boost/winapi/basic_types.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#if !defined( BOOST_USE_WINDOWS_H )
|
||||
#undef HeapAlloc
|
||||
extern "C" {
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
|
||||
GetProcessHeaps(boost::winapi::DWORD_ NumberOfHeaps, boost::winapi::PHANDLE_ ProcessHeaps);
|
||||
#endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
|
||||
GetProcessHeap(BOOST_WINAPI_DETAIL_VOID);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::LPVOID_ BOOST_WINAPI_WINAPI_CC
|
||||
HeapAlloc(
|
||||
boost::winapi::HANDLE_ hHeap,
|
||||
boost::winapi::DWORD_ dwFlags,
|
||||
boost::winapi::SIZE_T_ dwBytes);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
HeapFree(
|
||||
boost::winapi::HANDLE_ hHeap,
|
||||
boost::winapi::DWORD_ dwFlags,
|
||||
boost::winapi::LPVOID_ lpMem);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::LPVOID_ BOOST_WINAPI_WINAPI_CC
|
||||
HeapReAlloc(
|
||||
boost::winapi::HANDLE_ hHeap,
|
||||
boost::winapi::DWORD_ dwFlags,
|
||||
boost::winapi::LPVOID_ lpMem,
|
||||
boost::winapi::SIZE_T_ dwBytes);
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
|
||||
HeapCreate(
|
||||
boost::winapi::DWORD_ flOptions,
|
||||
boost::winapi::SIZE_T_ dwInitialSize,
|
||||
boost::winapi::SIZE_T_ dwMaximumSize);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
HeapDestroy(boost::winapi::HANDLE_ hHeap);
|
||||
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
|
||||
} // extern "C"
|
||||
#endif // !defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
namespace boost {
|
||||
namespace winapi {
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
|
||||
using ::GetProcessHeaps;
|
||||
#endif
|
||||
|
||||
using ::GetProcessHeap;
|
||||
using ::HeapAlloc;
|
||||
using ::HeapFree;
|
||||
using ::HeapReAlloc;
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
using ::HeapCreate;
|
||||
using ::HeapDestroy;
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BOOST_WINAPI_HEAP_MEMORY_HPP_INCLUDED_
|
||||
186
boost/winapi/semaphore.hpp
Normal file
186
boost/winapi/semaphore.hpp
Normal file
|
|
@ -0,0 +1,186 @@
|
|||
/*
|
||||
* Copyright 2010 Vicente J. Botet Escriba
|
||||
* Copyright 2015 Andrey Semashev
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* See http://www.boost.org/LICENSE_1_0.txt
|
||||
*/
|
||||
|
||||
#ifndef BOOST_WINAPI_SEMAPHORE_HPP_INCLUDED_
|
||||
#define BOOST_WINAPI_SEMAPHORE_HPP_INCLUDED_
|
||||
|
||||
#include <boost/winapi/basic_types.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#if !defined( BOOST_USE_WINDOWS_H )
|
||||
extern "C" {
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
#if !defined( BOOST_NO_ANSI_APIS )
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
|
||||
CreateSemaphoreA(
|
||||
::_SECURITY_ATTRIBUTES* lpSemaphoreAttributes,
|
||||
boost::winapi::LONG_ lInitialCount,
|
||||
boost::winapi::LONG_ lMaximumCount,
|
||||
boost::winapi::LPCSTR_ lpName);
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
|
||||
CreateSemaphoreExA(
|
||||
::_SECURITY_ATTRIBUTES* lpSemaphoreAttributes,
|
||||
boost::winapi::LONG_ lInitialCount,
|
||||
boost::winapi::LONG_ lMaximumCount,
|
||||
boost::winapi::LPCSTR_ lpName,
|
||||
boost::winapi::DWORD_ dwFlags,
|
||||
boost::winapi::DWORD_ dwDesiredAccess);
|
||||
#endif
|
||||
|
||||
#endif // !defined( BOOST_NO_ANSI_APIS )
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
|
||||
CreateSemaphoreW(
|
||||
::_SECURITY_ATTRIBUTES* lpSemaphoreAttributes,
|
||||
boost::winapi::LONG_ lInitialCount,
|
||||
boost::winapi::LONG_ lMaximumCount,
|
||||
boost::winapi::LPCWSTR_ lpName);
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
|
||||
CreateSemaphoreExW(
|
||||
::_SECURITY_ATTRIBUTES* lpSemaphoreAttributes,
|
||||
boost::winapi::LONG_ lInitialCount,
|
||||
boost::winapi::LONG_ lMaximumCount,
|
||||
boost::winapi::LPCWSTR_ lpName,
|
||||
boost::winapi::DWORD_ dwFlags,
|
||||
boost::winapi::DWORD_ dwDesiredAccess);
|
||||
#endif
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
ReleaseSemaphore(
|
||||
boost::winapi::HANDLE_ hSemaphore,
|
||||
boost::winapi::LONG_ lReleaseCount,
|
||||
boost::winapi::LPLONG_ lpPreviousCount);
|
||||
|
||||
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
|
||||
|
||||
#if !defined( BOOST_NO_ANSI_APIS )
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
|
||||
OpenSemaphoreA(
|
||||
boost::winapi::DWORD_ dwDesiredAccess,
|
||||
boost::winapi::BOOL_ bInheritHandle,
|
||||
boost::winapi::LPCSTR_ lpName);
|
||||
#endif // !defined( BOOST_NO_ANSI_APIS )
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
|
||||
OpenSemaphoreW(
|
||||
boost::winapi::DWORD_ dwDesiredAccess,
|
||||
boost::winapi::BOOL_ bInheritHandle,
|
||||
boost::winapi::LPCWSTR_ lpName);
|
||||
|
||||
#endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
|
||||
|
||||
} // extern "C"
|
||||
#endif // !defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
namespace boost {
|
||||
namespace winapi {
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
|
||||
using ::ReleaseSemaphore;
|
||||
|
||||
#if defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ SEMAPHORE_ALL_ACCESS_ = SEMAPHORE_ALL_ACCESS;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ SEMAPHORE_MODIFY_STATE_ = SEMAPHORE_MODIFY_STATE;
|
||||
|
||||
#else // defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ SEMAPHORE_ALL_ACCESS_ = 0x001F0003;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ SEMAPHORE_MODIFY_STATE_ = 0x00000002;
|
||||
|
||||
#endif // defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
// Undocumented and not present in Windows SDK. Enables NtQuerySemaphore.
|
||||
// http://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FNT%20Objects%2FEvent%2FNtQueryEvent.html
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ SEMAPHORE_QUERY_STATE_ = 0x00000001;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ semaphore_all_access = SEMAPHORE_ALL_ACCESS_;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ semaphore_modify_state = SEMAPHORE_MODIFY_STATE_;
|
||||
|
||||
|
||||
#if !defined( BOOST_NO_ANSI_APIS )
|
||||
BOOST_FORCEINLINE HANDLE_ CreateSemaphoreA(SECURITY_ATTRIBUTES_* lpSemaphoreAttributes, LONG_ lInitialCount, LONG_ lMaximumCount, LPCSTR_ lpName)
|
||||
{
|
||||
return ::CreateSemaphoreA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSemaphoreAttributes), lInitialCount, lMaximumCount, lpName);
|
||||
}
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
BOOST_FORCEINLINE HANDLE_ CreateSemaphoreExA(SECURITY_ATTRIBUTES_* lpSemaphoreAttributes, LONG_ lInitialCount, LONG_ lMaximumCount, LPCSTR_ lpName, DWORD_ dwFlags, DWORD_ dwDesiredAccess)
|
||||
{
|
||||
return ::CreateSemaphoreExA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSemaphoreAttributes), lInitialCount, lMaximumCount, lpName, dwFlags, dwDesiredAccess);
|
||||
}
|
||||
#endif
|
||||
#endif // !defined( BOOST_NO_ANSI_APIS )
|
||||
|
||||
BOOST_FORCEINLINE HANDLE_ CreateSemaphoreW(SECURITY_ATTRIBUTES_* lpSemaphoreAttributes, LONG_ lInitialCount, LONG_ lMaximumCount, LPCWSTR_ lpName)
|
||||
{
|
||||
return ::CreateSemaphoreW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSemaphoreAttributes), lInitialCount, lMaximumCount, lpName);
|
||||
}
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
BOOST_FORCEINLINE HANDLE_ CreateSemaphoreExW(SECURITY_ATTRIBUTES_* lpSemaphoreAttributes, LONG_ lInitialCount, LONG_ lMaximumCount, LPCWSTR_ lpName, DWORD_ dwFlags, DWORD_ dwDesiredAccess)
|
||||
{
|
||||
return ::CreateSemaphoreExW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSemaphoreAttributes), lInitialCount, lMaximumCount, lpName, dwFlags, dwDesiredAccess);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined( BOOST_NO_ANSI_APIS )
|
||||
BOOST_FORCEINLINE HANDLE_ create_semaphore(SECURITY_ATTRIBUTES_* lpSemaphoreAttributes, LONG_ lInitialCount, LONG_ lMaximumCount, LPCSTR_ lpName)
|
||||
{
|
||||
return winapi::CreateSemaphoreA(lpSemaphoreAttributes, lInitialCount, lMaximumCount, lpName);
|
||||
}
|
||||
#endif
|
||||
|
||||
BOOST_FORCEINLINE HANDLE_ create_semaphore(SECURITY_ATTRIBUTES_* lpSemaphoreAttributes, LONG_ lInitialCount, LONG_ lMaximumCount, LPCWSTR_ lpName)
|
||||
{
|
||||
return winapi::CreateSemaphoreW(lpSemaphoreAttributes, lInitialCount, lMaximumCount, lpName);
|
||||
}
|
||||
|
||||
BOOST_FORCEINLINE HANDLE_ create_anonymous_semaphore(SECURITY_ATTRIBUTES_* lpSemaphoreAttributes, LONG_ lInitialCount, LONG_ lMaximumCount)
|
||||
{
|
||||
return winapi::CreateSemaphoreW(lpSemaphoreAttributes, lInitialCount, lMaximumCount, 0);
|
||||
}
|
||||
|
||||
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
|
||||
|
||||
#if !defined( BOOST_NO_ANSI_APIS )
|
||||
using ::OpenSemaphoreA;
|
||||
|
||||
BOOST_FORCEINLINE HANDLE_ open_semaphore(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCSTR_ lpName)
|
||||
{
|
||||
return ::OpenSemaphoreA(dwDesiredAccess, bInheritHandle, lpName);
|
||||
}
|
||||
#endif // !defined( BOOST_NO_ANSI_APIS )
|
||||
|
||||
using ::OpenSemaphoreW;
|
||||
|
||||
BOOST_FORCEINLINE HANDLE_ open_semaphore(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCWSTR_ lpName)
|
||||
{
|
||||
return ::OpenSemaphoreW(dwDesiredAccess, bInheritHandle, lpName);
|
||||
}
|
||||
|
||||
#endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BOOST_WINAPI_SEMAPHORE_HPP_INCLUDED_
|
||||
87
boost/winapi/system.hpp
Normal file
87
boost/winapi/system.hpp
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
/*
|
||||
* Copyright 2010 Vicente J. Botet Escriba
|
||||
* Copyright (c) Microsoft Corporation 2014
|
||||
* Copyright 2015 Andrey Semashev
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* See http://www.boost.org/LICENSE_1_0.txt
|
||||
*/
|
||||
|
||||
#ifndef BOOST_WINAPI_SYSTEM_HPP_INCLUDED_
|
||||
#define BOOST_WINAPI_SYSTEM_HPP_INCLUDED_
|
||||
|
||||
#include <boost/winapi/basic_types.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_MSVC)
|
||||
#pragma warning(push)
|
||||
// nonstandard extension used : nameless struct/union
|
||||
#pragma warning(disable: 4201)
|
||||
#endif
|
||||
|
||||
#if !defined( BOOST_USE_WINDOWS_H )
|
||||
extern "C" {
|
||||
struct _SYSTEM_INFO;
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
|
||||
GetSystemInfo(::_SYSTEM_INFO* lpSystemInfo);
|
||||
#endif
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
|
||||
GetNativeSystemInfo(::_SYSTEM_INFO* lpSystemInfo);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace winapi {
|
||||
|
||||
typedef struct BOOST_MAY_ALIAS _SYSTEM_INFO {
|
||||
BOOST_WINAPI_DETAIL_EXTENSION union {
|
||||
DWORD_ dwOemId;
|
||||
BOOST_WINAPI_DETAIL_EXTENSION struct {
|
||||
WORD_ wProcessorArchitecture;
|
||||
WORD_ wReserved;
|
||||
};
|
||||
};
|
||||
DWORD_ dwPageSize;
|
||||
LPVOID_ lpMinimumApplicationAddress;
|
||||
LPVOID_ lpMaximumApplicationAddress;
|
||||
DWORD_PTR_ dwActiveProcessorMask;
|
||||
DWORD_ dwNumberOfProcessors;
|
||||
DWORD_ dwProcessorType;
|
||||
DWORD_ dwAllocationGranularity;
|
||||
WORD_ wProcessorLevel;
|
||||
WORD_ wProcessorRevision;
|
||||
} SYSTEM_INFO_, *LPSYSTEM_INFO_;
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
BOOST_FORCEINLINE VOID_ GetSystemInfo(LPSYSTEM_INFO_ lpSystemInfo)
|
||||
{
|
||||
::GetSystemInfo(reinterpret_cast< ::_SYSTEM_INFO* >(lpSystemInfo));
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP
|
||||
BOOST_FORCEINLINE VOID_ GetNativeSystemInfo(LPSYSTEM_INFO_ lpSystemInfo)
|
||||
{
|
||||
::GetNativeSystemInfo(reinterpret_cast< ::_SYSTEM_INFO* >(lpSystemInfo));
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(BOOST_MSVC)
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#endif // BOOST_WINAPI_SYSTEM_HPP_INCLUDED_
|
||||
42
boost/winapi/thread.hpp
Normal file
42
boost/winapi/thread.hpp
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* Copyright 2010 Vicente J. Botet Escriba
|
||||
* Copyright 2015 Andrey Semashev
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* See http://www.boost.org/LICENSE_1_0.txt
|
||||
*/
|
||||
|
||||
#ifndef BOOST_WINAPI_THREAD_HPP_INCLUDED_
|
||||
#define BOOST_WINAPI_THREAD_HPP_INCLUDED_
|
||||
|
||||
#include <boost/winapi/basic_types.hpp>
|
||||
#include <boost/winapi/get_current_thread.hpp>
|
||||
#include <boost/winapi/get_current_thread_id.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
|
||||
#if !defined( BOOST_USE_WINDOWS_H )
|
||||
extern "C" {
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
|
||||
SleepEx(
|
||||
boost::winapi::DWORD_ dwMilliseconds,
|
||||
boost::winapi::BOOL_ bAlertable);
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC Sleep(boost::winapi::DWORD_ dwMilliseconds);
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC SwitchToThread(BOOST_WINAPI_DETAIL_VOID);
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace winapi {
|
||||
using ::SleepEx;
|
||||
using ::Sleep;
|
||||
using ::SwitchToThread;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
#endif // BOOST_WINAPI_THREAD_HPP_INCLUDED_
|
||||
129
boost/winapi/thread_pool.hpp
Normal file
129
boost/winapi/thread_pool.hpp
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
/*
|
||||
* Copyright 2013 Andrey Semashev
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* See http://www.boost.org/LICENSE_1_0.txt
|
||||
*/
|
||||
|
||||
#ifndef BOOST_WINAPI_THREAD_POOL_HPP_INCLUDED_
|
||||
#define BOOST_WINAPI_THREAD_POOL_HPP_INCLUDED_
|
||||
|
||||
#include <boost/winapi/config.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN2K
|
||||
|
||||
#include <boost/winapi/basic_types.hpp>
|
||||
|
||||
#if !defined( BOOST_USE_WINDOWS_H )
|
||||
extern "C" {
|
||||
#if BOOST_WINAPI_PARTITION_DESKTOP
|
||||
typedef boost::winapi::VOID_ (BOOST_WINAPI_NTAPI_CC *WAITORTIMERCALLBACKFUNC)
|
||||
(boost::winapi::PVOID_, boost::winapi::BOOLEAN_);
|
||||
typedef WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK;
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
RegisterWaitForSingleObject(
|
||||
boost::winapi::PHANDLE_ phNewWaitObject,
|
||||
boost::winapi::HANDLE_ hObject,
|
||||
WAITORTIMERCALLBACK Callback,
|
||||
boost::winapi::PVOID_ Context,
|
||||
boost::winapi::ULONG_ dwMilliseconds,
|
||||
boost::winapi::ULONG_ dwFlags);
|
||||
#endif
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
// MinGW is buggy - it is missing these function declarations for Win2000
|
||||
#if !defined( BOOST_USE_WINDOWS_H ) || (defined(BOOST_WINAPI_IS_MINGW) && BOOST_USE_WINAPI_VERSION < BOOST_WINAPI_VERSION_WINXP)
|
||||
extern "C" {
|
||||
#if BOOST_WINAPI_PARTITION_DESKTOP
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
UnregisterWait(boost::winapi::HANDLE_ WaitHandle);
|
||||
#endif
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
|
||||
UnregisterWaitEx(
|
||||
boost::winapi::HANDLE_ WaitHandle,
|
||||
boost::winapi::HANDLE_ CompletionEvent);
|
||||
#endif
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace winapi {
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_DESKTOP
|
||||
typedef ::WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACKFUNC_;
|
||||
typedef ::WAITORTIMERCALLBACK WAITORTIMERCALLBACK_;
|
||||
|
||||
using ::RegisterWaitForSingleObject;
|
||||
using ::UnregisterWait;
|
||||
#endif
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
|
||||
using ::UnregisterWaitEx;
|
||||
#endif
|
||||
#if defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEDEFAULT_ = WT_EXECUTEDEFAULT;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEINIOTHREAD_ = WT_EXECUTEINIOTHREAD;
|
||||
#if defined( BOOST_WINAPI_IS_MINGW )
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEINUITHREAD_ = 0x00000002;
|
||||
#else
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEINUITHREAD_ = WT_EXECUTEINUITHREAD;
|
||||
#endif
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEINWAITTHREAD_ = WT_EXECUTEINWAITTHREAD;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEONLYONCE_ = WT_EXECUTEONLYONCE;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEINTIMERTHREAD_ = WT_EXECUTEINTIMERTHREAD;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTELONGFUNCTION_ = WT_EXECUTELONGFUNCTION;
|
||||
#if defined( BOOST_WINAPI_IS_MINGW )
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEINPERSISTENTIOTHREAD_ = 0x00000040;
|
||||
#else
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEINPERSISTENTIOTHREAD_ = WT_EXECUTEINPERSISTENTIOTHREAD;
|
||||
#endif
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEINPERSISTENTTHREAD_ = WT_EXECUTEINPERSISTENTTHREAD;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_TRANSFER_IMPERSONATION_ = WT_TRANSFER_IMPERSONATION;
|
||||
|
||||
#else // defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEDEFAULT_ = 0x00000000;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEINIOTHREAD_ = 0x00000001;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEINUITHREAD_ = 0x00000002;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEINWAITTHREAD_ = 0x00000004;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEONLYONCE_ = 0x00000008;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEINTIMERTHREAD_ = 0x00000020;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTELONGFUNCTION_ = 0x00000010;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEINPERSISTENTIOTHREAD_ = 0x00000040;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_EXECUTEINPERSISTENTTHREAD_ = 0x00000080;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ WT_TRANSFER_IMPERSONATION_ = 0x00000100;
|
||||
|
||||
#endif // defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
BOOST_FORCEINLINE BOOST_CONSTEXPR ULONG_ wt_set_max_threadpool_threads(ULONG_ flags, ULONG_ limit) BOOST_NOEXCEPT
|
||||
{
|
||||
// Note: We don't use WT_SET_MAX_THREADPOOL_THREADS here because the way it's defined
|
||||
// the function no longer meets C++11 constexpr requirements.
|
||||
return flags | (limit << 16);
|
||||
}
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ wt_execute_default = WT_EXECUTEDEFAULT_;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ wt_execute_in_io_thread = WT_EXECUTEINIOTHREAD_;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ wt_execute_in_ui_thread = WT_EXECUTEINUITHREAD_;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ wt_execute_in_wait_thread = WT_EXECUTEINWAITTHREAD_;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ wt_execute_only_once = WT_EXECUTEONLYONCE_;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ wt_execute_in_timer_thread = WT_EXECUTEINTIMERTHREAD_;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ wt_execute_long_function = WT_EXECUTELONGFUNCTION_;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ wt_execute_in_persistent_io_thread = WT_EXECUTEINPERSISTENTIOTHREAD_;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ wt_execute_in_persistent_thread = WT_EXECUTEINPERSISTENTTHREAD_;
|
||||
BOOST_CONSTEXPR_OR_CONST ULONG_ wt_transfer_impersonation = WT_TRANSFER_IMPERSONATION_;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN2K
|
||||
#endif // BOOST_WINAPI_THREAD_POOL_HPP_INCLUDED_
|
||||
113
boost/winapi/wait.hpp
Normal file
113
boost/winapi/wait.hpp
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
/*
|
||||
* Copyright 2010 Vicente J. Botet Escriba
|
||||
* Copyright 2015 Andrey Semashev
|
||||
* Copyright 2017 James E. King, III
|
||||
*
|
||||
* Distributed under the Boost Software License, Version 1.0.
|
||||
* See http://www.boost.org/LICENSE_1_0.txt
|
||||
*/
|
||||
|
||||
#ifndef BOOST_WINAPI_WAIT_HPP_INCLUDED_
|
||||
#define BOOST_WINAPI_WAIT_HPP_INCLUDED_
|
||||
|
||||
#include <boost/winapi/basic_types.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#if !defined( BOOST_USE_WINDOWS_H )
|
||||
extern "C" {
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
|
||||
WaitForSingleObjectEx(
|
||||
boost::winapi::HANDLE_ hHandle,
|
||||
boost::winapi::DWORD_ dwMilliseconds,
|
||||
boost::winapi::BOOL_ bAlertable);
|
||||
#endif
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
|
||||
SignalObjectAndWait(
|
||||
boost::winapi::HANDLE_ hObjectToSignal,
|
||||
boost::winapi::HANDLE_ hObjectToWaitOn,
|
||||
boost::winapi::DWORD_ dwMilliseconds,
|
||||
boost::winapi::BOOL_ bAlertable);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
|
||||
WaitForSingleObject(
|
||||
boost::winapi::HANDLE_ hHandle,
|
||||
boost::winapi::DWORD_ dwMilliseconds);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
|
||||
WaitForMultipleObjects(
|
||||
boost::winapi::DWORD_ nCount,
|
||||
boost::winapi::HANDLE_ const* lpHandles,
|
||||
boost::winapi::BOOL_ bWaitAll,
|
||||
boost::winapi::DWORD_ dwMilliseconds);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
|
||||
WaitForMultipleObjectsEx(
|
||||
boost::winapi::DWORD_ nCount,
|
||||
boost::winapi::HANDLE_ const* lpHandles,
|
||||
boost::winapi::BOOL_ bWaitAll,
|
||||
boost::winapi::DWORD_ dwMilliseconds,
|
||||
boost::winapi::BOOL_ bAlertable);
|
||||
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace winapi {
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
|
||||
using ::WaitForSingleObjectEx;
|
||||
#endif
|
||||
#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4
|
||||
using ::SignalObjectAndWait;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
|
||||
using ::WaitForMultipleObjects;
|
||||
using ::WaitForMultipleObjectsEx;
|
||||
using ::WaitForSingleObject;
|
||||
#endif
|
||||
|
||||
#if defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ INFINITE_ = INFINITE;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_ABANDONED_ = WAIT_ABANDONED;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_OBJECT_0_ = WAIT_OBJECT_0;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_TIMEOUT_ = WAIT_TIMEOUT;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_FAILED_ = WAIT_FAILED;
|
||||
|
||||
#else // defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ INFINITE_ = (DWORD_)0xFFFFFFFF;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_ABANDONED_ = 0x00000080L;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_OBJECT_0_ = 0x00000000L;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_TIMEOUT_ = 0x00000102L;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ WAIT_FAILED_ = (DWORD_)0xFFFFFFFF;
|
||||
|
||||
#endif // defined( BOOST_USE_WINDOWS_H )
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ infinite = INFINITE_;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ wait_abandoned = WAIT_ABANDONED_;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ wait_object_0 = WAIT_OBJECT_0_;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ wait_timeout = WAIT_TIMEOUT_;
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ wait_failed = WAIT_FAILED_;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST DWORD_ max_non_infinite_wait = (DWORD_)0xFFFFFFFE;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BOOST_WINAPI_WAIT_HPP_INCLUDED_
|
||||
Loading…
Add table
Add a link
Reference in a new issue