Windows サービス用のスマート カード
IT プロフェッショナルおよびスマート カード開発者向けのこのトピックでは、スマート カード for Windows サービス (旧称スマート カード Resource Manager) がリーダーとアプリケーションの相互作用を管理する方法について説明します。
スマート カード for Windows サービスは、コンピューター上のスマート カード リーダーとアプリケーションの相互作用を管理する、他のすべてのスマート カード コンポーネントの基本的なインフラストラクチャを提供します。 PC/SC ワークグループによって設定された仕様に完全に準拠しています。 これらの仕様の詳細については、 PC/SC ワークグループ仕様の Web サイトを参照してください。
Windows サービス用スマート カードは、ローカル サービスのコンテキストで実行され、サービス ホスト (svchost) プロセスの共有サービスとして実装されます。 Windows 用スマート カード サービス Scardsvr には、次のサービスの説明があります。
<serviceData
dependOnService="PlugPlay"
description="@%SystemRoot%\System32\SCardSvr.dll,-5"
displayName="@%SystemRoot%\System32\SCardSvr.dll,-1"
errorControl="normal"
group="SmartCardGroup"
imagePath="%SystemRoot%\system32\svchost.exe -k LocalServiceAndNoImpersonation"
name="SCardSvr"
objectName="NT AUTHORITY\LocalService"
requiredPrivileges="SeCreateGlobalPrivilege,SeChangeNotifyPrivilege"
sidType="unrestricted"
start="demand"
type="win32ShareProcess"
>
<failureActions resetPeriod="900">
<actions>
<action
delay="120000"
type="restartService"
/>
<action
delay="300000"
type="restartService"
/>
<action
delay="0"
type="none"
/>
</actions>
</failureActions>
<securityDescriptor name="ServiceXSecurity"/>
</serviceData>
<registryKeys buildFilter="">
<registryKey keyName="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SCardSvr\Parameters">
<registryValue
name="ServiceDll"
value="%SystemRoot%\System32\SCardSvr.dll"
valueType="REG_EXPAND_SZ"
/>
<registryValue
name="ServiceMain"
value="CalaisMain"
valueType="REG_SZ"
/>
<registryValue
name="ServiceDllUnloadOnStop"
value="1"
valueType="REG_DWORD"
/>
</registryKey>
</registryKeys>
注
winscard.dll を適切なクラス インストーラーとして呼び出すには、スマート カード リーダーの INF ファイルで Class と ClassGUID に次を指定する必要があります。
Class=SmartCardReader
ClassGuid={50DD5230-BA8A-11D1-BF5D-0000F805F530}
既定では、サービスは手動モード用に構成されています。 スマート カード リーダー ドライバーの作成者は、サービスを自動的に開始し、winscard.dll ファイルが定義済みのエントリ ポイントを呼び出してインストール中にサービスを開始するように、その INF を構成する必要があります。 エントリ ポイントは SmartCardReader クラスの一部として定義され、直接呼び出されません。 デバイスがこのクラスの一部として自身をアドバタイズする場合、デバイスの挿入時にサービスを開始するためにエントリ ポイントが自動的に呼び出されます。 この方法を使用すると、必要なときにサービスが有効になりますが、スマート カードを使用しないユーザーにも無効になります。
サービスが開始されると、いくつかの関数が実行されます。
- サービス通知に自身を登録します
- デバイスの削除と追加に関連するプラグ アンド プレイ (PnP) 通知に自身を登録します
- データ キャッシュと、サービスが開始されたことを通知するグローバル イベントを初期化します
注
スマート カード実装の場合は、スマート カード リーダーを使用して Windows オペレーティング システムのすべての通信を Windows サービス用スマート カード経由で送信することを検討してください。 これにより、スマート カード リーダー デバイス グループのメンバーを宣言するすべてのドライバーを追跡、選択、通信するためのインターフェイスが提供されます。
Windows 用スマート カード サービスは、各スマート カード リーダー スロットを一意のリーダーとして分類し、デバイスの物理的な特性に関係なく、各スロットも個別に管理されます。 Windows 用スマート カード サービスは、次の大まかなアクションを処理します。
- デバイスの概要
- リーダーの初期化
- 新しいリーダーのクライアントへの通知
- リーダーへのアクセスのシリアル化
- スマート カード アクセス
- リーダー固有のコマンドのトンネリング