Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Warning
titleИзменилось поведение функции SCardGetStatusChange

Начиная с версии RtPcsc 5.0.0 при ее использовании для обнаружения нового считывателя с помощью "\\?PnP?\Notification", необходимо указывать количество уже известных приложению считывателей в верхнем слове dwCurrentState.

Например, так:

SCARD_READERSTATE state;
state.szReader = "\\\\?PnP?\\Notification";
state.dwCurrentState = (1 << 16);

Если ожидаемое приложением количество считывателей не совпадет с реальным, управление будет сразу же возвращено, а в верхнем слове dwEventState будет содержаться текущее количество считывателей.

Пример работы с функцией SCardGetStatusChange, учитывающий поведение описанное на GitHub.

...

  • получить список доступных ридеров с помощью функции SCardListReaders;
  • если ридер еще не появился – дождаться его появления с помощью функции SCardGetStatusChange;
  • вызов функции SCardConnect для нужного ридера с параметром dwShareMode == SCARD_SHARE_DIRECT;
  • вызов функции SCardControl с параметром RUTOKEN_CONTROL_CODE_START_NFC;
  • работа с Рутокеном;
  • вызов функции SCardControl с параметром RUTOKEN_CONTROL_CODE_STOP_NFC;
  • вызов функции SCardDisconnect.

...