Rückrufroutinen der Smartcardtreiberbibliothek

Die Smart Karte-Architektur definiert eine Reihe von Standard-Rückrufroutintypen. Ausführliche Informationen zu diesen Routinen finden Sie unter Rückrufe für Smartcardtreiber.

Ein Lesertreiber muss diese Rückrufroutinen für die Treiberbibliotheksroutine SmartcardDeviceControl (WDM) verfügbar machen, um aufrufen zu können, indem zeiger auf sie in der Smart Karte Geräteerweiterung gespeichert werden, die vom Typ SMARTCARD_EXTENSION ist. Diese Zeiger werden in einem Array gespeichert, das sich im ReaderFunction-Member SMARTCARD_EXTENSION Struktur befindet. Einzelne Rückrufroutinen können durch eine Reihe konstanter Werte identifiziert werden, die als Indizes in das ReaderFunction-Array verwendet werden sollten.

Wenn Sie für instance möchten, dass SmartcardDeviceControl eine Rückrufroutine im Readertreiber DriverCardPower aufruft, wenn die Verarbeitung einer IOCTL_SMARTCARD_POWER Anforderung abgeschlossen ist, müssen Sie die RDF_CARD_POWER-Konstante verwenden, um die Geräteerweiterung wie folgt zu initialisieren:

SmartcardExtension->ReaderFunction[RDF_CARD_POWER] = 
DriverCardPower;

RDF_CARD_POWER ist eine feste, systemdefinierte Konstante, die immer der Rückrufroutine entspricht, die die IOCTL_SMARTCARD_POWER Anforderung verarbeitet.

Wenn das Element des ReaderFunction-Arrays, das der verarbeiteten IOCTL entspricht, NULL ist, gibt SmartcardDeviceControl eine status von STATUS_NOT_SUPPORTED an den Lesertreiber zurück. In einigen Fällen ist dieses Verhalten nützlich. Wenn Ihr Treiber beispielsweise Karte Auswerfen oder Karte Verschlucken nicht unterstützt, weisen Sie einfach das entsprechende Element des ReaderFunction-Arraysnull zu, und SmartcardDeviceControl gibt STATUS_NOT_SUPPORTED zurück, wenn diese Memberroutine aufgerufen wird.

In der folgenden Tabelle sind die Konstanten aufgeführt, die die verschiedenen Arten von Rückrufroutinen identifizieren. Dies sind die Konstanten, die Sie als Indizes im ReaderFunction-Array verwenden sollten. Die Tabelle enthält auch eine kurze Beschreibung der einzelnen Routinetypen und gibt an, ob er für einen Lesertreiber obligatorisch oder optional ist, um die Routine zu implementieren.

Index Beschreibung der entsprechenden Rückrufroutine Implementierung durch den Readertreiber

RDF_CARD_POWER

Setzt ein eingefügtes smartes Karte zurück oder deaktiviert sie.

Obligatorisch.

RDF_CARD_EJECT

Wirft ein eingefügtes smartes Karte aus

Optional

RDF_CARD_TRACKING

Installiert einen Ereignishandler, um Karte Ein- und Entfernungen nachzuverfolgen

Obligatorisch.

RDF_IOCTL_VENDOR

Führt herstellerspezifische IOCTL-Vorgänge aus

Optional

RDF_READER_SWALLOW

Macht eine mechanische Schwalben

Optional

RDF_SET_PROTOCOL

Wählt ein Übertragungsprotokoll für die Karte aus, die sich im Karte-Reader befindet.

Obligatorisch.

RDF_TRANSMIT

Führt Datenübertragungen aus

Obligatorisch.

Wenn der Lesertreiber diese Routinen aufruft, sollten die aufrufenden Parameter aus den Eingabepuffern abgerufen werden, wie unter Rückrufe für Smartcardtreiber beschrieben. Der Readertreiber sollte die Ausgabedaten auch in den entsprechenden Pufferbereichen speichern, wie im selben Abschnitt beschrieben.

Wenn eine andere Rückrufroutine als die Karte-Tracking-Rückrufroutine STATUS_PENDING zurückgibt, beendet die Smart Karte-Bibliothek alle weiteren Aufrufe des Lesertreibers. (Informationen zur Rückrufroutine Karte-Tracking finden Sie unter RDF_CARD_TRACKING.) Wenn der Readertreiber versucht, eine Treiberbibliotheksroutine zu verwenden, während sich die Bibliothek in diesem Zustand befindet, gibt die Bibliotheksroutine eine status von STATUS_DEVICE_BUSY zurück. Dadurch wird effektiv verhindert, dass der Lesertreiber IOCTL-Anforderungen vom Ressourcen-Manager verarbeitet, da der Lesertreiber keine IOCTL-Anforderungen verarbeiten kann, wenn er SmartcardDeviceControl nicht aufrufen kann.