供应商包装服务提供程序

供应商包装器的目的是封装并使用智能卡制造商) 为特定智能卡提供的低级别 COM 接口 (。 Microsoft 不提供这些接口。

供应商包装器

ICC 和个人计算机系统的互操作性规范 第 6 部分所述, (请参阅) 的规范 https://pcscworkgroup.com ,此包装器公开的功能比四个单独的服务提供商的功能更易于使用。 包装的功能可分为四个main区域:

  • 智能卡身份验证服务,例如获取质询和卡身份验证。
  • 智能卡文件访问或文件系统服务,例如打开、关闭、读取和写入。
  • 智能卡管理,例如附加和分离。
  • 智能卡验证服务,例如验证和更改代码。

注意

此规范在某些语言和国家或地区中可能不可用。

 

该功能特定于使用的卡类型, (卡支持的功能、协议等) ,并且每个卡将有所不同。

Microsoft SCardCOM 示例包装器使用 ATL COM 库实现简单的包装器,并为其他包装器设置模板。 它实现以下接口。

接口或对象 说明
ISCardAuth
身份验证服务。
ISCardFileAccess
文件系统服务。
ISCardManage
管理服务。
ISCardVerify
验证服务。

 

注意

SCardCOM 示例仅作为实现包装器接口的示例提供。 若要防止 DLL 名称与其他供应商冲突,不得使用 SCardCOM.dll 作为所创建的任何 DLL 的名称。

 

下面是供应商包装器的典型用法。 此示例使用 ISCardManage 接口创建将包装到服务提供程序和 ISCardVerify 接口中的接口实例,以验证其操作。

生成包装服务提供程序

  1. 创建 ISCardManage 接口的实例。 使用此接口创建所需接口的实例, (例如 ISCardFileAccessISCardVerify) 。 创建这些接口时,还将创建任何相应的低级别 COM 接口。
  2. 通过适当的 ISCardManage 方法附加/连接到卡。
  3. 通过适当的 ISCardVerify 方法 (执行所需的操作,该方法可以调用多个低级别 COM 接口和方法来完成) 。
  4. 对其他操作重复此操作。
  5. 完成后释放。

COM 接口名称和接口标识符 (GUID) 不应更改代码或示例包装中使用的名称。 但是,类 GUID (即,接口的实际实现所在的位置) 必须从使用的位置更改。 实现供应商包装器时,这一点尤其重要。 一个示例是在特定计算机上使用多个供应商包装器。 这些包装器应实现相同的 COM 接口,但始终使用不同的实现策略。 因此,需要不同的类 (和类 ID) 。