由于WINAPI_PARTITION_DESKTOP阻止

时间:2018-03-14 13:48:57

标签: c++ uwp windows-10-universal smartcard

我在C ++中开发通用Windows平台应用程序。我在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 app中使用winscard.h lib吗?

1 个答案:

答案 0 :(得分:4)

WINAPI_PARTITION_DESKTOP防护意味着UWP应用不支持API。解锁编译器是微不足道的,但这不是一个好主意。

  • 您可以通过使声明可见来取消阻止编译器,但是您在链接时遇到问题。
  • 您可以手动将正确的导入库添加到链接,但由于安全检查,它可能会在运行时失败。
  • 即使您成功完成了这项工作,您的应用也不会在Windows应用商店中被允许。
  • 即使您使用它并且不关心Windows应用商店,这也不是受支持的方案,并且可能会在任何时间点中断。

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