Smartcards für den Windows-Dienst
In diesem Thema für IT-Experten und Entwickler von intelligenten Karte wird beschrieben, wie der Smartcard für Windows-Dienst (früher smartcard Resource Manager genannt) Leser- und Anwendungsinteraktionen verwaltet.
Der Dienst Smartcards für Windows stellt die grundlegende Infrastruktur für alle anderen Smart Karte-Komponenten bereit, da er intelligente Karte Leser und Anwendungsinteraktionen auf dem Computer verwaltet. Sie ist vollständig mit den spezifikationen konform, die von der PC/SC-Arbeitsgruppe festgelegt wurden. Informationen zu diesen Spezifikationen finden Sie auf der Pc/SC Workgroup Specifications-Website.
Der Dienst Smartcards für Windows wird im Kontext eines lokalen Diensts ausgeführt und als gemeinsam genutzter Dienst des Diensthostprozesses (svchost) implementiert. Der Smartcards für Windows-Dienst Scardsvr weist die folgende Dienstbeschreibung auf:
<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>
Hinweis
Damit winscard.dll als ordnungsgemäßes Klasseninstallationsprogramm aufgerufen werden kann, muss die INF-Datei für einen Intelligenten Karte-Reader für Class und ClassGUID Folgendes angeben:
Class=SmartCardReader
ClassGuid={50DD5230-BA8A-11D1-BF5D-0000F805F530}
Standardmäßig ist der Dienst für den manuellen Modus konfiguriert. Ersteller von Smart Karte Reader-Treibern müssen ihre INFs so konfigurieren, dass sie den Dienst automatisch starten und winscard.dll Dateien einen vordefinierten Einstiegspunkt aufrufen, um den Dienst während der Installation zu starten. Der Einstiegspunkt wird als Teil der SmartCardReader-Klasse definiert und nicht direkt aufgerufen. Wenn ein Gerät sich selbst als Teil dieser Klasse ankündigen, wird der Einstiegspunkt automatisch aufgerufen, um den Dienst zu starten, wenn das Gerät eingefügt wird. Mit dieser Methode wird sichergestellt, dass der Dienst bei Bedarf aktiviert wird, aber auch für Benutzer deaktiviert ist, die keine Smartcards verwenden.
Wenn der Dienst gestartet wird, führt er mehrere Funktionen aus:
- Er registriert sich selbst für Dienstbenachrichtigungen.
- Es registriert sich selbst für Plug & Play (PnP)-Benachrichtigungen im Zusammenhang mit der Entfernung und Ergänzungen von Geräten.
- Es initialisiert den Datencache und ein globales Ereignis, das signalisiert, dass der Dienst gestartet wurde.
Hinweis
Bei Implementierungen für intelligente Karte sollten Sie erwägen, die gesamte Kommunikation in Windows-Betriebssystemen mit intelligenten Karte-Lesern über den Smartcards für Windows-Dienst zu senden. Dadurch wird eine Schnittstelle zum Nachverfolgen, Auswählen und Kommunizieren mit allen Treibern bereitgestellt, die sich selbst als Mitglieder der Gerätegruppe "Smart Karte Reader" deklarieren.
Der Smartcard-Dienst für Windows kategorisiert jeden Smart Karte-Leserslot als eindeutigen Reader, und jeder Slot wird unabhängig von den physischen Merkmalen des Geräts separat verwaltet. Der Dienst Smartcards für Windows verarbeitet die folgenden allgemeinen Aktionen:
- Geräteeinführung
- Leserinitialisierung
- Benachrichtigung von Clients über neue Leser
- Serialisieren des Zugriffs auf Leser
- Zugriff auf intelligente Karte
- Tunneling von readerspezifischen Befehlen