我正在c++
使用 Visual Studio 2017 开发应用程序。
我正在使用 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 服务来获取执行数据库操作的范围(读/写卡)。
SCARD_S_SUCCESS
不幸的是,这个简单的应用程序只能在 Windows 7 环境中工作(即返回代码)。在我测试的所有 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 一起工作,还需要做一些额外的事情吗?