Пример последовательности
Ниже приведен пример последовательности ioCTL в диспетчере ресурсов смарт-карт.
Последовательность запуска
Используйте API DevObj или CfgMgr с GUID интерфейса доступа к смарт-карте, чтобы обнаружить имя драйвера устройства NFC, и использовать его с CreateFile, чтобы открыть дескриптор устройства.
Инициализация пула потоков.
Определите имя средства чтения.
- IOCTL_SMARTCARD_GET_ATTRIBUTE SCARD_ATTR_VENDOR_NAME, SCARD_ATTR_VENDOR_IFD_TYPE и SCARD_ATTR_DEVICE_UNIT
Определите характеристики средства чтения.
- IOCTL_SMARTCARD_GET_ATTRIBUTE на SCARD_ATTR_CHARACTERISTICS
Запустите монитор состояния карта.
IOCTL_SMARTCARD_IS_PRESENT — ожидание прибытия смарт-карта.
IOCTL_SMARTCARD_IS_ABSENT — ожидание отправки смарт-карта.
Сброс питания не имеет значения, так как мы не поддерживаем SCARD_SWALLOWED, SCARD_POWERED состояние.
Последовательность подключения
Начало цикла.
IOCTL_SMARTCARD_GET_STATE
SCARD_UNKNOWN случаев и SCARD_ABSENT, ничего не делать
SCARD_PRESENT дела, проглатывание карта
SCARD_SWALLOWED случаев, холодный сброс
SCARD_POWERED регистра, теплый сброс
SCARD_NEGOTIABLE случаев определите карта ATR
SCARD_SPECIFIC случаев, определите карта ATR и протокол
IOCTL_SMARTCARD_SET_PROTOCOL
Последовательность отключения
Начинается время ожидания выключения.
Начало цикла.
IOCTL_SMARTCARD_GET_STATE
SCARD_SPECIFIC регистра, SCARD_NEGOTIABLE, SCARD_POWERED, выключение питания
SCARD_SWALLOWED дела, SCARD_PRESENT, ничего не делать
SCARD_ABSENT случае, SCARD_UNKNOWN, ничего не делать