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

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

我正在用 C++ 开发通用 Windows 平台应用程序。我在 C++ 中有一个 working 项目,它可以与智能卡通信。对于此通信,它使用 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。解除对编译器的阻塞是微不足道的,但这不是一个好主意。

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

正确的方法是使用 Windows.Devices.SmartCards 命名空间中的类型。如果 API 中缺少某些功能,您可以通过 UserVoice 或反馈中心发送反馈。