0

是否可以从使用 C++/WinRT 编写的 UWP 应用调用旧版 Win32 API?我正在尝试从 BluetoothApis.h 调用旧版 API。

这可能吗?应用程序是一个纯桌面应用程序。谢了。

4

1 回答 1

2

此处列出了唯一受 UWP 应用支持的 Win32 API 。

所有其他 Win32 旧版 API 均不可用,这意味着:

  • 头文件中的WINAPI_FAMILY_PARTITION宏不会为那些不受支持的函数定义声明,因此使用它们将导致编译时错误。

  • 如果您仍然尝试使用这些旧版 Win32 API 之一,那么当您提交到 Windows 应用商店时,WACK 工具会检测到它并使应用程序失败。

  • 如果您尝试在桌面以外的其他设备系列(即 Xbox One)上运行不受支持的 UWP 应用,则可能会丢失那些旧版 Win32 导入。

如果您错误配置了WINAPI_FAMILY宏或在本地声明了不受支持的功能,则仅加载一侧,因为您从不尝试提交到应用商店,并且只尝试在台式 PC 上运行它,那么该功能可能会或可能不会正常工作。这取决于 Win32 旧版函数如何对所有 UWP 运行的 AppContainer 进程上下文的受限 ACL 做出反应。

TL;DR:不,您不能在 UWP 应用程序中使用 BluetoothAPis.h

#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

.. all functions and types in BluetoothApis.h are here...

#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
于 2018-08-18T16:16:47.367 回答