Condividi tramite


Sequenza di esempio

Di seguito è riportata una sequenza di esempio di IOCTLs in Smart Card Resource Manager:

Sequenza di avvio

  1. Usare l'API DevObj o CfgMgr con il GUID dell'interfaccia del dispositivo di accesso smart card per individuare il nome del driver di dispositivo NFC e usarlo con CreateFile per aprire un handle del dispositivo.

  2. Inizializzare il pool di thread.

  3. Determinare il nome del lettore.

    • IOCTL_SMARTCARD_GET_ATTRIBUTE su SCARD_ATTR_VENDOR_NAME, SCARD_ATTR_VENDOR_IFD_TYPE e SCARD_ATTR_DEVICE_UNIT
  4. Determinare le caratteristiche del lettore.

    • IOCTL_SMARTCARD_GET_ATTRIBUTE on SCARD_ATTR_CHARACTERISTICS
  5. Avviare il monitoraggio dello stato della scheda.

    • IOCTL_SMARTCARD_IS_PRESENT : per attendere l'arrivo di una smart card.

    • IOCTL_SMARTCARD_IS_ABSENT : per attendere la partenza della smart card.

La reimpostazione dell'alimentazione è irrilevante poiché non è supportato SCARD_SWALLOWED, SCARD_POWERED stato.

Connetti sequenza

  1. Inizio del ciclo.

  2. IOCTL_SMARTCARD_GET_STATE

    • Case SCARD_UNKNOWN e SCARD_ABSENT, non fare nulla

    • Case SCARD_PRESENT, scheda inghiotte

    • Caso SCARD_SWALLOWED, reimpostazione a freddo

    • Case SCARD_POWERED, reimpostazione ad accesso frequente

    • Case SCARD_NEGOTIABLE, determinare la scheda ATR

    • Case SCARD_SPECIFIC, determinare la scheda ATR e il protocollo

  3. IOCTL_SMARTCARD_SET_PROTOCOL

Disconnettere la sequenza

  1. Viene avviato il timeout di power-down.

  2. Inizio del ciclo.

  3. IOCTL_SMARTCARD_GET_STATE

    • Case SCARD_SPECIFIC, SCARD_NEGOTIABLE, SCARD_POWERED, impostare l'alimentazione

    • Caso SCARD_SWALLOWED, SCARD_PRESENT, non fare nulla

    • Caso SCARD_ABSENT, SCARD_UNKNOWN, non fare nulla