boostorg / boostorg/winapi

The Boost WINAPI partitioning scheme doesn't work for WINAPI_FAMILY_GAMES

Open
#90 5 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
73
Forks
62
PR merge metrics
No merged PRs in 30d

Description

For Xbox development, we make use of ``WINAPI_FAMILY_GAMES`` which is supported by the Windows 10 SDK (19041) or later.

When you build with ``WINAPI_FAMILY=WINAPI_FAMILY_GAMES``, boost ends up misconfiguring a number of APIs which are supported such as ``SwitchToThread``. Part of the problem is that ``WINAPI_FAMILY_GAMES`` by design does NOT include everything in WINAPI_PARTITION_SYSTEM. ``WINAPI_FAMILY_GAMES`` contains many more Win32 APIs than UWP, but less than the full DESKTOP partition.

The good news is that most the Win32 APIs used by the **winapi** headers ARE supported for ``WINAPI_FAMILY_GAMES``.

The only APIs that are NOT in WINAPI_FAMILY_GAMES are:

* The WinCrypt functions in crypt.hpp (bcrypt.hpp is supported instead).
* The dbghelp.hpp functions
* ``FlushViewOfFile``
* ``CompareObjectHandles``
* Jobs APIs in jobs.hpp
* ``ImpersonateNamedPipeClient``. ``TransactNamedPipe``. ``GetNamedPipeClientComputerNameA``, ``GetNamedPipeClientComputerNameW``
* The priority class APIs in priority_class.hpp
* The security object APIs in security.hpp
* Shell APIs in shell.hpp
* ``ShowWindowAsync``

Fixing this is important for making the rest of boost work on the Xbox platform.

> Note that for Xbox development, we officially support the MSVC VS 2017 (v141) 15.9 or later toolset as well as clang/LLVM for Windows v11 or later. Due to some link warnings with newer SDKs and Microsoft GDKs, clang/LLVM for Windows v15 or later is recommended. We also recommend VS 2019 (v142) 16.11 or later.

> There's no need to access the NDA Microsoft GDK with Xbox Extensions for this work as all the relevant APIs are in the public Windows SDK (19041) or later.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.