Beispielsequenz

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

Startsequenz

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

  2. Initialisieren sie den Threadpool.

  3. Bestimmen Sie den Lesernamen.

    • IOCTL_SMARTCARD_GET_ATTRIBUTE auf SCARD_ATTR_VENDOR_NAME, SCARD_ATTR_VENDOR_IFD_TYPE und SCARD_ATTR_DEVICE_UNIT
  4. Bestimmen Sie die Lesereigenschaften.

    • IOCTL_SMARTCARD_GET_ATTRIBUTE auf SCARD_ATTR_CHARACTERISTICS
  5. Starten Sie den Karte Zustandsmonitor.

    • IOCTL_SMARTCARD_IS_PRESENT– Warten auf eine intelligente Karte Ankunft.

    • IOCTL_SMARTCARD_IS_ABSENT: Warten auf den Smart Karte Abflug.

Die Energiezurücksetzung ist irrelevant, da SCARD_SWALLOWED, SCARD_POWERED Zustand nicht unterstützt wird.

Verbindungssequenz

  1. Start der Schleife.

  2. IOCTL_SMARTCARD_GET_STATE

    • Fall SCARD_UNKNOWN und SCARD_ABSENT, nichts tun

    • Fall SCARD_PRESENT, schlucken Karte

    • Fall SCARD_SWALLOWED, Kaltzurücksetzung

    • Fall SCARD_POWERED, Warmzurücksetzung

    • SCARD_NEGOTIABLE Fall bestimmen Sie die Karte ATR

    • SCARD_SPECIFIC fall, bestimmen Sie die Karte ATR und das Protokoll

  3. IOCTL_SMARTCARD_SET_PROTOCOL

Trennsequenz

  1. Das Powerdowntimeout beginnt.

  2. Start der Schleife.

  3. IOCTL_SMARTCARD_GET_STATE

    • SCARD_SPECIFIC, SCARD_NEGOTIABLE, SCARD_POWERED, Ausschalten festlegen

    • Fall SCARD_SWALLOWED, SCARD_PRESENT, nichts tun

    • Fall SCARD_ABSENT, SCARD_UNKNOWN, nichts tun