Share via


Secuencia de ejemplo

A continuación se muestra una secuencia de ejemplo de ICTL en el administrador de recursos de tarjeta inteligente:

Secuencia de inicio

  1. Use la API de DevObj o CfgMgr con el GUID de la interfaz de dispositivo de acceso de tarjeta inteligente para detectar el nombre del controlador del dispositivo NFC y usarlo con CreateFile para abrir un identificador de dispositivo.

  2. Inicialice el grupo de subprocesos.

  3. Determine el nombre del lector.

    • IOCTL_SMARTCARD_GET_ATTRIBUTE en SCARD_ATTR_VENDOR_NAME, SCARD_ATTR_VENDOR_IFD_TYPE y SCARD_ATTR_DEVICE_UNIT
  4. Determinar las características del lector.

    • IOCTL_SMARTCARD_GET_ATTRIBUTE en SCARD_ATTR_CHARACTERISTICS
  5. Inicie el monitor de estado de la tarjeta.

    • IOCTL_SMARTCARD_IS_PRESENT: para esperar una llegada de tarjeta inteligente.

    • IOCTL_SMARTCARD_IS_ABSENT – Para esperar la salida de la tarjeta inteligente.

El restablecimiento de energía es irrelevante, ya que no se admiten SCARD_SWALLOWED, SCARD_POWERED estado.

Secuencia de conexión

  1. Inicio del bucle.

  2. IOCTL_SMARTCARD_GET_STATE

    • SCARD_UNKNOWN y SCARD_ABSENT de casos, no haga nada

    • Caso SCARD_PRESENT, tarjeta de trago

    • SCARD_SWALLOWED de mayúsculas y minúsculas, restablecimiento en frío

    • SCARD_POWERED de mayúsculas y minúsculas, restablecimiento intermedio

    • Caso SCARD_NEGOTIABLE, determinar la tarjeta ATR

    • Caso SCARD_SPECIFIC, determinar la tarjeta ATR y el protocolo

  3. IOCTL_SMARTCARD_SET_PROTOCOL

Secuencia de desconexión

  1. Se inicia el tiempo de espera de apagado.

  2. Inicio del bucle.

  3. IOCTL_SMARTCARD_GET_STATE

    • SCARD_SPECIFIC de casos, SCARD_NEGOTIABLE, SCARD_POWERED, apagar

    • Caso SCARD_SWALLOWED, SCARD_PRESENT, no hacer nada

    • Caso SCARD_ABSENT, SCARD_UNKNOWN, no hacer nada