Freigeben über


Interaktion mit der Smartcardtreiberbibliothek

Die folgende Abbildung zeigt, wie ein Readertreiber mit der Smart Karte-Treiberbibliothek interagiert, um IOCTL-Anforderungen zu verarbeiten, die er vom Ressourcen-Manager empfängt:

Diagramm, das veranschaulicht, wie ein Readertreiber mit der Smart Karte-Treiberbibliothek interagiert, um ioctl-Anforderungen zu verarbeiten.

Die folgenden Zahlen entsprechen den Zahlen in der vorherigen Abbildung. Beginnend mit der Zahl 1 zeigt die Abbildung die Schritte, die ein Readertreiber ausführen muss (zusammen mit der vom System bereitgestellten Treiberbibliothek), um eine IOCTL-Anforderung zu verarbeiten:

  1. Der Readertreiber übergibt alle IOCTL-Anforderungen an die WdM-Treiberbibliotheksroutine (SmartcardDeviceControl).

  2. Wenn die Parameter, die der Readertreiber an SmartcardDeviceControl übergibt, falsch sind, gibt SmartcardDeviceControl mit einer Fehlermeldung zurück. SmartcardDeviceControl gibt zurück, ohne die IOCTL-Anforderung abzuschließen. In diesem Fall muss der Readertreiber die IOCTL-Anforderung abschließen.

  3. Wenn die Parameter gültig sind, verarbeitet SmartcardDeviceControl die IOCTL-Anforderung, sofern möglich.

  4. SmartcardDeviceControl überprüft, ob für den Readertreiber eine Rückrufroutine für die verarbeitete IOCTL-Anforderung definiert ist. Wenn der Rückruf vorhanden ist, ruft SmartcardDeviceControl ihn auf.

  5. Die Rückrufroutine ruft alle Treiberbibliotheksroutinen auf, die zum Abschließen der Verarbeitung der IOCTL-Anforderung erforderlich sind.

  6. Nach der Verarbeitung der IOCTL-Anforderung kehrt die Rückrufroutine zu SmartcardDeviceControl zurück.

  7. SmartcardDeviceControl schließt das IRP ab, das die IOCTL enthält.

  8. SmartcardDeviceControl gibt die Steuerung an die Dispatchroutine reader-driver zurück.

Die Bibliothek smart Karte synchronisiert den Zugriff auf den Readertreiber. Es werden keine zwei Rückruffunktionen gleichzeitig aufgerufen. Die Ereignisbehandlung für Karte Einfügen und Entfernen muss jedoch asynchron verarbeitet werden.