由于WINAPI_PARTITION_DESKTOP块,无法在 UWP 应用中使用 winscard.h

Can't use winscard.h in a UWP app due to WINAPI_PARTITION_DESKTOP blocks

本文关键字:应用 UWP winscard PARTITION WINAPI DESKTOP 由于      更新时间:2023-10-16

我正在开发一个通用的Windows平台应用程序C++。我在C++有一个可以与智能卡通信的工作项目。对于此通信,它使用winscard.h库。

我想在 UWP 应用程序中使用winscard.h提供的此功能,但我无法在 UWP 中编译它。经过一些研究,我发现在这个头文件中有一个条件:

#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

所以这就是编译器找不到方法的原因。展望未来,我想将此WINAPI_FAMILY_PARTITION更改为WINAPI_PARTITION_DESKTOP,但我对此一无所获。

我在 appxmanifest 文件中将TargetDeviceFamily名称设置为 Windows.Desktop ,但这无济于事。

所以,我的问题是:

  1. 是否可以更改WINAPI_FAMILY_PARTITION?如果没有:
  2. 是否可以在 UWP 应用中使用 winscard.h 库?

WINAPI_PARTITION_DESKTOP保护意味着 UWP 应用不支持 API。取消阻止编译器是微不足道的,但这不是一个好主意。

  • 您可以通过使声明可见来取消阻止编译器,但这样链接就会遇到问题。
  • 您可以手动将正确的导入库添加到链接,但由于安全检查,它可能会在运行时失败。
  • 即使你设法做到了这一点,你的应用也不允许进入 Windows 应用商店。
  • 即使你让它正常工作并且不关心 Windows 应用商店,这也是不支持的方案,并且可能随时中断。

执行此操作的正确方法是使用 Windows.Devices.SmartCards 命名空间中的类型。如果该 API 缺少功能,可以通过用户语音或反馈中心发送反馈。