供应商包装器的目的是封装和使用特定智能卡的低级别 COM 接口(由智能卡制造商提供)。 Microsoft不提供这些接口。
如 ICC 和个人计算机系统 互作性规范第 6 部分中所述(请参阅 https://pcscworkgroup.com中的规范),此包装器公开的功能比四个独立的服务提供商的功能更容易使用。 包装器的功能可以分为四个主要区域:
- 智能卡身份验证服务,例如获取质询和卡身份验证。
- 智能卡文件访问或文件系统服务,例如打开、关闭、读取和写入。
- 智能卡管理,例如附加和分离。
- 智能卡验证服务,例如验证和更改代码。
注意
此规范可能在某些语言和国家或地区不可用。
此功能特定于正在使用的卡类型(该卡支持、协议等功能),对于每个卡将有所不同。
Microsoft SCardCOM 示例包装器使用 ATL COM 库实现简单的包装器,并为其他包装器设置模板。 它实现以下接口。
接口或对象 | 描述 |
---|---|
ISCardAuth |
身份验证服务。 |
ISCardFileAccess |
文件系统服务。 |
ISCardManage |
管理服务。 |
ISCardVerify |
验证服务。 |
注意
SCardCOM 示例仅作为实现包装器接口的示例提供。 若要防止与其他供应商发生 DLL 名称冲突,不得使用 SCardCOM.dll 作为所创建的任何 DLL 的名称。
下面是供应商包装器的典型用法。 此示例使用 ISCardManage 接口创建将包装到服务提供商中的接口实例,并使用 ISCardVerify 接口来验证其作。
生成包装服务提供程序
- 创建 ISCardManage 接口的实例。 使用此接口创建所需接口的实例(例如,ISCardFileAccess 或 ISCardVerify)。 创建这些接口时,还会创建任何相应的低级别 COM 接口。
- 通过适当的 ISCardManage 方法附加/连接到卡。
- 通过适当的 ISCardVerify 方法执行所需的作(该方法可以调用多个低级别 COM 接口和方法来完成)。
- 对其他作重复此作。
- 完成后发布。
COM 接口名称和接口标识符(GUID)不应从代码或示例包装中使用的接口更改。 但是,类 GUID(即接口的实际实现所在的位置)必须从所使用的接口更改。 实现供应商包装器时,这一点尤为重要。 一个示例是在特定计算机上使用多个供应商包装器。 这些包装器应实现相同的 COM 接口,但始终使用不同的实现策略。 因此,需要不同的类(和类 ID)。