访问智能卡

智能卡子系统为应用程序或服务提供程序提供了多种连接到智能卡的方法:

  • 应用程序可以调用 SCardConnect 连接到位于给定读取器中的卡。 这是与智能卡建立通信的最简单方法。
  • 应用程序可以在给定的读取者组中搜索特定的智能卡。 应用程序通过其显示名称标识卡,并指定可能在其中显示卡的读取器列表。 资源管理器在读取器列表中搜索具有与命名卡匹配的 ATR 字符串的任何卡片,并将状态信息返回给应用程序。 除了获取 ATR 字符串之外,智能卡子系统永远不会建立 GUI 或与卡交互。 但是,它确实为应用程序或公共控件提供了足够的信息,以便能够引导用户找到所需的卡或卡类型。 这会导致将请求映射到特定的读取器,进一步将 I/O 定向到该读取器。
  • 应用程序可以请求支持一组给定智能卡接口的卡列表。 然后,应用程序可以在上一种情况下使用该列表。 这允许应用程序根据其功能连接到卡片,而不考虑其名称。

当应用程序查找卡时,它会提供要在其中查找的读取器名称数组。 对于数组中的每个读取器元素,资源管理器提供以下信息:

  • 读取器是否可供此应用程序使用。
  • 是否有卡插入到此读取器中,如果是,则表示其 ATR 字符串是什么。
  • 卡的 ATR 字符串是否与任何请求的卡的 ATR 字符串匹配。

应用程序使用返回的信息将进一步的筛选器应用于卡片,或提示用户选择所需的卡。 请注意,可能打开一个或多个返回的读取器列表供其他应用程序独占使用,因此不能保证访问此读取器列表。