智能卡用户界面

智能卡用户界面 (UI) 是一个通用对话框,允许用户指定或搜索智能卡以打开 (,即连接到应用程序) 并在应用程序中使用。

下面是使用常用对话框的两种方法。 两者都假定将显示对话框 UI。 有关详细信息,请参阅 OPENCARDNAME

选择要打开的智能卡

  1. 声明 OPENCARDNAME 类型的变量。
  2. 在公共对话框中提供足够的信息,以缩小对调用应用程序正在查找的智能卡的搜索范围。 这包括指定 lpstrGroupNameslpstrCardNamesrgguidInterfaces。 这还包括指定在公共对话框通过使用 OPENCARDNAME 结构的 dwShareModedwPreferredProtocols 成员连接到卡时要使用的首选共享模式和协议。
  3. 调用 GetOpenCardName 函数以向用户显示公共对话框。 将显示一个简单的帮助信息行,如果找到请求的卡片之一,则会在显示中突出显示卡。 对于多个卡名称搜索,将突出显示包含其中一个首选卡片的第一个读取器。
  4. 然后,用户选择一个卡,单击“确定”,然后连接到智能卡。

搜索特定卡

  1. 声明 OPENCARDNAME 类型的变量。

  2. 在公共对话框中提供足够的信息,以缩小对调用应用程序正在查找的智能卡的搜索范围。 这包括指定 lpstrGroupNameslpstrCardNamesrgguidInterfaces

  3. 创建 ConnectCheckDisconnect 回调函数,并相应地设置 lpfnConnectlpfnChecklpfnDisconnect 数据成员。

    注意

    以这种方式使用通用对话框时,所有三个函数和成员都必须可用。

     

  4. 调用 GetOpenCardName 公共对话框函数。

  5. 然后,通用对话框将搜索请求的卡片。 如果找到匹配卡名称或 ATR 字符串,则将按顺序调用 ConnectCheckDisconnect 回调函数。 如果卡通过 Check 例程 (即 Check 回调返回 TRUE) ,则会在向用户显示时突出显示此卡。

    注意

    如果提供了多个卡名称,则包含其中一个请求的卡片并通过 Check 例程的第一个读取器将是所选卡。

     

  6. 如果未找到匹配项,将显示一个通用对话框。