early-access version 3088

This commit is contained in:
pineappleEA
2022-11-05 15:35:56 +01:00
parent 4e4fc25ce3
commit b601909c6d
35519 changed files with 5996896 additions and 860 deletions

View File

@@ -0,0 +1,139 @@
#
# Copyright Andrey Semashev 2015 - 2018.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
import testing ;
import modules ;
import path ;
import regex ;
import project ;
import configure ;
lib advapi32 ;
lib bcrypt ;
lib user32 ;
local here = [ modules.binding $(__name__) ] ;
project.push-current [ project.current ] ;
project.load [ path.join [ path.make $(here:D) ] config/has-bcrypt ] ;
project.pop-current ;
project
: requirements
# Disable warnings about using 'insecure' standard C functions
<toolset>msvc:<define>_SCL_SECURE_NO_WARNINGS
<toolset>msvc:<define>_SCL_SECURE_NO_DEPRECATE
<toolset>msvc:<define>_CRT_SECURE_NO_WARNINGS
<toolset>msvc:<define>_CRT_SECURE_NO_DEPRECATE
<toolset>intel-win:<define>_SCL_SECURE_NO_WARNINGS
<toolset>intel-win:<define>_SCL_SECURE_NO_DEPRECATE
<toolset>intel-win:<define>_CRT_SECURE_NO_WARNINGS
<toolset>intel-win:<define>_CRT_SECURE_NO_DEPRECATE
: default-build
# Testers typically don't specify threading environment and the library can be built and tested for single and multi. I'm more interested in multi though.
<threading>multi
# <link>static
;
# This rule makes sure the tests are run only on Windows
rule filter-target-os ( properties * )
{
local result ;
if ! ( <target-os>windows in $(properties) || <target-os>cygwin in $(properties) )
{
result = <build>no ;
}
return $(result) ;
}
# The rule tests if the Windows SDK supports BCrypt API and library
rule check-has-bcrypt ( properties * )
{
local result ;
local has_bcrypt = [ configure.builds /boost/winapi/test/has-bcrypt//has_bcrypt : $(properties) : windows-sdk-supports-bcrypt ] ;
if ! $(has_bcrypt)
{
result = <build>no ;
}
return $(result) ;
}
# This rule enumerates through all the sources and invokes
# the run rule for each source, the result is a list of all
# the run rules, which we can pass on to the test_suite rule:
rule test_all
{
local all_rules ;
local file ;
local headers_path = [ path.make $(BOOST_ROOT)/libs/winapi/include/boost/winapi ] ;
for file in [ path.glob-tree $(headers_path) : *.hpp : detail ]
{
local rel_file = [ path.relative-to [ path.parent $(headers_path) ] $(file) ] ;
# Note: The test name starts with '~' in order to group these tests in the test report table, preferably at the end.
# All '/' are replaced with '-' because apparently test scripts have a problem with test names containing slashes.
local test_name = [ regex.replace $(rel_file) "/" "-" ] ;
local decl_test_name = ~hdr-decl-$(test_name) ;
local use_winh_test_name = ~hdr-use-winh-$(test_name) ;
local pre_winh_test_name = ~hdr-pre-winh-$(test_name) ;
local post_winh_test_name = ~hdr-post-winh-$(test_name) ;
#ECHO $(rel_file) ;
all_rules += [ compile compile/decl_header.cpp : <conditional>@filter-target-os <define>"BOOST_WINAPI_TEST_HEADER=$(rel_file)" <dependency>$(file) : $(decl_test_name) ] ;
all_rules += [ compile compile/decl_header.cpp : <conditional>@filter-target-os <define>"BOOST_WINAPI_TEST_HEADER=$(rel_file)" <define>"BOOST_USE_WINDOWS_H" <dependency>$(file) : $(use_winh_test_name) ] ;
all_rules += [ compile compile/windows_h_pre.cpp : <conditional>@filter-target-os <define>"BOOST_WINAPI_TEST_HEADER=$(rel_file)" <dependency>$(file) : $(pre_winh_test_name) ] ;
all_rules += [ compile compile/windows_h_post.cpp : <conditional>@filter-target-os <define>"BOOST_WINAPI_TEST_HEADER=$(rel_file)" <dependency>$(file) : $(post_winh_test_name) ] ;
}
headers_path = [ path.make $(BOOST_ROOT)/libs/winapi/include/boost/detail ] ;
for file in [ path.glob $(headers_path) : *.hpp : detail ]
{
local rel_file = [ path.relative-to $(headers_path) $(file) ] ;
local test_name = [ regex.replace $(rel_file) "/" "-" ] ;
local decl_test_name = ~hdr-decl-$(test_name) ;
local use_winh_test_name = ~hdr-use-winh-$(test_name) ;
local pre_winh_test_name = ~hdr-pre-winh-$(test_name) ;
local post_winh_test_name = ~hdr-post-winh-$(test_name) ;
#ECHO $(rel_file) ;
all_rules += [ compile compile/decl_header.cpp : <conditional>@filter-target-os <define>"BOOST_WINAPI_TEST_HEADER=detail/$(rel_file)" <dependency>$(file) : $(decl_test_name) ] ;
all_rules += [ compile compile/decl_header.cpp : <conditional>@filter-target-os <define>"BOOST_WINAPI_TEST_HEADER=detail/$(rel_file)" <define>"BOOST_USE_WINDOWS_H" <dependency>$(file) : $(use_winh_test_name) ] ;
all_rules += [ compile compile/windows_h_pre.cpp : <conditional>@filter-target-os <define>"BOOST_WINAPI_TEST_HEADER=detail/$(rel_file)" <dependency>$(file) : $(pre_winh_test_name) ] ;
all_rules += [ compile compile/windows_h_post.cpp : <conditional>@filter-target-os <define>"BOOST_WINAPI_TEST_HEADER=detail/$(rel_file)" <dependency>$(file) : $(post_winh_test_name) ] ;
}
for file in [ glob run/*.cpp ]
{
local reqs = <conditional>@filter-target-os <define>"BOOST_WINAPI_DEFINE_VERSION_MACROS=1" ;
local test_name = [ path.basename $(file) ] ;
if $(test_name) = "winapi_info.cpp"
{
reqs += <test-info>always_show_run_output ;
}
else if $(test_name) = "bcrypt_abi.cpp"
{
reqs += <conditional>@check-has-bcrypt ;
reqs += <library>bcrypt ;
}
else if $(test_name) = "crypt_abi.cpp" || $(test_name) = "pipes_abi.cpp" || $(test_name) = "security_abi.cpp"
{
reqs += <library>advapi32 ;
}
else if $(test_name) = "show_window_abi.cpp"
{
reqs += <library>user32 ;
}
all_rules += [ run $(file) : : : $(reqs) ] ;
}
#ECHO All rules: $(all_rules) ;
return $(all_rules) ;
}
test-suite winapi : [ test_all ] ;

View File

@@ -0,0 +1,22 @@
/*
* Copyright Andrey Semashev 2015.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file decl_header.cpp
* \author Andrey Semashev
* \date 21.06.2015
*
* \brief This file contains a test boilerplate for checking that every public header is self-contained and does not have any missing #includes.
*/
#define BOOST_WINAPI_TEST_INCLUDE_HEADER() <boost/BOOST_WINAPI_TEST_HEADER>
#include BOOST_WINAPI_TEST_INCLUDE_HEADER()
int main(int, char*[])
{
return 0;
}

View File

@@ -0,0 +1,24 @@
/*
* Copyright Andrey Semashev 2015.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file windows_h_header.cpp
* \author Andrey Semashev
* \date 21.06.2015
*
* \brief This file contains a test boilerplate for checking that every public header does not conflict with native windows.h being post-included.
*/
#define BOOST_WINAPI_TEST_INCLUDE_HEADER() <boost/BOOST_WINAPI_TEST_HEADER>
#include BOOST_WINAPI_TEST_INCLUDE_HEADER()
#include <windows.h>
int main(int, char*[])
{
return 0;
}

View File

@@ -0,0 +1,24 @@
/*
* Copyright Andrey Semashev 2015.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file windows_h_header.cpp
* \author Andrey Semashev
* \date 21.06.2015
*
* \brief This file contains a test boilerplate for checking that every public header does not conflict with native windows.h pre-included.
*/
#include <windows.h>
#define BOOST_WINAPI_TEST_INCLUDE_HEADER() <boost/BOOST_WINAPI_TEST_HEADER>
#include BOOST_WINAPI_TEST_INCLUDE_HEADER()
int main(int, char*[])
{
return 0;
}

View File

@@ -0,0 +1,19 @@
#
# Copyright Andrey Semashev 2018.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
#
import project ;
lib bcrypt ;
project /boost/winapi/test/has-bcrypt
: source-location .
: requirements
<library>bcrypt
<pch>off
;
exe has_bcrypt : has_bcrypt.cpp ;

View File

@@ -0,0 +1,14 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
#include <windows.h>
#include <bcrypt.h>
int main(int, char*[])
{
return 0;
}

View File

@@ -0,0 +1,96 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file abi_test_tools.hpp
* \author Andrey Semashev
* \date 09.03.2018
*
* \brief This file contains a set of ABI testing tools
*/
#ifndef BOOST_WINAPI_TEST_RUN_ABI_TEST_TOOLS_HPP_INCLUDED_
#define BOOST_WINAPI_TEST_RUN_ABI_TEST_TOOLS_HPP_INCLUDED_
#include <boost/winapi/config.hpp>
#include <boost/config.hpp>
#include <boost/current_function.hpp>
#include <boost/core/is_same.hpp>
#include <boost/core/lightweight_test.hpp>
#include <boost/core/lightweight_test_trait.hpp>
#include <boost/preprocessor/seq/for_each.hpp>
#include <boost/preprocessor/tuple/elem.hpp>
#include <cstddef> // offsetof
//! The macro produces Boost.WinAPI equivalent for a Windows SDK constant or type name
#define BOOST_WINAPI_NAME(name)\
boost::winapi::name
//! The macro tests that the given constant has the same value in Boost.WinAPI and Windows SDK
#define BOOST_WINAPI_TEST_CONSTANT(name)\
BOOST_TEST_EQ(name, BOOST_WINAPI_NAME(name ## _))
//! The macro tests that the given type is the same in Boost.WinAPI and Windows SDK
#define BOOST_WINAPI_TEST_TYPE_SAME(name)\
BOOST_TEST_TRAIT_TRUE((boost::core::is_same< name, BOOST_WINAPI_NAME(name ## _) >))
//! The macro tests that the given type has the same size in Boost.WinAPI and Windows SDK
#define BOOST_WINAPI_TEST_TYPE_SIZE(name)\
BOOST_TEST_EQ(sizeof(name), sizeof(BOOST_WINAPI_NAME(name ## _)))
#define BOOST_WINAPI_TEST_STRUCT_FIELD(r, names, field)\
BOOST_TEST_EQ(sizeof(BOOST_PP_TUPLE_ELEM(2, 0, names)().field), sizeof(BOOST_PP_TUPLE_ELEM(2, 1, names)().field));\
BOOST_TEST_EQ(offsetof(BOOST_PP_TUPLE_ELEM(2, 0, names), field), offsetof(BOOST_PP_TUPLE_ELEM(2, 1, names), field));
//! The macro tests that the structure has the same size, and its fields have the same size and offsets in Boost.WinAPI and Windows SDK
#define BOOST_WINAPI_TEST_STRUCT(name, fields)\
BOOST_PP_SEQ_FOR_EACH(BOOST_WINAPI_TEST_STRUCT_FIELD, (name, BOOST_WINAPI_NAME(name ## _)), fields)\
BOOST_TEST_EQ(sizeof(name), sizeof(BOOST_WINAPI_NAME(name ## _)))
#if defined(BOOST_MSVC)
#pragma warning(push, 3)
// conditional expression is constant
#pragma warning(disable: 4127)
#endif
template< typename Windows_SDK_Signature, typename BoostWinAPI_Signature >
inline void test_equal_signatures(Windows_SDK_Signature*, BoostWinAPI_Signature*, const char* test_name, const char* file, int line)
{
// pass BOOST_CURRENT_FUNCTION here to include signature types in the error message
boost::detail::test_impl(test_name, file, line, BOOST_CURRENT_FUNCTION,
boost::core::is_same< Windows_SDK_Signature, BoostWinAPI_Signature >::value);
}
#if defined(BOOST_MSVC)
#pragma warning(pop)
#endif
/*!
* \brief The macro tests that the given function signature is the same in Boost.WinAPI and Windows SDK
*
* If the signatures don't match, the test may fail to compile instead of failing at runtime. Depending on the compiler,
* the error message may say that either there are multiple different declarations of an extern "C" function, or that
* \c test_equal_signatures cannot be instantiated because of an unresolved overloaded function. This is because we currently
* have forward declarations of Windows functions in the global namespace, so technically the declaration from Boost.WinAPI
* and from Windows SDK are either two declarations of the same function (if they match) or declarations of two overloaded
* functions (which is an error because both of them are extern "C"). Anyway, the test will fail if there's an error and
* will pass if everything's fine, which is what we want.
*
* \note Do not use this macro to compare function signatures where we use our own structures binary-compatible with Windows SDK.
* Such functions are defined as inline wrappers in Boost.WinAPI headers and the wrappers will obviously not compare equal
* to the functions in Windows SDK. Currently, there's no way to test those function declarations because Boost.WinAPI
* declares Windows functions in the global namespace. They are implicitly tested by the compiler though, which should fail
* to compile if the declarations don't match.
*/
#if !defined(BOOST_NO_CXX11_DECLTYPE)
#define BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(name)\
test_equal_signatures((decltype(&name))0, (decltype(&BOOST_WINAPI_NAME(name)))0, "BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(" #name ")", __FILE__, __LINE__)
#else
#define BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(name)\
test_equal_signatures(&name, &BOOST_WINAPI_NAME(name), "BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(" #name ")", __FILE__, __LINE__)
#endif
#endif // BOOST_WINAPI_TEST_RUN_ABI_TEST_TOOLS_HPP_INCLUDED_

View File

@@ -0,0 +1,48 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file access_rights_abi.cpp
* \author Andrey Semashev
* \date 09.03.2018
*
* \brief This file contains ABI test for access_rights.hpp
*/
#include <boost/winapi/access_rights.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_CONSTANT(DELETE);
BOOST_WINAPI_TEST_CONSTANT(READ_CONTROL);
BOOST_WINAPI_TEST_CONSTANT(WRITE_DAC);
BOOST_WINAPI_TEST_CONSTANT(WRITE_OWNER);
BOOST_WINAPI_TEST_CONSTANT(SYNCHRONIZE);
BOOST_WINAPI_TEST_CONSTANT(STANDARD_RIGHTS_ALL);
BOOST_WINAPI_TEST_CONSTANT(STANDARD_RIGHTS_EXECUTE);
BOOST_WINAPI_TEST_CONSTANT(STANDARD_RIGHTS_READ);
BOOST_WINAPI_TEST_CONSTANT(STANDARD_RIGHTS_REQUIRED);
BOOST_WINAPI_TEST_CONSTANT(STANDARD_RIGHTS_WRITE);
BOOST_WINAPI_TEST_CONSTANT(SPECIFIC_RIGHTS_ALL);
BOOST_WINAPI_TEST_CONSTANT(ACCESS_SYSTEM_SECURITY);
BOOST_WINAPI_TEST_CONSTANT(MAXIMUM_ALLOWED);
BOOST_WINAPI_TEST_CONSTANT(GENERIC_ALL);
BOOST_WINAPI_TEST_CONSTANT(GENERIC_EXECUTE);
BOOST_WINAPI_TEST_CONSTANT(GENERIC_WRITE);
BOOST_WINAPI_TEST_CONSTANT(GENERIC_READ);
BOOST_WINAPI_TEST_TYPE_SAME(ACCESS_MASK);
BOOST_WINAPI_TEST_TYPE_SAME(PACCESS_MASK);
return boost::report_errors();
}

View File

@@ -0,0 +1,30 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file apc_abi.cpp
* \author Andrey Semashev
* \date 09.03.2018
*
* \brief This file contains ABI test for apc.hpp
*/
#include <boost/winapi/apc.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4
BOOST_WINAPI_TEST_TYPE_SAME(PAPCFUNC);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(QueueUserAPC);
#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
return boost::report_errors();
}

View File

@@ -0,0 +1,92 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file basic_types_abi.cpp
* \author Andrey Semashev
* \date 09.03.2018
*
* \brief This file contains ABI test for basic WinAPI types
*/
#include <boost/winapi/basic_types.hpp>
#include <windows.h>
#include <boost/predef/platform/windows_uwp.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_TYPE_SAME(BOOL);
BOOST_WINAPI_TEST_TYPE_SAME(PBOOL);
BOOST_WINAPI_TEST_TYPE_SAME(LPBOOL);
BOOST_WINAPI_TEST_TYPE_SAME(BOOLEAN);
BOOST_WINAPI_TEST_TYPE_SAME(PBOOLEAN);
BOOST_WINAPI_TEST_TYPE_SAME(BYTE);
BOOST_WINAPI_TEST_TYPE_SAME(PBYTE);
BOOST_WINAPI_TEST_TYPE_SAME(LPBYTE);
BOOST_WINAPI_TEST_TYPE_SAME(UCHAR);
BOOST_WINAPI_TEST_TYPE_SAME(PUCHAR);
BOOST_WINAPI_TEST_TYPE_SAME(WORD);
BOOST_WINAPI_TEST_TYPE_SAME(PWORD);
BOOST_WINAPI_TEST_TYPE_SAME(LPWORD);
BOOST_WINAPI_TEST_TYPE_SAME(DWORD);
BOOST_WINAPI_TEST_TYPE_SAME(PDWORD);
BOOST_WINAPI_TEST_TYPE_SAME(LPDWORD);
BOOST_WINAPI_TEST_TYPE_SAME(HANDLE);
BOOST_WINAPI_TEST_TYPE_SAME(PHANDLE);
BOOST_WINAPI_TEST_TYPE_SAME(SHORT);
BOOST_WINAPI_TEST_TYPE_SAME(PSHORT);
BOOST_WINAPI_TEST_TYPE_SAME(USHORT);
BOOST_WINAPI_TEST_TYPE_SAME(PUSHORT);
BOOST_WINAPI_TEST_TYPE_SAME(INT);
BOOST_WINAPI_TEST_TYPE_SAME(PINT);
BOOST_WINAPI_TEST_TYPE_SAME(LPINT);
BOOST_WINAPI_TEST_TYPE_SAME(UINT);
BOOST_WINAPI_TEST_TYPE_SAME(PUINT);
BOOST_WINAPI_TEST_TYPE_SAME(LONG);
BOOST_WINAPI_TEST_TYPE_SAME(PLONG);
BOOST_WINAPI_TEST_TYPE_SAME(LPLONG);
BOOST_WINAPI_TEST_TYPE_SAME(ULONG);
BOOST_WINAPI_TEST_TYPE_SAME(PULONG);
BOOST_WINAPI_TEST_TYPE_SAME(LONGLONG);
BOOST_WINAPI_TEST_TYPE_SAME(ULONGLONG);
BOOST_WINAPI_TEST_TYPE_SAME(LONGLONG);
BOOST_WINAPI_TEST_TYPE_SAME(ULONGLONG);
BOOST_WINAPI_TEST_TYPE_SAME(INT_PTR);
BOOST_WINAPI_TEST_TYPE_SAME(UINT_PTR);
BOOST_WINAPI_TEST_TYPE_SAME(LONG_PTR);
BOOST_WINAPI_TEST_TYPE_SAME(ULONG_PTR);
BOOST_WINAPI_TEST_TYPE_SAME(DWORD_PTR);
BOOST_WINAPI_TEST_TYPE_SAME(PDWORD_PTR);
BOOST_WINAPI_TEST_TYPE_SAME(SIZE_T);
BOOST_WINAPI_TEST_TYPE_SAME(PSIZE_T);
BOOST_WINAPI_TEST_TYPE_SAME(SSIZE_T);
BOOST_WINAPI_TEST_TYPE_SAME(PSSIZE_T);
BOOST_WINAPI_TEST_TYPE_SAME(PVOID);
BOOST_WINAPI_TEST_TYPE_SAME(LPVOID);
BOOST_WINAPI_TEST_TYPE_SAME(LPCVOID);
BOOST_WINAPI_TEST_TYPE_SAME(CHAR);
BOOST_WINAPI_TEST_TYPE_SAME(LPSTR);
BOOST_WINAPI_TEST_TYPE_SAME(LPCSTR);
BOOST_WINAPI_TEST_TYPE_SAME(WCHAR);
BOOST_WINAPI_TEST_TYPE_SAME(LPWSTR);
BOOST_WINAPI_TEST_TYPE_SAME(LPCWSTR);
BOOST_WINAPI_TEST_TYPE_SAME(VOID);
#if BOOST_PLAT_WINDOWS_SDK_VERSION >= BOOST_WINAPI_WINDOWS_SDK_6_0 && BOOST_WINAPI_PARTITION_APP_SYSTEM
// Windows SDK that comes with MSVC-7.1 and 8 does not define NTSTATUS. Up until Windows SDK 10 NTSTATUS is only defined in Desktop API partition.
BOOST_WINAPI_TEST_TYPE_SAME(NTSTATUS);
BOOST_WINAPI_TEST_TYPE_SAME(PNTSTATUS);
#endif
BOOST_WINAPI_TEST_TYPE_SAME(HMODULE);
BOOST_WINAPI_TEST_STRUCT(LARGE_INTEGER, (LowPart)(HighPart)(u.LowPart)(u.HighPart)(QuadPart));
BOOST_WINAPI_TEST_STRUCT(SECURITY_ATTRIBUTES, (nLength)(lpSecurityDescriptor)(bInheritHandle));
return boost::report_errors();
}

View File

@@ -0,0 +1,41 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file bcrypt_abi.cpp
* \author Andrey Semashev
* \date 09.03.2018
*
* \brief This file contains ABI test for bcrypt.hpp
*/
#include <boost/winapi/bcrypt.hpp>
#include <windows.h>
#include <wchar.h>
#include <boost/predef/platform/windows_uwp.h>
#if (BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6)
#include <bcrypt.h>
#endif
#include "abi_test_tools.hpp"
int main()
{
#if (BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6)
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_TYPE_SAME(BCRYPT_ALG_HANDLE);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(BCryptCloseAlgorithmProvider);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(BCryptGenRandom);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(BCryptOpenAlgorithmProvider);
BOOST_TEST(wcscmp(BCRYPT_RNG_ALGORITHM, boost::winapi::BCRYPT_RNG_ALGORITHM_) == 0);
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
#endif // (BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6)
return boost::report_errors();
}

View File

@@ -0,0 +1,50 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file character_code_conversion_abi.cpp
* \author Andrey Semashev
* \date 09.03.2018
*
* \brief This file contains ABI test for character_code_conversion.hpp
*/
#include <boost/winapi/character_code_conversion.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_CONSTANT(CP_ACP);
BOOST_WINAPI_TEST_CONSTANT(CP_OEMCP);
BOOST_WINAPI_TEST_CONSTANT(CP_MACCP);
BOOST_WINAPI_TEST_CONSTANT(CP_THREAD_ACP);
BOOST_WINAPI_TEST_CONSTANT(CP_SYMBOL);
BOOST_WINAPI_TEST_CONSTANT(CP_UTF7);
BOOST_WINAPI_TEST_CONSTANT(CP_UTF8);
BOOST_WINAPI_TEST_CONSTANT(MB_PRECOMPOSED);
BOOST_WINAPI_TEST_CONSTANT(MB_COMPOSITE);
BOOST_WINAPI_TEST_CONSTANT(MB_USEGLYPHCHARS);
BOOST_WINAPI_TEST_CONSTANT(MB_ERR_INVALID_CHARS);
BOOST_WINAPI_TEST_CONSTANT(WC_COMPOSITECHECK);
BOOST_WINAPI_TEST_CONSTANT(WC_DISCARDNS);
BOOST_WINAPI_TEST_CONSTANT(WC_SEPCHARS);
BOOST_WINAPI_TEST_CONSTANT(WC_DEFAULTCHAR);
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN2K
BOOST_WINAPI_TEST_CONSTANT(WC_NO_BEST_FIT_CHARS);
#endif
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
BOOST_WINAPI_TEST_CONSTANT(WC_ERR_INVALID_CHARS);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(MultiByteToWideChar);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(WideCharToMultiByte);
return boost::report_errors();
}

View File

@@ -0,0 +1,30 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file condition_variable_abi.cpp
* \author Andrey Semashev
* \date 09.03.2018
*
* \brief This file contains ABI test for condition_variable.hpp
*/
#include <boost/winapi/condition_variable.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
BOOST_WINAPI_TEST_CONSTANT(CONDITION_VARIABLE_LOCKMODE_SHARED);
BOOST_WINAPI_TEST_TYPE_SIZE(CONDITION_VARIABLE);
#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
return boost::report_errors();
}

View File

@@ -0,0 +1,24 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file critical_section_abi.cpp
* \author Andrey Semashev
* \date 09.03.2018
*
* \brief This file contains ABI test for critical_section.hpp
*/
#include <boost/winapi/critical_section.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_STRUCT(CRITICAL_SECTION, (DebugInfo)(LockCount)(RecursionCount)(OwningThread)(LockSemaphore)(SpinCount));
return boost::report_errors();
}

View File

@@ -0,0 +1,47 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file crypt_abi.cpp
* \author Andrey Semashev
* \date 09.03.2018
*
* \brief This file contains ABI test for crypt.hpp
*/
#include <boost/winapi/crypt.hpp>
#include <windows.h>
#include <wincrypt.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_TYPE_SAME(HCRYPTPROV);
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_CONSTANT(PROV_RSA_FULL);
BOOST_WINAPI_TEST_CONSTANT(CRYPT_VERIFYCONTEXT);
BOOST_WINAPI_TEST_CONSTANT(CRYPT_NEWKEYSET);
BOOST_WINAPI_TEST_CONSTANT(CRYPT_DELETEKEYSET);
BOOST_WINAPI_TEST_CONSTANT(CRYPT_MACHINE_KEYSET);
BOOST_WINAPI_TEST_CONSTANT(CRYPT_SILENT);
#endif
#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
#if !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(CryptEnumProvidersA);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(CryptAcquireContextA);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(CryptEnumProvidersW);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(CryptAcquireContextW);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(CryptGenRandom);
#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
return boost::report_errors();
}

View File

@@ -0,0 +1,51 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file dbghelp_abi.cpp
* \author Andrey Semashev
* \date 09.03.2018
*
* \brief This file contains ABI test for dbghelp.hpp
*/
#include <boost/winapi/dbghelp.hpp>
#include <windows.h>
#if !defined(BOOST_WINAPI_IS_MINGW)
#include <dbghelp.h>
#else
#include <imagehlp.h>
#endif
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_DESKTOP
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_COMPLETE);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_NO_LEADING_UNDERSCORES);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_NO_MS_KEYWORDS);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_NO_FUNCTION_RETURNS);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_NO_ALLOCATION_MODEL);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_NO_ALLOCATION_LANGUAGE);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_NO_MS_THISTYPE);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_NO_CV_THISTYPE);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_NO_THISTYPE);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_NO_ACCESS_SPECIFIERS);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_NO_THROW_SIGNATURES);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_NO_MEMBER_TYPE);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_NO_RETURN_UDT_MODEL);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_32_BIT_DECODE);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_NAME_ONLY);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_NO_ARGUMENTS);
BOOST_WINAPI_TEST_CONSTANT(UNDNAME_NO_SPECIAL_SYMS);
BOOST_WINAPI_TEST_STRUCT(API_VERSION, (MajorVersion)(MinorVersion)(Revision));
#endif // BOOST_WINAPI_PARTITION_DESKTOP
return boost::report_errors();
}

View File

@@ -0,0 +1,29 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file debugapi_abi.cpp
* \author Andrey Semashev
* \date 09.03.2018
*
* \brief This file contains ABI test for debugapi.hpp
*/
#include <boost/winapi/debugapi.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if (BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(IsDebuggerPresent);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(OutputDebugStringA);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(OutputDebugStringW);
return boost::report_errors();
}

View File

@@ -0,0 +1,33 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file directory_management_abi.cpp
* \author Andrey Semashev
* \date 09.03.2018
*
* \brief This file contains ABI test for directory_management.hpp
*/
#include <boost/winapi/directory_management.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if !defined( BOOST_NO_ANSI_APIS )
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetTempPathA);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(RemoveDirectoryA);
#endif
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetTempPathW);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(RemoveDirectoryW);
return boost::report_errors();
}

View File

@@ -0,0 +1,62 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file dll_abi.cpp
* \author Andrey Semashev
* \date 09.03.2018
*
* \brief This file contains ABI test for dll.hpp
*/
#include <boost/winapi/dll.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
BOOST_WINAPI_TEST_TYPE_SAME(FARPROC);
BOOST_WINAPI_TEST_TYPE_SAME(NEARPROC);
BOOST_WINAPI_TEST_TYPE_SAME(PROC);
BOOST_WINAPI_TEST_CONSTANT(DONT_RESOLVE_DLL_REFERENCES);
BOOST_WINAPI_TEST_CONSTANT(LOAD_WITH_ALTERED_SEARCH_PATH);
#if defined(LOAD_IGNORE_CODE_AUTHZ_LEVEL)
// This one is not defined by MinGW
BOOST_WINAPI_TEST_CONSTANT(LOAD_IGNORE_CODE_AUTHZ_LEVEL);
#endif
#if !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(LoadLibraryA);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(LoadLibraryExA);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetModuleHandleA);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetModuleFileNameA);
#endif // !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(LoadLibraryW);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(LoadLibraryExW);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetModuleHandleW);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetModuleFileNameW);
#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(FreeLibrary);
#endif
#if !defined(UNDER_CE)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetProcAddress);
#else
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetProcAddressA);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetProcAddressW);
#endif
BOOST_WINAPI_TEST_STRUCT(MEMORY_BASIC_INFORMATION, (BaseAddress)(AllocationBase)(AllocationProtect)(RegionSize)(State)(Protect)(Type));
#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
return boost::report_errors();
}

View File

@@ -0,0 +1,40 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file environment_abi.cpp
* \author Andrey Semashev
* \date 09.03.2018
*
* \brief This file contains ABI test for environment.hpp
*/
#include <boost/winapi/environment.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
#undef GetEnvironmentStrings
int main()
{
#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
#if !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetEnvironmentStrings);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(FreeEnvironmentStringsA);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetEnvironmentVariableA);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(SetEnvironmentVariableA);
#endif // !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetEnvironmentStringsW);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(FreeEnvironmentStringsW);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetEnvironmentVariableW);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(SetEnvironmentVariableW);
#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
return boost::report_errors();
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,55 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file error_handling_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for error_handling.hpp
*/
#include <boost/winapi/error_handling.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_CONSTANT(FORMAT_MESSAGE_ALLOCATE_BUFFER);
#endif
BOOST_WINAPI_TEST_CONSTANT(FORMAT_MESSAGE_IGNORE_INSERTS);
BOOST_WINAPI_TEST_CONSTANT(FORMAT_MESSAGE_FROM_STRING);
BOOST_WINAPI_TEST_CONSTANT(FORMAT_MESSAGE_FROM_HMODULE);
BOOST_WINAPI_TEST_CONSTANT(FORMAT_MESSAGE_FROM_SYSTEM);
BOOST_WINAPI_TEST_CONSTANT(FORMAT_MESSAGE_ARGUMENT_ARRAY);
BOOST_WINAPI_TEST_CONSTANT(FORMAT_MESSAGE_MAX_WIDTH_MASK);
BOOST_WINAPI_TEST_CONSTANT(LANG_NEUTRAL);
BOOST_WINAPI_TEST_CONSTANT(LANG_INVARIANT);
BOOST_WINAPI_TEST_CONSTANT(SUBLANG_DEFAULT);
#if BOOST_WINAPI_PARTITION_DESKTOP
BOOST_WINAPI_TEST_CONSTANT(SEM_FAILCRITICALERRORS);
BOOST_WINAPI_TEST_CONSTANT(SEM_NOGPFAULTERRORBOX);
BOOST_WINAPI_TEST_CONSTANT(SEM_NOALIGNMENTFAULTEXCEPT);
BOOST_WINAPI_TEST_CONSTANT(SEM_NOOPENFILEERRORBOX);
#endif
BOOST_TEST_EQ(MAKELANGID(1, 2), boost::winapi::MAKELANGID_(1, 2));
#if !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(FormatMessageA);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(FormatMessageW);
#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(SetErrorMode);
#endif
return boost::report_errors();
}

View File

@@ -0,0 +1,36 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file event_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for event.hpp
*/
#include <boost/winapi/event.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_CONSTANT(EVENT_ALL_ACCESS);
BOOST_WINAPI_TEST_CONSTANT(EVENT_MODIFY_STATE);
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
BOOST_WINAPI_TEST_CONSTANT(CREATE_EVENT_INITIAL_SET);
BOOST_WINAPI_TEST_CONSTANT(CREATE_EVENT_MANUAL_RESET);
#endif
#if !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(OpenEventA);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(OpenEventW);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(SetEvent);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(ResetEvent);
return boost::report_errors();
}

View File

@@ -0,0 +1,93 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file file_management_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for file_management.hpp
*/
#include <boost/winapi/file_management.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_CONSTANT(INVALID_FILE_SIZE);
BOOST_WINAPI_TEST_CONSTANT(INVALID_SET_FILE_POINTER);
BOOST_WINAPI_TEST_CONSTANT(INVALID_FILE_ATTRIBUTES);
BOOST_WINAPI_TEST_CONSTANT(FILE_ATTRIBUTE_READONLY);
BOOST_WINAPI_TEST_CONSTANT(FILE_ATTRIBUTE_HIDDEN);
BOOST_WINAPI_TEST_CONSTANT(FILE_ATTRIBUTE_SYSTEM);
BOOST_WINAPI_TEST_CONSTANT(FILE_ATTRIBUTE_DIRECTORY);
BOOST_WINAPI_TEST_CONSTANT(FILE_ATTRIBUTE_ARCHIVE);
BOOST_WINAPI_TEST_CONSTANT(FILE_ATTRIBUTE_DEVICE);
BOOST_WINAPI_TEST_CONSTANT(FILE_ATTRIBUTE_NORMAL);
BOOST_WINAPI_TEST_CONSTANT(FILE_ATTRIBUTE_TEMPORARY);
BOOST_WINAPI_TEST_CONSTANT(FILE_ATTRIBUTE_SPARSE_FILE);
BOOST_WINAPI_TEST_CONSTANT(FILE_ATTRIBUTE_REPARSE_POINT);
BOOST_WINAPI_TEST_CONSTANT(FILE_ATTRIBUTE_COMPRESSED);
BOOST_WINAPI_TEST_CONSTANT(FILE_ATTRIBUTE_OFFLINE);
BOOST_WINAPI_TEST_CONSTANT(FILE_ATTRIBUTE_NOT_CONTENT_INDEXED);
BOOST_WINAPI_TEST_CONSTANT(FILE_ATTRIBUTE_ENCRYPTED);
BOOST_WINAPI_TEST_CONSTANT(CREATE_NEW);
BOOST_WINAPI_TEST_CONSTANT(CREATE_ALWAYS);
BOOST_WINAPI_TEST_CONSTANT(OPEN_EXISTING);
BOOST_WINAPI_TEST_CONSTANT(OPEN_ALWAYS);
BOOST_WINAPI_TEST_CONSTANT(TRUNCATE_EXISTING);
BOOST_WINAPI_TEST_CONSTANT(FILE_SHARE_READ);
BOOST_WINAPI_TEST_CONSTANT(FILE_SHARE_WRITE);
BOOST_WINAPI_TEST_CONSTANT(FILE_SHARE_DELETE);
BOOST_WINAPI_TEST_CONSTANT(FILE_BEGIN);
BOOST_WINAPI_TEST_CONSTANT(FILE_CURRENT);
BOOST_WINAPI_TEST_CONSTANT(FILE_END);
#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
#if !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_STRUCT(WIN32_FIND_DATAA, (dwFileAttributes)(ftCreationTime)(ftLastAccessTime)(ftLastWriteTime)(nFileSizeHigh)(nFileSizeLow)(cFileName)(cAlternateFileName));
#endif
BOOST_WINAPI_TEST_STRUCT(WIN32_FIND_DATAW, (dwFileAttributes)(ftCreationTime)(ftLastAccessTime)(ftLastWriteTime)(nFileSizeHigh)(nFileSizeLow)(cFileName)(cAlternateFileName));
BOOST_WINAPI_TEST_STRUCT(BY_HANDLE_FILE_INFORMATION, (dwFileAttributes)(ftCreationTime)(ftLastAccessTime)(ftLastWriteTime)(dwVolumeSerialNumber)(nFileSizeHigh)(nFileSizeLow)(nNumberOfLinks)(nFileIndexHigh)(nFileIndexLow));
#if !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(AreFileApisANSI);
#endif
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(SetFileValidData);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(LockFile);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(UnlockFile);
#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
#if !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(DeleteFileA);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(MoveFileExA);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(DeleteFileW);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(MoveFileExW);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(FindClose);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(SetEndOfFile);
#endif // BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
#if !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetFileAttributesA);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetFileAttributesW);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(SetFilePointer);
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
return boost::report_errors();
}

View File

@@ -0,0 +1,57 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file file_mapping_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for file_mapping.hpp
*/
#include <boost/winapi/file_mapping.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_CONSTANT(SEC_FILE);
BOOST_WINAPI_TEST_CONSTANT(SEC_IMAGE);
BOOST_WINAPI_TEST_CONSTANT(SEC_RESERVE);
BOOST_WINAPI_TEST_CONSTANT(SEC_COMMIT);
BOOST_WINAPI_TEST_CONSTANT(SEC_NOCACHE);
BOOST_WINAPI_TEST_CONSTANT(SECTION_QUERY);
BOOST_WINAPI_TEST_CONSTANT(SECTION_MAP_WRITE);
BOOST_WINAPI_TEST_CONSTANT(SECTION_MAP_READ);
BOOST_WINAPI_TEST_CONSTANT(SECTION_MAP_EXECUTE);
BOOST_WINAPI_TEST_CONSTANT(SECTION_EXTEND_SIZE);
BOOST_WINAPI_TEST_CONSTANT(SECTION_ALL_ACCESS);
BOOST_WINAPI_TEST_CONSTANT(FILE_MAP_COPY);
BOOST_WINAPI_TEST_CONSTANT(FILE_MAP_WRITE);
BOOST_WINAPI_TEST_CONSTANT(FILE_MAP_READ);
BOOST_WINAPI_TEST_CONSTANT(FILE_MAP_ALL_ACCESS);
#if BOOST_WINAPI_PARTITION_DESKTOP
#if !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(OpenFileMappingA);
#endif
#endif // BOOST_WINAPI_PARTITION_DESKTOP
#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(MapViewOfFile);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(MapViewOfFileEx);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(OpenFileMappingW);
#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(FlushViewOfFile);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(UnmapViewOfFile);
#endif // BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
return boost::report_errors();
}

View File

@@ -0,0 +1,24 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file get_current_process_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for get_current_process.hpp
*/
#include <boost/winapi/get_current_process.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetCurrentProcess);
return boost::report_errors();
}

View File

@@ -0,0 +1,24 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file get_current_process_id_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for get_current_process_id.hpp
*/
#include <boost/winapi/get_current_process_id.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetCurrentProcessId);
return boost::report_errors();
}

View File

@@ -0,0 +1,24 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file get_current_thread_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for get_current_thread.hpp
*/
#include <boost/winapi/get_current_thread.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetCurrentThread);
return boost::report_errors();
}

View File

@@ -0,0 +1,24 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file get_current_thread_id_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for get_current_thread_id.hpp
*/
#include <boost/winapi/get_current_thread_id.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetCurrentThreadId);
return boost::report_errors();
}

View File

@@ -0,0 +1,24 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file get_last_error_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for get_last_error.hpp
*/
#include <boost/winapi/get_last_error.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetLastError);
return boost::report_errors();
}

View File

@@ -0,0 +1,29 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file get_system_directory_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for get_system_directory.hpp
*/
#include <boost/winapi/get_system_directory.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_DESKTOP
#if !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetSystemDirectoryA);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetSystemDirectoryW);
#endif // BOOST_WINAPI_PARTITION_DESKTOP
return boost::report_errors();
}

View File

@@ -0,0 +1,30 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file handle_info_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for handle_info.hpp
*/
#include <boost/winapi/handle_info.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_DESKTOP
BOOST_WINAPI_TEST_CONSTANT(HANDLE_FLAG_INHERIT);
BOOST_WINAPI_TEST_CONSTANT(HANDLE_FLAG_PROTECT_FROM_CLOSE);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetHandleInformation);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(SetHandleInformation);
#endif // BOOST_WINAPI_PARTITION_DESKTOP
return boost::report_errors();
}

View File

@@ -0,0 +1,33 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file handles_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for handles.hpp
*/
#include <boost/winapi/handles.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_CONSTANT(DUPLICATE_CLOSE_SOURCE);
BOOST_WINAPI_TEST_CONSTANT(DUPLICATE_SAME_ACCESS);
BOOST_WINAPI_TEST_CONSTANT(INVALID_HANDLE_VALUE);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(CloseHandle);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(DuplicateHandle);
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN10
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(CompareObjectHandles);
#endif
return boost::report_errors();
}

View File

@@ -0,0 +1,36 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file heap_memory_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for heap_memory.hpp
*/
#include <boost/winapi/heap_memory.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetProcessHeaps);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetProcessHeap);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(HeapAlloc);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(HeapFree);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(HeapReAlloc);
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(HeapCreate);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(HeapDestroy);
#endif
return boost::report_errors();
}

View File

@@ -0,0 +1,32 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file init_once_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for init_once.hpp
*/
#include <boost/winapi/init_once.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
BOOST_WINAPI_TEST_TYPE_SIZE(INIT_ONCE);
BOOST_WINAPI_TEST_TYPE_SIZE(PINIT_ONCE_FN); // cannot be compared is_same because has INIT_ONCE in arguments
BOOST_WINAPI_TEST_CONSTANT(INIT_ONCE_ASYNC);
BOOST_WINAPI_TEST_CONSTANT(INIT_ONCE_CHECK_ONLY);
BOOST_WINAPI_TEST_CONSTANT(INIT_ONCE_INIT_FAILED);
BOOST_WINAPI_TEST_CONSTANT(INIT_ONCE_CTX_RESERVED_BITS);
#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
return boost::report_errors();
}

View File

@@ -0,0 +1,60 @@
/*
* Copyright Andrey Semashev 2019.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file interlocked.cpp
* \author Andrey Semashev
* \date 10.07.2019
*
* \brief This file contains test for interlocked.hpp
*/
#include <boost/detail/interlocked.hpp>
#include <windows.h> // include to test there are no conflicts with Windows SDK
#include <boost/cstdint.hpp>
#include <boost/core/lightweight_test.hpp>
void test_int32()
{
boost::int32_t n = 0, r = 0;
r = BOOST_INTERLOCKED_INCREMENT(&n);
BOOST_TEST_EQ(n, 1);
BOOST_TEST_EQ(r, 1);
r = BOOST_INTERLOCKED_DECREMENT(&n);
BOOST_TEST_EQ(n, 0);
BOOST_TEST_EQ(r, 0);
r = BOOST_INTERLOCKED_COMPARE_EXCHANGE(&n, 2, 0);
BOOST_TEST_EQ(n, 2);
BOOST_TEST_EQ(r, 0);
r = BOOST_INTERLOCKED_EXCHANGE(&n, 3);
BOOST_TEST_EQ(n, 3);
BOOST_TEST_EQ(r, 2);
r = BOOST_INTERLOCKED_EXCHANGE_ADD(&n, 10);
BOOST_TEST_EQ(n, 13);
BOOST_TEST_EQ(r, 3);
}
void test_pointer()
{
void* p = 0;
void* q = 0;
q = BOOST_INTERLOCKED_COMPARE_EXCHANGE_POINTER(&p, (void*)&q, (void*)0);
BOOST_TEST_EQ(p, (void*)&q);
BOOST_TEST_EQ(q, (void*)0);
q = BOOST_INTERLOCKED_EXCHANGE_POINTER(&p, (void*)0);
BOOST_TEST_EQ(p, (void*)0);
BOOST_TEST_EQ(q, (void*)&q);
}
int main()
{
test_int32();
test_pointer();
return boost::report_errors();
}

View File

@@ -0,0 +1,29 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file limits_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for limits.hpp
*/
#include <boost/winapi/limits.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_CONSTANT(MAX_PATH);
#if !defined(BOOST_WINAPI_IS_MINGW)
BOOST_WINAPI_TEST_CONSTANT(UNICODE_STRING_MAX_BYTES);
BOOST_WINAPI_TEST_CONSTANT(UNICODE_STRING_MAX_CHARS);
#endif
return boost::report_errors();
}

View File

@@ -0,0 +1,30 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file local_memory_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for local_memory.hpp
*/
#include <boost/winapi/local_memory.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_TYPE_SAME(HLOCAL);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(LocalAlloc);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(LocalReAlloc);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(LocalFree);
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
return boost::report_errors();
}

View File

@@ -0,0 +1,34 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file mutex_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for mutex.hpp
*/
#include <boost/winapi/mutex.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_CONSTANT(MUTEX_ALL_ACCESS);
BOOST_WINAPI_TEST_CONSTANT(MUTEX_MODIFY_STATE);
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
BOOST_WINAPI_TEST_CONSTANT(CREATE_MUTEX_INITIAL_OWNER);
#endif
#if !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(OpenMutexA);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(OpenMutexW);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(ReleaseMutex);
return boost::report_errors();
}

View File

@@ -0,0 +1,24 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file overlapped_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for overlapped.hpp
*/
#include <boost/winapi/overlapped.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_STRUCT(OVERLAPPED, (Offset)(OffsetHigh)(Pointer)(hEvent));
return boost::report_errors();
}

View File

@@ -0,0 +1,39 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file page_protection_flags_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for page_protection_flags.hpp
*/
#include <boost/winapi/page_protection_flags.hpp>
#include <windows.h>
#include <boost/predef/platform/windows_uwp.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_CONSTANT(PAGE_NOACCESS);
BOOST_WINAPI_TEST_CONSTANT(PAGE_READONLY);
BOOST_WINAPI_TEST_CONSTANT(PAGE_READWRITE);
BOOST_WINAPI_TEST_CONSTANT(PAGE_WRITECOPY);
BOOST_WINAPI_TEST_CONSTANT(PAGE_GUARD);
BOOST_WINAPI_TEST_CONSTANT(PAGE_NOCACHE);
BOOST_WINAPI_TEST_CONSTANT(PAGE_WRITECOMBINE);
#if BOOST_PLAT_WINDOWS_SDK_VERSION >= BOOST_WINAPI_WINDOWS_SDK_10_0
// Older Windows SDK versions don't define these constants or define for limited API partitions
BOOST_WINAPI_TEST_CONSTANT(PAGE_EXECUTE);
BOOST_WINAPI_TEST_CONSTANT(PAGE_EXECUTE_READ);
BOOST_WINAPI_TEST_CONSTANT(PAGE_EXECUTE_READWRITE);
BOOST_WINAPI_TEST_CONSTANT(PAGE_EXECUTE_WRITECOPY);
#endif // BOOST_PLAT_WINDOWS_SDK_VERSION >= BOOST_WINAPI_WINDOWS_SDK_10_0
return boost::report_errors();
}

View File

@@ -0,0 +1,69 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file pipes_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for pipes.hpp
*/
#include <boost/winapi/pipes.hpp>
#include <windows.h>
#include <boost/predef/platform/windows_uwp.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
BOOST_WINAPI_TEST_CONSTANT(PIPE_ACCESS_DUPLEX);
BOOST_WINAPI_TEST_CONSTANT(PIPE_ACCESS_INBOUND);
BOOST_WINAPI_TEST_CONSTANT(PIPE_ACCESS_OUTBOUND);
BOOST_WINAPI_TEST_CONSTANT(PIPE_TYPE_BYTE);
BOOST_WINAPI_TEST_CONSTANT(PIPE_TYPE_MESSAGE);
BOOST_WINAPI_TEST_CONSTANT(PIPE_READMODE_BYTE);
BOOST_WINAPI_TEST_CONSTANT(PIPE_READMODE_MESSAGE);
BOOST_WINAPI_TEST_CONSTANT(PIPE_WAIT);
BOOST_WINAPI_TEST_CONSTANT(PIPE_NOWAIT);
BOOST_WINAPI_TEST_CONSTANT(PIPE_UNLIMITED_INSTANCES);
BOOST_WINAPI_TEST_CONSTANT(NMPWAIT_USE_DEFAULT_WAIT);
BOOST_WINAPI_TEST_CONSTANT(NMPWAIT_NOWAIT);
BOOST_WINAPI_TEST_CONSTANT(NMPWAIT_WAIT_FOREVER);
#if BOOST_PLAT_WINDOWS_SDK_VERSION >= BOOST_WINAPI_WINDOWS_SDK_7_0
// These constants are not defined in Windows SDK prior to 7.0A
BOOST_WINAPI_TEST_CONSTANT(PIPE_ACCEPT_REMOTE_CLIENTS);
BOOST_WINAPI_TEST_CONSTANT(PIPE_REJECT_REMOTE_CLIENTS);
#endif // BOOST_PLAT_WINDOWS_SDK_VERSION >= BOOST_WINAPI_WINDOWS_SDK_7_0
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(ImpersonateNamedPipeClient);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(DisconnectNamedPipe);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(SetNamedPipeHandleState);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(PeekNamedPipe);
#if !defined( BOOST_NO_ANSI_APIS )
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(WaitNamedPipeA);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(WaitNamedPipeW);
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
#if !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetNamedPipeClientComputerNameA);
#endif // !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetNamedPipeClientComputerNameW);
#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
#endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
return boost::report_errors();
}

View File

@@ -0,0 +1,41 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file priority_class_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for priority_class.hpp
*/
#include <boost/winapi/priority_class.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
BOOST_WINAPI_TEST_CONSTANT(NORMAL_PRIORITY_CLASS);
BOOST_WINAPI_TEST_CONSTANT(IDLE_PRIORITY_CLASS);
BOOST_WINAPI_TEST_CONSTANT(HIGH_PRIORITY_CLASS);
BOOST_WINAPI_TEST_CONSTANT(REALTIME_PRIORITY_CLASS);
BOOST_WINAPI_TEST_CONSTANT(BELOW_NORMAL_PRIORITY_CLASS);
BOOST_WINAPI_TEST_CONSTANT(ABOVE_NORMAL_PRIORITY_CLASS);
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
BOOST_WINAPI_TEST_CONSTANT(PROCESS_MODE_BACKGROUND_BEGIN);
BOOST_WINAPI_TEST_CONSTANT(PROCESS_MODE_BACKGROUND_END);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetPriorityClass);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(SetPriorityClass);
#endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
return boost::report_errors();
}

View File

@@ -0,0 +1,128 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file process_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for process.hpp
*/
#include <boost/winapi/process.hpp>
#include <windows.h>
#include <boost/predef/platform/windows_uwp.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_CONSTANT(DEBUG_PROCESS);
BOOST_WINAPI_TEST_CONSTANT(DEBUG_ONLY_THIS_PROCESS);
BOOST_WINAPI_TEST_CONSTANT(CREATE_SUSPENDED);
BOOST_WINAPI_TEST_CONSTANT(DETACHED_PROCESS);
BOOST_WINAPI_TEST_CONSTANT(CREATE_NEW_CONSOLE);
BOOST_WINAPI_TEST_CONSTANT(CREATE_NEW_PROCESS_GROUP);
BOOST_WINAPI_TEST_CONSTANT(CREATE_UNICODE_ENVIRONMENT);
BOOST_WINAPI_TEST_CONSTANT(CREATE_SEPARATE_WOW_VDM);
BOOST_WINAPI_TEST_CONSTANT(CREATE_SHARED_WOW_VDM);
BOOST_WINAPI_TEST_CONSTANT(CREATE_FORCEDOS);
BOOST_WINAPI_TEST_CONSTANT(CREATE_BREAKAWAY_FROM_JOB);
BOOST_WINAPI_TEST_CONSTANT(CREATE_DEFAULT_ERROR_MODE);
BOOST_WINAPI_TEST_CONSTANT(CREATE_NO_WINDOW);
BOOST_WINAPI_TEST_CONSTANT(PROFILE_USER);
BOOST_WINAPI_TEST_CONSTANT(PROFILE_KERNEL);
BOOST_WINAPI_TEST_CONSTANT(PROFILE_SERVER);
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
BOOST_WINAPI_TEST_CONSTANT(CREATE_PROTECTED_PROCESS);
BOOST_WINAPI_TEST_CONSTANT(EXTENDED_STARTUPINFO_PRESENT);
#endif
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN7
BOOST_WINAPI_TEST_CONSTANT(INHERIT_PARENT_AFFINITY);
#endif
#if defined(UNDER_CE)
BOOST_WINAPI_TEST_CONSTANT(INHERIT_CALLER_PRIORITY);
#endif
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
#if BOOST_WINAPI_PARTITION_DESKTOP
BOOST_WINAPI_TEST_CONSTANT(STARTF_USESHOWWINDOW);
BOOST_WINAPI_TEST_CONSTANT(STARTF_USESIZE);
BOOST_WINAPI_TEST_CONSTANT(STARTF_USEPOSITION);
BOOST_WINAPI_TEST_CONSTANT(STARTF_USECOUNTCHARS);
BOOST_WINAPI_TEST_CONSTANT(STARTF_USEFILLATTRIBUTE);
BOOST_WINAPI_TEST_CONSTANT(STARTF_RUNFULLSCREEN);
BOOST_WINAPI_TEST_CONSTANT(STARTF_FORCEONFEEDBACK);
BOOST_WINAPI_TEST_CONSTANT(STARTF_FORCEOFFFEEDBACK);
BOOST_WINAPI_TEST_CONSTANT(STARTF_USESTDHANDLES);
BOOST_WINAPI_TEST_CONSTANT(STARTF_USEHOTKEY);
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN7
BOOST_WINAPI_TEST_CONSTANT(STARTF_TITLEISLINKNAME);
BOOST_WINAPI_TEST_CONSTANT(STARTF_TITLEISAPPID);
BOOST_WINAPI_TEST_CONSTANT(STARTF_PREVENTPINNING);
#endif
#endif // BOOST_WINAPI_PARTITION_DESKTOP
BOOST_WINAPI_TEST_CONSTANT(PROCESS_TERMINATE);
BOOST_WINAPI_TEST_CONSTANT(PROCESS_CREATE_THREAD);
BOOST_WINAPI_TEST_CONSTANT(PROCESS_SET_SESSIONID);
BOOST_WINAPI_TEST_CONSTANT(PROCESS_VM_OPERATION);
BOOST_WINAPI_TEST_CONSTANT(PROCESS_VM_READ);
BOOST_WINAPI_TEST_CONSTANT(PROCESS_VM_WRITE);
BOOST_WINAPI_TEST_CONSTANT(PROCESS_DUP_HANDLE);
BOOST_WINAPI_TEST_CONSTANT(PROCESS_CREATE_PROCESS);
BOOST_WINAPI_TEST_CONSTANT(PROCESS_SET_QUOTA);
BOOST_WINAPI_TEST_CONSTANT(PROCESS_SET_INFORMATION);
BOOST_WINAPI_TEST_CONSTANT(PROCESS_QUERY_INFORMATION);
BOOST_WINAPI_TEST_CONSTANT(PROCESS_SUSPEND_RESUME);
BOOST_WINAPI_TEST_CONSTANT(PROCESS_ALL_ACCESS);
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
#if !defined(BOOST_WINAPI_IS_MINGW)
BOOST_WINAPI_TEST_CONSTANT(CREATE_PRESERVE_CODE_AUTHZ_LEVEL);
BOOST_WINAPI_TEST_CONSTANT(CREATE_IGNORE_SYSTEM_DEFAULT);
#endif
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_STRUCT(PROCESS_INFORMATION, (hProcess)(hThread)(dwProcessId)(dwThreadId));
#if !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_STRUCT(STARTUPINFOA, (cb)(lpDesktop)(lpTitle)(dwX)(dwY)(dwXSize)(dwYSize)(dwXCountChars)(dwYCountChars)(dwFillAttribute)(dwFlags)(wShowWindow)(hStdInput)(hStdOutput)(hStdError));
#endif // !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_STRUCT(STARTUPINFOW, (cb)(lpDesktop)(lpTitle)(dwX)(dwY)(dwXSize)(dwYSize)(dwXCountChars)(dwYCountChars)(dwFillAttribute)(dwFlags)(wShowWindow)(hStdInput)(hStdOutput)(hStdError));
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
#if BOOST_WINAPI_PARTITION_DESKTOP
#if !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_STRUCT(STARTUPINFOEXA, (StartupInfo)(lpAttributeList));
#endif // !defined(BOOST_NO_ANSI_APIS)
BOOST_WINAPI_TEST_STRUCT(STARTUPINFOEXW, (StartupInfo)(lpAttributeList));
#endif // BOOST_WINAPI_PARTITION_DESKTOP
#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(TerminateProcess);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(OpenProcess);
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
#if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetExitCodeProcess);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(ExitProcess);
#endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
return boost::report_errors();
}

View File

@@ -0,0 +1,33 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file security_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for security.hpp
*/
#include <boost/winapi/security.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_TYPE_SAME(PSID);
BOOST_WINAPI_TEST_TYPE_SAME(SECURITY_DESCRIPTOR_CONTROL);
BOOST_WINAPI_TEST_TYPE_SAME(PSECURITY_DESCRIPTOR_CONTROL);
BOOST_WINAPI_TEST_STRUCT(ACL, (AclRevision)(Sbz1)(AclSize)(AceCount)(Sbz2));
BOOST_WINAPI_TEST_STRUCT(SECURITY_DESCRIPTOR, (Revision)(Sbz1)(Control)(Owner)(Group)(Sacl)(Dacl));
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
return boost::report_errors();
}

View File

@@ -0,0 +1,40 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file semaphore_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for semaphore.hpp
*/
#include <boost/winapi/semaphore.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_CONSTANT(SEMAPHORE_ALL_ACCESS);
BOOST_WINAPI_TEST_CONSTANT(SEMAPHORE_MODIFY_STATE);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(ReleaseSemaphore);
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
#if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
#if !defined( BOOST_NO_ANSI_APIS )
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(OpenSemaphoreA);
#endif // !defined( BOOST_NO_ANSI_APIS )
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(OpenSemaphoreW);
#endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
return boost::report_errors();
}

View File

@@ -0,0 +1,51 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file shell_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for shell.hpp
*/
#include <boost/winapi/shell.hpp>
#include <windows.h>
#include <shellapi.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_DESKTOP
BOOST_WINAPI_TEST_TYPE_SAME(HICON);
BOOST_WINAPI_TEST_CONSTANT(SHGFI_ICON);
BOOST_WINAPI_TEST_CONSTANT(SHGFI_DISPLAYNAME);
BOOST_WINAPI_TEST_CONSTANT(SHGFI_TYPENAME);
BOOST_WINAPI_TEST_CONSTANT(SHGFI_ATTRIBUTES);
BOOST_WINAPI_TEST_CONSTANT(SHGFI_ICONLOCATION);
BOOST_WINAPI_TEST_CONSTANT(SHGFI_EXETYPE);
BOOST_WINAPI_TEST_CONSTANT(SHGFI_SYSICONINDEX);
BOOST_WINAPI_TEST_CONSTANT(SHGFI_LINKOVERLAY);
BOOST_WINAPI_TEST_CONSTANT(SHGFI_SELECTED);
#if (BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN2K)
BOOST_WINAPI_TEST_CONSTANT(SHGFI_ATTR_SPECIFIED);
#endif
BOOST_WINAPI_TEST_CONSTANT(SHGFI_LARGEICON);
BOOST_WINAPI_TEST_CONSTANT(SHGFI_SMALLICON);
BOOST_WINAPI_TEST_CONSTANT(SHGFI_OPENICON);
BOOST_WINAPI_TEST_CONSTANT(SHGFI_SHELLICONSIZE);
BOOST_WINAPI_TEST_CONSTANT(SHGFI_PIDL);
BOOST_WINAPI_TEST_CONSTANT(SHGFI_USEFILEATTRIBUTES);
BOOST_WINAPI_TEST_STRUCT(SHFILEINFOA, (hIcon)(iIcon)(dwAttributes)(szDisplayName)(szTypeName));
BOOST_WINAPI_TEST_STRUCT(SHFILEINFOW, (hIcon)(iIcon)(dwAttributes)(szDisplayName)(szTypeName));
#endif // BOOST_WINAPI_PARTITION_DESKTOP
return boost::report_errors();
}

View File

@@ -0,0 +1,60 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file show_window_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for show_window.hpp
*/
#include <boost/winapi/show_window.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_DESKTOP
BOOST_WINAPI_TEST_TYPE_SAME(HWND);
#if !defined(NOSHOWWINDOW)
BOOST_WINAPI_TEST_CONSTANT(SW_HIDE);
BOOST_WINAPI_TEST_CONSTANT(SW_SHOWNORMAL);
BOOST_WINAPI_TEST_CONSTANT(SW_NORMAL);
BOOST_WINAPI_TEST_CONSTANT(SW_SHOWMINIMIZED);
BOOST_WINAPI_TEST_CONSTANT(SW_SHOWMAXIMIZED);
BOOST_WINAPI_TEST_CONSTANT(SW_MAXIMIZE);
BOOST_WINAPI_TEST_CONSTANT(SW_SHOWNOACTIVATE);
BOOST_WINAPI_TEST_CONSTANT(SW_SHOW);
BOOST_WINAPI_TEST_CONSTANT(SW_MINIMIZE);
BOOST_WINAPI_TEST_CONSTANT(SW_SHOWMINNOACTIVE);
BOOST_WINAPI_TEST_CONSTANT(SW_SHOWNA);
BOOST_WINAPI_TEST_CONSTANT(SW_RESTORE);
BOOST_WINAPI_TEST_CONSTANT(SW_SHOWDEFAULT);
BOOST_WINAPI_TEST_CONSTANT(SW_FORCEMINIMIZE);
BOOST_WINAPI_TEST_CONSTANT(SW_MAX);
BOOST_WINAPI_TEST_CONSTANT(HIDE_WINDOW);
BOOST_WINAPI_TEST_CONSTANT(SHOW_OPENWINDOW);
BOOST_WINAPI_TEST_CONSTANT(SHOW_ICONWINDOW);
BOOST_WINAPI_TEST_CONSTANT(SHOW_FULLSCREEN);
BOOST_WINAPI_TEST_CONSTANT(SHOW_OPENNOACTIVATE);
BOOST_WINAPI_TEST_CONSTANT(SW_PARENTCLOSING);
BOOST_WINAPI_TEST_CONSTANT(SW_OTHERZOOM);
BOOST_WINAPI_TEST_CONSTANT(SW_PARENTOPENING);
BOOST_WINAPI_TEST_CONSTANT(SW_OTHERUNZOOM);
#endif // !defined(NOSHOWWINDOW)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(ShowWindow);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(ShowWindowAsync);
#endif // BOOST_WINAPI_PARTITION_DESKTOP
return boost::report_errors();
}

View File

@@ -0,0 +1,28 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file srw_lock_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for srw_lock.hpp
*/
#include <boost/winapi/srw_lock.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
BOOST_WINAPI_TEST_TYPE_SIZE(SRWLOCK);
#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
return boost::report_errors();
}

View File

@@ -0,0 +1,34 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file stack_backtrace_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for stack_backtrace.hpp
*/
#include <boost/winapi/stack_backtrace.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
// MinGW does not provide RtlCaptureStackBackTrace
#if !defined(BOOST_WINAPI_IS_MINGW)
// Note: RtlCaptureStackBackTrace is available in WinXP SP1 and later
#if (BOOST_USE_NTDDI_VERSION > BOOST_WINAPI_NTDDI_WINXP)
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(RtlCaptureStackBackTrace);
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
#endif // (BOOST_USE_NTDDI_VERSION > BOOST_WINAPI_NTDDI_WINXP)
#endif // !defined(BOOST_WINAPI_IS_MINGW)
return boost::report_errors();
}

View File

@@ -0,0 +1,24 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file system_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for system.hpp
*/
#include <boost/winapi/system.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_STRUCT(SYSTEM_INFO, (dwOemId)(wProcessorArchitecture)(dwPageSize)(lpMinimumApplicationAddress)(lpMaximumApplicationAddress)(dwActiveProcessorMask)(dwNumberOfProcessors)(dwProcessorType)(dwAllocationGranularity)(wProcessorLevel)(wProcessorRevision));
return boost::report_errors();
}

View File

@@ -0,0 +1,28 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file thread_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for thread.hpp
*/
#include <boost/winapi/thread.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(SleepEx);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(Sleep);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(SwitchToThread);
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
return boost::report_errors();
}

View File

@@ -0,0 +1,53 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file thread_pool_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for thread_pool.hpp
*/
#include <boost/winapi/thread_pool.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN2K
BOOST_WINAPI_TEST_CONSTANT(WT_EXECUTEDEFAULT);
BOOST_WINAPI_TEST_CONSTANT(WT_EXECUTEINIOTHREAD);
#if !defined(BOOST_WINAPI_IS_MINGW)
BOOST_WINAPI_TEST_CONSTANT(WT_EXECUTEINUITHREAD);
#endif
BOOST_WINAPI_TEST_CONSTANT(WT_EXECUTEINWAITTHREAD);
BOOST_WINAPI_TEST_CONSTANT(WT_EXECUTEONLYONCE);
BOOST_WINAPI_TEST_CONSTANT(WT_EXECUTEINTIMERTHREAD);
BOOST_WINAPI_TEST_CONSTANT(WT_EXECUTELONGFUNCTION);
#if !defined(BOOST_WINAPI_IS_MINGW)
BOOST_WINAPI_TEST_CONSTANT(WT_EXECUTEINPERSISTENTIOTHREAD);
#endif
BOOST_WINAPI_TEST_CONSTANT(WT_EXECUTEINPERSISTENTTHREAD);
BOOST_WINAPI_TEST_CONSTANT(WT_TRANSFER_IMPERSONATION);
#if BOOST_WINAPI_PARTITION_DESKTOP
BOOST_WINAPI_TEST_TYPE_SAME(WAITORTIMERCALLBACKFUNC);
BOOST_WINAPI_TEST_TYPE_SAME(WAITORTIMERCALLBACK);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(RegisterWaitForSingleObject);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(UnregisterWait);
#endif
#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(UnregisterWaitEx);
#endif
#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN2K
return boost::report_errors();
}

View File

@@ -0,0 +1,32 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file time.hpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for time.hpp
*/
#include <boost/winapi/time.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetTickCount);
#endif
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(GetTickCount64);
#endif
BOOST_WINAPI_TEST_STRUCT(FILETIME, (dwLowDateTime)(dwHighDateTime));
BOOST_WINAPI_TEST_STRUCT(SYSTEMTIME, (wYear)(wMonth)(wDayOfWeek)(wDay)(wHour)(wMinute)(wSecond)(wMilliseconds));
return boost::report_errors();
}

View File

@@ -0,0 +1,33 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file tls_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for tls.hpp
*/
#include <boost/winapi/tls.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_CONSTANT(TLS_OUT_OF_INDEXES);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(TlsAlloc);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(TlsFree);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(TlsGetValue);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(TlsSetValue);
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
return boost::report_errors();
}

View File

@@ -0,0 +1,43 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file wait_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for wait.hpp
*/
#include <boost/winapi/wait.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
BOOST_WINAPI_TEST_CONSTANT(INFINITE);
BOOST_WINAPI_TEST_CONSTANT(WAIT_ABANDONED);
BOOST_WINAPI_TEST_CONSTANT(WAIT_OBJECT_0);
BOOST_WINAPI_TEST_CONSTANT(WAIT_TIMEOUT);
BOOST_WINAPI_TEST_CONSTANT(WAIT_FAILED);
#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(WaitForSingleObjectEx);
#endif
#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_NT4
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(SignalObjectAndWait);
#endif
#endif
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(WaitForMultipleObjects);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(WaitForMultipleObjectsEx);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(WaitForSingleObject);
#endif
return boost::report_errors();
}

View File

@@ -0,0 +1,28 @@
/*
* Copyright Andrey Semashev 2020.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file wait_on_address_abi.cpp
* \author Andrey Semashev
* \date 07.06.2020
*
* \brief This file contains ABI test for wait_on_address.hpp
*/
#include <boost/winapi/wait_on_address.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN8 && (BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM)
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(WaitOnAddress);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(WakeByAddressSingle);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(WakeByAddressAll);
#endif
return boost::report_errors();
}

View File

@@ -0,0 +1,38 @@
/*
* Copyright Andrey Semashev 2018.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file waitable_timer_abi.cpp
* \author Andrey Semashev
* \date 10.03.2018
*
* \brief This file contains ABI test for waitable_timer.hpp
*/
#include <boost/winapi/waitable_timer.hpp>
#include <windows.h>
#include "abi_test_tools.hpp"
int main()
{
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
BOOST_WINAPI_TEST_TYPE_SAME(PTIMERAPCROUTINE);
BOOST_WINAPI_TEST_CONSTANT(TIMER_ALL_ACCESS);
BOOST_WINAPI_TEST_CONSTANT(TIMER_MODIFY_STATE);
BOOST_WINAPI_TEST_CONSTANT(TIMER_QUERY_STATE);
#if !defined( BOOST_NO_ANSI_APIS )
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(OpenWaitableTimerA);
#endif
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(OpenWaitableTimerW);
BOOST_WINAPI_TEST_FUNCTION_SIGNATURE(CancelWaitableTimer);
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
return boost::report_errors();
}

View File

@@ -0,0 +1,97 @@
/*
* Copyright Andrey Semashev 2017.
* Distributed under the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
/*!
* \file winapi_info.cpp
* \author Andrey Semashev
* \date 25.06.2017
*
* \brief This file contains a test that displays information about Windows SDK.
*/
#define BOOST_USE_WINDOWS_H
#include <windows.h>
#include <boost/winapi/config.hpp>
#include <stdio.h>
#include <string.h>
#include <boost/config.hpp>
#include <boost/predef/platform/windows_uwp.h>
void print_macro(const char* name, const char* value)
{
// If a macro is not defined, value will contain the macro name after the starting dot
if (strcmp(name, value + 1) == 0)
{
printf("%s is not defined\n", name);
}
else
{
printf("%s: \"%s\"\n", name, value + 1);
}
}
#define PRINT_MACRO(x) print_macro(#x, BOOST_STRINGIZE(.x))
void print_winsdk_macros()
{
printf("Windows SDK macros:\n===================\n\n");
PRINT_MACRO(_WIN32_WINNT);
PRINT_MACRO(WINVER);
PRINT_MACRO(NTDDI_VERSION);
PRINT_MACRO(_WIN32_IE);
PRINT_MACRO(BOOST_USE_WINAPI_VERSION);
PRINT_MACRO(BOOST_NO_ANSI_APIS);
PRINT_MACRO(BOOST_WINAPI_IS_MINGW);
PRINT_MACRO(BOOST_WINAPI_IS_MINGW_W64);
PRINT_MACRO(BOOST_WINAPI_IS_CYGWIN);
PRINT_MACRO(BOOST_PLAT_WINDOWS_SDK_VERSION);
PRINT_MACRO(__W32API_VERSION);
PRINT_MACRO(__W32API_MAJOR_VERSION);
PRINT_MACRO(__W32API_MINOR_VERSION);
PRINT_MACRO(__W32API_PATCHLEVEL);
PRINT_MACRO(WINAPI_FAMILY);
PRINT_MACRO(UNDER_CE);
PRINT_MACRO(_WIN32_WCE_EMULATION);
PRINT_MACRO(WIN32);
PRINT_MACRO(_WIN32);
PRINT_MACRO(__WIN32__);
PRINT_MACRO(_WIN64);
PRINT_MACRO(__CYGWIN__);
PRINT_MACRO(_X86_);
PRINT_MACRO(_AMD64_);
PRINT_MACRO(_IA64_);
PRINT_MACRO(_ARM_);
PRINT_MACRO(_ARM64_);
PRINT_MACRO(_MAC);
PRINT_MACRO(_MANAGED);
PRINT_MACRO(UNICODE);
PRINT_MACRO(_UNICODE);
PRINT_MACRO(STRICT);
PRINT_MACRO(NO_STRICT);
PRINT_MACRO(WIN32_LEAN_AND_MEAN);
printf("\n");
PRINT_MACRO(WINBASEAPI);
PRINT_MACRO(NTSYSAPI);
PRINT_MACRO(WINAPI);
PRINT_MACRO(NTAPI);
PRINT_MACRO(CALLBACK);
PRINT_MACRO(APIENTRY);
PRINT_MACRO(BOOST_WINAPI_WINAPI_CC);
PRINT_MACRO(BOOST_WINAPI_NTAPI_CC);
PRINT_MACRO(BOOST_WINAPI_CALLBACK_CC);
PRINT_MACRO(VOID);
PRINT_MACRO(CONST);
}
int main(int, char*[])
{
print_winsdk_macros();
return 0;
}