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
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.
Inicialice el grupo de subprocesos.
Determine el nombre del lector.
- IOCTL_SMARTCARD_GET_ATTRIBUTE en SCARD_ATTR_VENDOR_NAME, SCARD_ATTR_VENDOR_IFD_TYPE y SCARD_ATTR_DEVICE_UNIT
Determinar las características del lector.
- IOCTL_SMARTCARD_GET_ATTRIBUTE en SCARD_ATTR_CHARACTERISTICS
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
Inicio del bucle.
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
IOCTL_SMARTCARD_SET_PROTOCOL
Secuencia de desconexión
Se inicia el tiempo de espera de apagado.
Inicio del bucle.
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