4

WinSCardを使用してすべてのリーダーを一覧表示します。これにより、次のような一覧が表示されます。

ASK RDR4x7 0
SCM Microsystems Inc. SCR3320 USB Smart Card Reader 0
SCM Microsystems Inc. SCR3320 USB Smart Card Reader 1
SCM Microsystems Inc. SCR3320 USB Smart Card Reader 2

これは素晴らしいことですが、どの名前がどのカードリーダーに属しているのかわかりません。

これらの名前はどこから来たのですか?それらはどのように構築されますか?

私が今までに見つけたもの:レジストリには、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servicesキーがあります。このキーの下に、カードリーダーの「サービス」(WMIレジストリを照会して見つけた)に一致するサブキーを見つけることができます。例:SCM Microsystems Inc. SCR3320 USB Smart Card Reader読者向けのサービスはですSCR3XX2K

このサブキー( )には、複数の興味深い値をSCR3XX2K持つ別のサブキーがあります。Enum

  • Count:DWORD、接続されているリーダーの数
  • 0、、:STRING、ハードウェアデバイス1ID2

これらは「わかりやすい名前」に付けられた数字だと思いますが、名前の文字列がどのように構成されているのかわかりません。これは、ハードウェアデバイスID(WMIを介して取得)をわかりやすい名前にマップするために必要です。

では、スマートカードリーダーの「わかりやすい名前」を作成するために使用されるパターンは何ですか。また、値はどこから来るのでしょうか。

4

1 に答える 1

8

これらは、次の3つの属性を組み合わせたものです。

SCARD_ATTR_VENDOR_NAME
SCARD_ATTR_VENDOR_IFD_TYPE
SCARD_ATTR_DEVICE_UNIT

TechNetの記事「スマートカードイベント」には、「スマートカードリーダー名」セクションでこれが記載されています。

SCARD_???属性はSCardGetAttrib 関数で要求されます。

このSCARD_ATTR_DEVICE_SYSTEM_NAME属性はfriendly name、リーダーの一覧表示中に取得したものとしてを返します。

スマートカードリーダーのリストは、レジストリのにありますHKLM\SOFTWARE\Microsoft\Cryptography\Calais\Readers。リーダーは、SCRドライバーのINFファイルによってこのリストに追加されるため、ドライバーのインストール中に追加されます。

デバイスとリーダー間のリンクは、SmartCardReaderクラス{50DD5230-BA8A-11D1-BF5D-0000F805F530}のにありHKLM\SYSTEM\CurrentControlSet\Control\Class\{50DD5230-BA8A-11D1-BF5D-0000F805F5‌​30}ます。

于 2012-05-30T09:36:54.193 に答える