我正在使用Visual Studio 2017中的visual c++
开发应用程序。
我正在使用Windows库winscard
。
我从一个简单的项目开始,在该项目中,我要调用功能SCardEstablishContext
作为读取智能卡的第一步。
我正在使用的代码段如下:
LONG resContext = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hSC);
if (resContext != SCARD_S_SUCCESS) {
printf("Failed\n");
printf("Error %x\n", resContext);
return(1);
}
我所知道的是,此功能使用Windows服务(称为“智能卡”)来获取执行数据库操作(读/写卡)的范围。
不幸的是,这个简单的应用程序仅在Windows 7环境中有效(即返回SCARD_S_SUCCESS
代码)。在我测试过的所有Windows 10系统中,返回代码始终为0x8010001DL
,它与声明以下内容的定义SCARD_E_NO_SERVICE
相关联:
智能卡资源管理器未运行。
在我测试过的每个Windows 10系统中,在测试程序之前,我都会手动启动“智能卡”服务,并在测试过程中检查程序是否仍在运行。
我使用的winscard.lib
文件带有Microsoft Windows SDK
版本10.0.17763.0
要在Windows 10上运行还需要做些额外的事情吗?
答案 0 :(得分:1)
答案 1 :(得分:0)