Freigeben über


Beispielsequenz

Es folgt eine Beispielsequenz von IOCTLs im SmartCard-Ressourcen-Manager:

Startsequenz

  1. Verwenden Sie die DevObj- oder CfgMgr-API mit der Schnittstellen-GUID des SmartCard-Zugriffsgeräts, um den Namen des NFC-Gerätetreibers zu ermitteln und mit CreateFile ein Gerätehandle zu öffnen.

  2. Initialisieren Sie den Threadpool.

  3. Bestimmen Sie den Lesernamen.

    • IOCTL_SMARTCARD_GET_ATTRIBUTE für SCARD_ATTR_VENDOR_NAME, SCARD_ATTR_VENDOR_IFD_TYPE und SCARD_ATTR_DEVICE_UNIT
  4. Bestimmen sie die Lesermerkmale.

    • IOCTL_SMARTCARD_GET_ATTRIBUTE bei SCARD_ATTR_CHARACTERISTICS
  5. Starten Sie den Kartenzustandsmonitor.

    • IOCTL_SMARTCARD_IS_PRESENT – Warten auf das Eintreffen einer Smartcard.

    • IOCTL_SMARTCARD_IS_ABSENT – Warten auf den Abgang der Smartcard.

Der Neustart ist irrelevant, da wir die Zustände SCARD_SWALLOWED und SCARD_POWERED nicht unterstützen.

Sequenz verbinden

  1. Anfang der Schleife.

  2. IOCTL_SMARTCARD_GET_STATE

    • Bei SCARD_UNKNOWN und SCARD_ABSENT nichts tun

    • Bei SCARD_PRESENT Karte behalten

    • Bei SCARD_SWALLOWED Kaltstart

    • Bei SCARD_POWERED Warmstart

    • Bei SCARD_NEGOTIABLE den Karten-ATR bestimmen

    • Bei SCARD_SPECIFIC den Karten-ATR und das Protokoll bestimmen

  3. IOCTL_SMARTCARD_SET_PROTOCOL

Trennungssequenz

  1. Power-Down-Timeout beginnt.

  2. Anfang der Schleife.

  3. IOCTL_SMARTCARD_GET_STATE

    • Bei SCARD_SPECIFIC, SCARD_NEGOTIABLE, SCARD_POWERED Ausschalten festlegen

    • Bei SCARD_SWALLOWED, SCARD_PRESENT nichts tun

    • Bei SCARD_ABSENT, SCARD_UNKNOWN nichts tun