Windows 服務的智慧卡
本主題適用於 IT 專業人員和智慧卡開發人員,說明適用於 Windows 的智慧卡服務 (先前稱為智慧卡 Resource Manager) 如何管理讀取器和應用程式互動。
適用於 Windows 的智慧卡服務提供所有其他智慧卡元件的基本基礎結構,因為它會管理電腦上的智慧卡卡片閱讀機和應用程式互動。 它完全符合 PC/SC 工作組所設定的規格。 如需這些規格的相關信息,請參閱 PC/SC工作組規格網站。
適用於 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}
根據預設,服務會設定為手動模式。 智慧卡卡片閱讀機驅動程式的建立者必須設定其 INF,以便自動啟動服務,並 winscard.dll 檔案呼叫預先定義的進入點,以在安裝期間啟動服務。 進入點會定義為 SmartCardReader 類別的一部分,而且不會直接呼叫。 如果裝置自行公告為此類別的一部分,則會在插入裝置時自動叫用進入點以啟動服務。 使用此方法可確保服務在需要時已啟用,但未使用智慧卡的使用者也會停用此服務。
當服務啟動時,它會執行數個函式:
- 它會自行註冊服務通知
- 它會自行註冊 隨插即用 (與裝置移除和新增相關的 PnP) 通知
- 它會初始化其數據快取和發出服務已啟動訊號的全域事件
注意
針對智慧卡實作,請考慮透過適用於 Windows 的智慧卡服務,在 Windows 作業系統中使用智慧卡讀取器傳送所有通訊。 這會提供介面來追蹤、選取所有宣告自己為智慧卡閱讀機裝置群組成員的驅動程式,並與其通訊。
適用於 Windows 的智慧卡服務會將每個智慧卡卡片讀取器位置分類為唯一的讀取器,而且每個位置也會個別管理,不論裝置的實體特性為何。 適用於 Windows 的智慧卡服務會處理下列高階動作:
- 裝置簡介
- 讀取器初始化
- 通知用戶端新的讀取器
- 串行化讀取器的存取
- 智慧卡存取
- 讀取器特定命令的通道