Fixed WinAPI compilation. Ported timed mutex to waitable timer. Windows time points are now aligned with FILETIME to reduce conversion overhead when used with waitable timers.

[SVN r86192]
This commit is contained in:
Andrey Semashev
2013-10-07 17:41:43 +00:00
parent 933b2c596b
commit 0f9b39df3f
3 changed files with 32 additions and 13 deletions

View File

@@ -101,7 +101,7 @@ extern "C" {
# ifdef _WIN64 # ifdef _WIN64
#if defined(__CYGWIN__) #if defined(__CYGWIN__)
typedef long INT_PTR_; typedef long INT_PTR_;
typedef unsigned long INT_PTR_; typedef unsigned long UINT_PTR_;
typedef long LONG_PTR_; typedef long LONG_PTR_;
typedef unsigned long ULONG_PTR_; typedef unsigned long ULONG_PTR_;
#else #else
@@ -112,7 +112,7 @@ extern "C" {
#endif #endif
# else # else
typedef int INT_PTR_; typedef int INT_PTR_;
typedef unsigned int INT_PTR_; typedef unsigned int UINT_PTR_;
typedef long LONG_PTR_; typedef long LONG_PTR_;
typedef unsigned long ULONG_PTR_; typedef unsigned long ULONG_PTR_;
# endif # endif

View File

@@ -27,10 +27,15 @@ namespace winapi
typedef ::NEARPROC NEARPROC_; typedef ::NEARPROC NEARPROC_;
typedef ::PROC PROC_; typedef ::PROC PROC_;
using ::LoadLibrary; # ifdef BOOST_NO_ANSI_APIS
using ::LoadLibraryW;
using ::GetModuleHandleW;
# else
using ::LoadLibraryA;
using ::GetModuleHandleA;
# endif
using ::FreeLibrary; using ::FreeLibrary;
using ::GetProcAddress; using ::GetProcAddress;
using ::GetModuleHandleA;
#else #else
extern "C" { extern "C" {
# ifdef _WIN64 # ifdef _WIN64
@@ -43,10 +48,26 @@ extern "C" {
typedef int (WINAPI *PROC_)(); typedef int (WINAPI *PROC_)();
# endif // _WIN64 # endif // _WIN64
# ifdef BOOST_NO_ANSI_APIS
__declspec(dllimport) HMODULE_ WINAPI __declspec(dllimport) HMODULE_ WINAPI
LoadLibrary( LoadLibraryW(
LPCTSTR_ lpFileName LPCWSTR_ lpFileName
); );
__declspec(dllimport) HMODULE_ WINAPI
GetModuleHandleW(
LPCWSTR_ lpFileName
);
# else
__declspec(dllimport) HMODULE_ WINAPI
LoadLibraryA(
LPCSTR_ lpFileName
);
__declspec(dllimport) HMODULE_ WINAPI
GetModuleHandleA(
LPCSTR_ lpFileName
);
# endif
__declspec(dllimport) BOOL_ WINAPI __declspec(dllimport) BOOL_ WINAPI
FreeLibrary( FreeLibrary(
HMODULE_ hModule HMODULE_ hModule
@@ -56,10 +77,6 @@ extern "C" {
HMODULE_ hModule, HMODULE_ hModule,
LPCSTR_ lpProcName LPCSTR_ lpProcName
); );
__declspec(dllimport) HMODULE_ WINAPI
GetModuleHandleA(
LPCSTR_ lpFileName
);
} }
#endif #endif
} }

View File

@@ -147,6 +147,8 @@ const DWORD_ wait_failed = (DWORD_)0xFFFFFFFF;
#endif // defined( BOOST_USE_WINDOWS_H ) #endif // defined( BOOST_USE_WINDOWS_H )
const DWORD_ max_non_infinite_wait = (DWORD_)0xFFFFFFFE;
BOOST_FORCEINLINE HANDLE_ create_anonymous_mutex(_SECURITY_ATTRIBUTES* lpAttributes, BOOL_ bInitialOwner) BOOST_FORCEINLINE HANDLE_ create_anonymous_mutex(_SECURITY_ATTRIBUTES* lpAttributes, BOOL_ bInitialOwner)
{ {
#ifdef BOOST_NO_ANSI_APIS #ifdef BOOST_NO_ANSI_APIS