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 檔案必須針對 ClassClassGUID 指定下列專案:

Class=SmartCardReader ClassGuid={50DD5230-BA8A-11D1-BF5D-0000F805F530}

根據預設,服務會設定為手動模式。 智慧卡卡片閱讀機驅動程式的建立者必須設定其 INF,以便自動啟動服務,並 winscard.dll 檔案呼叫預先定義的進入點,以在安裝期間啟動服務。 進入點會定義為 SmartCardReader 類別的一部分,而且不會直接呼叫。 如果裝置自行公告為此類別的一部分,則會在插入裝置時自動叫用進入點以啟動服務。 使用此方法可確保服務在需要時已啟用,但未使用智慧卡的使用者也會停用此服務。

當服務啟動時,它會執行數個函式:

  1. 它會自行註冊服務通知
  2. 它會自行註冊 隨插即用 (與裝置移除和新增相關的 PnP) 通知
  3. 它會初始化其數據快取和發出服務已啟動訊號的全域事件

注意

針對智慧卡實作,請考慮透過適用於 Windows 的智慧卡服務,在 Windows 作業系統中使用智慧卡讀取器傳送所有通訊。 這會提供介面來追蹤、選取所有宣告自己為智慧卡閱讀機裝置群組成員的驅動程式,並與其通訊。

適用於 Windows 的智慧卡服務會將每個智慧卡卡片讀取器位置分類為唯一的讀取器,而且每個位置也會個別管理,不論裝置的實體特性為何。 適用於 Windows 的智慧卡服務會處理下列高階動作:

  • 裝置簡介
  • 讀取器初始化
  • 通知用戶端新的讀取器
  • 串行化讀取器的存取
  • 智慧卡存取
  • 讀取器特定命令的通道

請參閱

智慧卡登入在 Windows 中的運作方式