我正在使用VisualStudio2017开发一个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);
}
我所知道的是,这个函数使用称为“智能卡”的windows服务来获得执行数据库操作的范围(读/写卡)。
不幸的是,这个简单的应用程序只在windows 7环境中工作(即返回SCARD_S_SUCCESS
代码)。在我测试的所有windows 10系统中,返回代码总是与断言的定义0x8010001DL
相关联的SCARD_E_NO_SERVICE
:
智能卡资源管理器没有运行。
在windows 7系统上,程序没有管理权限,在windows 10系统上,我也尝试过使用管理权限,但错误是相同的。
在我测试的每一个windows 10系统中,在测试我的程序之前,我都会手动启动“智能卡”服务,并在测试时检查它是否仍在运行。
在windows 7和windows 10系统中,我都没有连接智能卡读卡器。
我使用的winscard.lib
文件随Microsoft Windows SDK
版本10.0.17763.0
一起来
为了让它与windows 10一起工作,还有其他事情要做吗?
https://stackoverflow.com/questions/56397957
复制相似问题