スマート カードのユーザー インターフェイス
スマート カード ユーザー インターフェイス (UI) は、ユーザーが開くスマート カードを指定または検索できる 1 つの 共通ダイアログ ボックス です (つまり、アプリケーションに接続して使用します)。
次の 2 つの方法で共通ダイアログ ボックスを使用できます。 どちらの場合も、ダイアログ ボックス UI が表示されることを前提としています。 詳細については、OPENCARDNAMEを参照してください。
スマート カードを選択して を開くには
- OPENCARDNAME 型の変数を宣言します。
- 共通ダイアログ ボックスに十分な情報を入力して、呼び出し元アプリケーションが探しているスマート カードの検索を絞り込みます。 これには、lpstrGroupNames、lpstrCardNames、および rgguidInterfacesの指定が含まれます。 これには、共通ダイアログ ボックスが dwShareMode を使用してカードに接続し、OPENCARDNAME 構造体のメンバー dwPreferredProtocols を するときに使用する優先共有モードとプロトコルの指定も含まれます。
- GetOpenCardName 関数を呼び出して、ユーザーに共通のダイアログ ボックスを表示します。 単純なヘルプ情報行が表示され、要求されているカードのいずれかが見つかった場合、カードはディスプレイで強調表示されます。 複数のカード名の検索では、優先カードのいずれかを含む最初のリーダーが強調表示されます。
- 次に、ユーザーがカードを選択し、[OK] クリックして、スマート カードに接続します。
特定のカード を検索するには
OPENCARDNAME 型の変数を宣言します。
共通ダイアログ ボックスに十分な情報を入力して、呼び出し元アプリケーションが探しているスマート カードの検索を絞り込みます。 これには、lpstrGroupNames、lpstrCardNames、および rgguidInterfacesの指定が含まれます。
Connect、Check、および Disconnect コールバック関数を作成し、lpfnConnect、lpfnCheck、および lpfnDisconnect データ メンバーを適切に設定します。
手記
この方法で共通ダイアログ ボックスを使用する場合は、3 つの関数とメンバーをすべて使用できる必要があります。
GetOpenCardName 共通ダイアログ ボックス関数を呼び出します。
その後、一般的なダイアログ ボックスで、要求されたカードが検索されます。 一致するカード名または ATR 文字列 が見つかった場合は、Connect、Check、および Disconnect コールバック関数が順番に呼び出されます。 カードが Check ルーチン (つまり、Check コールバックが TRUE 返す) を渡すと、このカードはユーザーに表示で強調表示されます。
手記
複数のカード名が指定されている場合、要求されたカードの 1 つを含み、Check ルーチンを渡す最初のリーダーが選択されたカードになります。
一致が見つからない場合は、共通のダイアログ ボックスが表示されます。