#include <boost/winapi/basic_types.hpp>
#include <boost/winapi/detail/cast_ptr.hpp>
+#include <boost/winapi/detail/header.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
#pragma once
extern "C" {
#if !defined( BOOST_WINAPI_IS_MINGW )
+
+// Windows CE uses a different name for the structure
+#if defined (_WIN32_WCE)
+struct CRITICAL_SECTION;
+namespace boost {
+namespace winapi {
+namespace detail {
+ typedef CRITICAL_SECTION winsdk_critical_section;
+}
+}
+}
+#else
struct _RTL_CRITICAL_SECTION;
+namespace boost {
+namespace winapi {
+namespace detail {
+ typedef _RTL_CRITICAL_SECTION winsdk_critical_section;
+}
+}
+}
+#endif
+
+#else
+// MinGW uses a different name for the structure
+struct _CRITICAL_SECTION;
+
+namespace boost {
+namespace winapi {
+namespace detail {
+ typedef _CRITICAL_SECTION winapi_critical_section;
+}
+}
+}
+#endif
+
+#if !defined( BOOST_WINAPI_IS_MINGW )
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
-BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
-InitializeCriticalSection(::_RTL_CRITICAL_SECTION* lpCriticalSection);
+BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
+InitializeCriticalSection(boost::winapi::detail::winsdk_critical_section* lpCriticalSection);
#endif
-BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
-EnterCriticalSection(::_RTL_CRITICAL_SECTION* lpCriticalSection);
+BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
+EnterCriticalSection(boost::winapi::detail::winsdk_critical_section* lpCriticalSection);
-BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
-LeaveCriticalSection(::_RTL_CRITICAL_SECTION* lpCriticalSection);
+BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
+LeaveCriticalSection(boost::winapi::detail::winsdk_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
+BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
InitializeCriticalSectionAndSpinCount(
- ::_RTL_CRITICAL_SECTION* lpCriticalSection,
+ boost::winapi::detail::winsdk_critical_section* lpCriticalSection,
boost::winapi::DWORD_ dwSpinCount);
-BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
+BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
SetCriticalSectionSpinCount(
- ::_RTL_CRITICAL_SECTION* lpCriticalSection,
+ boost::winapi::detail::winsdk_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
+BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
InitializeCriticalSectionEx(
- ::_RTL_CRITICAL_SECTION* lpCriticalSection,
+ boost::winapi::detail::winsdk_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);
+BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
+TryEnterCriticalSection(boost::winapi::detail::winsdk_critical_section* lpCriticalSection);
#endif
-BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
-DeleteCriticalSection(::_RTL_CRITICAL_SECTION* lpCriticalSection);
+BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
+DeleteCriticalSection(boost::winapi::detail::winsdk_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_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
+InitializeCriticalSection(boost::winapi::detail::winapi_critical_section* lpCriticalSection);
-BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
-EnterCriticalSection(::_CRITICAL_SECTION* lpCriticalSection);
+BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
+EnterCriticalSection(boost::winapi::detail::winapi_critical_section* lpCriticalSection);
-BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
-LeaveCriticalSection(::_CRITICAL_SECTION* lpCriticalSection);
+BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
+LeaveCriticalSection(boost::winapi::detail::winapi_critical_section* lpCriticalSection);
#if BOOST_USE_WINAPI_VERSION >= 0x0403
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
+BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
InitializeCriticalSectionAndSpinCount(
- ::_CRITICAL_SECTION* lpCriticalSection,
+ boost::winapi::detail::winapi_critical_section* lpCriticalSection,
boost::winapi::DWORD_ dwSpinCount);
+BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
+SetCriticalSectionSpinCount(
+ boost::winapi::detail::winapi_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
+BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
InitializeCriticalSectionEx(
- ::_CRITICAL_SECTION* lpCriticalSection,
+ boost::winapi::detail::winapi_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);
+BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
+TryEnterCriticalSection(boost::winapi::detail::winapi_critical_section* lpCriticalSection);
#endif
-BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
-DeleteCriticalSection(::_CRITICAL_SECTION* lpCriticalSection);
+BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
+DeleteCriticalSection(boost::winapi::detail::winapi_critical_section* lpCriticalSection);
#endif // defined( BOOST_WINAPI_IS_MINGW )
} // extern "C"
namespace boost {
namespace winapi {
-struct _RTL_CRITICAL_SECTION_DEBUG;
#pragma pack(push, 8)
+#if !defined(_WIN32_WCE)
+
+struct _RTL_CRITICAL_SECTION_DEBUG;
+
typedef struct BOOST_MAY_ALIAS _RTL_CRITICAL_SECTION {
_RTL_CRITICAL_SECTION_DEBUG* DebugInfo;
LONG_ LockCount;
ULONG_PTR_ SpinCount;
} CRITICAL_SECTION_, *PCRITICAL_SECTION_;
+#else
+
+// Windows CE has different layout
+typedef struct BOOST_MAY_ALIAS CRITICAL_SECTION {
+ unsigned int LockCount;
+ HANDLE OwnerThread;
+ HANDLE hCrit;
+ DWORD needtrap;
+ DWORD dwContentions;
+} CRITICAL_SECTION_, *LPCRITICAL_SECTION_;
+
+#endif
+
#pragma pack(pop)
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
}
}
+#include <boost/winapi/detail/footer.hpp>
+
#endif // BOOST_WINAPI_CRITICAL_SECTION_HPP_INCLUDED_