智能卡用户界面

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

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

选择要打开 的智能卡

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

搜索特定卡片

  1. 声明 OPENCARDNAME类型的变量。

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

  3. 创建 ConnectCheckDisconnect 回调函数,并适当设置 lpfnConnectlpfnCheck,以及适当地 lpfnDisconnect 数据成员。

    注意

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

     

  4. 调用 GetOpenCardName 常见对话框函数。

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

    注意

    如果提供了多个卡片名称,则包含其中一张请求的卡的第一个读取器将传递 检查 例程将是所选卡片。

     

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