首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >节点智能卡在扫描卡时抛出SCardConnect错误和断开后的SCardListReaders错误

节点智能卡在扫描卡时抛出SCardConnect错误和断开后的SCardListReaders错误
EN

Stack Overflow用户
提问于 2016-11-19 20:36:21
回答 1查看 925关注 0票数 2

我也使用角度和电子,但是以前一切都很好。这是一个错误:

代码语言:javascript
运行
复制
Error: SCardConnect error: 
SCardConnect error: The smart card cannot be accessed because of other connections outstanding.
(0x8010000b)

在第一次扫描卡后,它不再抛出错误,并在重新启动之前工作良好的读卡器。下面是一些与智能卡相关的代码片段:

代码语言:javascript
运行
复制
const smartcard = require('smartcard');
const Devices = smartcard.Devices;
const devices = new Devices();
let currentDevices = [];

//something else

app.run(function($rootScope) {
let registerDevices = function (event) {
    currentDevices = event.devices;
    currentDevices.forEach(function (device) {
        device.on('card-inserted', event => {
            let card = event.card;
            console.log(`Card '${card.getAtr()}' inserted into '${card.device}'`);
            $rootScope.$broadcast('card-attach',card.getAtr());
        });
        device.on('card-removed', event => {
        });
        device.on('error', event => {
            console.error("Card Reader Error: " + event);
        });
    });
};

devices.on('device-activated', event => {
    console.log("Reader added :" + event.device);
    registerDevices(event);
});

devices.on('device-deactivated', event => {
    console.log("Reader removed :" + event.device);
    registerDevices(event);
});
});

另外,当我断开扫描仪时,上面写着

代码语言:javascript
运行
复制
events.js:160 Uncaught Error: SCardListReaders error: The Smart Card Resource Manager is not running.
(0x8010001d)

events.js:163 Uncaught Error: Uncaught, unspecified "error" event. ([object Object])

而扫描仪在重新连接后就不能工作了。

EN

回答 1

Stack Overflow用户

发布于 2016-11-20 00:15:15

这个错误代码是违犯 --一些进程已经以独占模式连接到卡上(使用排他性表示SCardConnect)。

假设你在Windows下

Windows中有一种即插拔机制,默认情况下,插入后立即自动访问每一张卡,并试图为其确定正确的驱动程序--这将在访问卡时创建一个短时间窗口(这是IMHO最可能的原因)。

你有两个选择:

  1. 处理它的 --在一段时间后重试卡连接尝试(数十ms,YMMV)对这个特定的错误代码(可能可以在循环中进行一些最大重试计数)。
  2. 禁用此行为 --有两种方法(我从未使用过组策略1,但它应该有效): a/使用本地组策略设置(禁用计算机配置、->管理模板、-> Windows组件、->智能卡->、打开智能卡即插即用服务)(参见这里) b/通过将HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\ScPnP下的注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\ScPnP设置为dword:0x00000000 (64位系统也将其设置为HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\ScPnP ) --参见例如这里。确保重新启动系统以使更改生效。

关于你的编辑与0x8010001D (服务)错误代码和重新连接一个阅读器-我不知道。

祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40697650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档