Операции с ридерами и апплетами

JCReadersEnumClose

HRESULT JCReadersEnumClose(HReaderEnum hEnum)

Закрывает перечисление смарт-кард ридеров, установленных в системе.

Параметры:
  • hEnum (in) – дескриптор перечисления.
Результат:

  • E_POINTER – недопустимый указатель.
  • E_INVALIDARG – один или более аргументов не верны.

JCReadersEnumNext

HRESULT JCReadersEnumNext(HReaderEnum hEnum, PReaderInf pReaderInfo)

Возвращает следующий элемент из перечисления смарт-кард ридеров, установленных в системе.

Параметры:
  • hEnum (in) – дескриптор перечисления.
  • pReaderInfo (out) – указатель на структуру TReaderInf.
Результат:

  • E_POINTER – недопустимый указатель.
  • E_INVALIDARG – один или более аргументов не верны.
  • HRESULT_FROM_WIN32(ERROR_NO_MORE_ITEMS) – перечисление завершено.

JCReadersEnumOpen

HRESULT JCReadersEnumOpen(HReaderEnum * phEnum)

Открывает перечисление смарт-кард ридеров, установленных в системе.

Параметры:
  • phEnum (out) – указатель на дескриптор перечисления.
Результат:

  • E_POINTER – недопустимый указатель.
  • Ошибки из SCard API

JCRootDirOpen

HRESULT JCRootDirOpen(HDir * phRoot, HToken hToken, WORD wVendor)

Открывает корневую директорию в файловой системе токена. Если корневой директории не существует на данном токене, то эта функция её создаст. Поэтому перед вызовом необходимо вызвать JCTokenLogin().

Параметры:
  • phRoot (out) – указатель на дескриптор объекта Dir.
  • hToken (in) – дескриптор объекта токена.
  • wVendor (in) – идентификатор вендора.
Результат:

  • E_POINTER – недопустимый указатель.
  • E_INVALIDARG – один или более аргументов не верны.
  • E_JC_NOTLOGGEDIN – пользователь не залогинен.

JCSelectApplet

HRESULT JCSelectApplet(HToken hToken, WORD wApplet)

Осуществляет подключение указанного апплета к объекту дескриптора токена.

Параметры:
  • hToken (in) – дескриптор объекта токена.
  • wApplet (in) – тип апплета.
Результат:

  • E_POINTER – недопустимый указатель.
  • E_INVALIDARG – один или более аргументов не верны.

Список доступных апплетов в порядке приоритетности

#define APDU_TAPPLET_DATASTORE    (WORD)0x2205
#define APDU_TAPPLET_R2           (WORD)0x1001
#define APDU_TAPPLET_PRO          (WORD)0x1002
#define APDU_TAPPLET_PROJAVA      (WORD)0x2001
#define APDU_TAPPLET_ATHENA       (WORD)0x2101
#define APDU_TAPPLET_GOST         (WORD)0x2202