Windows 服务的智能卡
本主题面向 IT 专业人员和智能卡开发人员介绍了 Windows 智能卡服务 (以前称为智能卡资源管理器) 如何管理读取器和应用程序交互。
Windows 智能卡服务为所有其他智能卡组件提供基本基础结构,因为它管理计算机上的智能卡读取器和应用程序交互。 它完全符合 PC/SC 工作组设置的规范。 有关这些规范的信息,请参阅 PC/SC 工作组规范网站。
适用于 Windows 的智能卡服务在本地服务的上下文中运行,它作为服务主机 (svchost) 进程的共享服务实现。 适用于 Windows 的智能卡服务 Scardsvr 具有以下服务说明:
<serviceData
dependOnService="PlugPlay"
description="@%SystemRoot%\System32\SCardSvr.dll,-5"
displayName="@%SystemRoot%\System32\SCardSvr.dll,-1"
errorControl="normal"
group="SmartCardGroup"
imagePath="%SystemRoot%\system32\svchost.exe -k LocalServiceAndNoImpersonation"
name="SCardSvr"
objectName="NT AUTHORITY\LocalService"
requiredPrivileges="SeCreateGlobalPrivilege,SeChangeNotifyPrivilege"
sidType="unrestricted"
start="demand"
type="win32ShareProcess"
>
<failureActions resetPeriod="900">
<actions>
<action
delay="120000"
type="restartService"
/>
<action
delay="300000"
type="restartService"
/>
<action
delay="0"
type="none"
/>
</actions>
</failureActions>
<securityDescriptor name="ServiceXSecurity"/>
</serviceData>
<registryKeys buildFilter="">
<registryKey keyName="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SCardSvr\Parameters">
<registryValue
name="ServiceDll"
value="%SystemRoot%\System32\SCardSvr.dll"
valueType="REG_EXPAND_SZ"
/>
<registryValue
name="ServiceMain"
value="CalaisMain"
valueType="REG_SZ"
/>
<registryValue
name="ServiceDllUnloadOnStop"
value="1"
valueType="REG_DWORD"
/>
</registryKey>
</registryKeys>
注意
若要将 winscard.dll 调用为适当的类安装程序,智能卡读取器的 INF 文件必须为 Class 和 ClassGUID 指定以下内容:
Class=SmartCardReader
ClassGuid={50DD5230-BA8A-11D1-BF5D-0000F805F530}
默认情况下,服务配置为手动模式。 智能卡读取器驱动程序的创建者必须配置其 INF,以便自动启动服务,winscard.dll 文件调用预定义的入口点以在安装期间启动服务。 入口点定义为 SmartCardReader 类的一部分,不会直接调用它。 如果设备作为此类的一部分播发自身,则插入设备时会自动调用入口点以启动服务。 使用此方法可确保在需要时启用服务,但对不使用智能卡的用户也禁用该服务。
服务启动时,它会执行多个功能:
- 它自行注册服务通知
- 它注册与设备删除和添加相关的即插即用 (PnP) 通知
- 它初始化其数据缓存和一个全局事件,以指示服务已启动
注意
对于智能卡实现,请考虑通过适用于 Windows 的智能卡服务在具有智能卡读取器的 Windows 操作系统中发送所有通信。 这提供了一个接口,用于跟踪、选择和与声明自己是智能卡读取器设备组成员的所有驱动程序通信。
适用于 Windows 的智能卡服务将每个智能卡读取器槽分类为唯一的读取器,并且每个插槽也单独管理,而不管设备的物理特征如何。 适用于 Windows 的智能卡服务处理以下高级操作:
- 设备简介
- 读取器初始化
- 通知客户端新读取者
- 序列化对读取器的访问权限
- 智能卡访问
- 特定于读取器的命令的隧道