Как создаются "дружественные имена" для считывателей смарт-карт PCSC?
Я использую WinSCard, чтобы перечислить всех читателей, что дает мне такой список:
ASK RDR4x7 0
SCM Microsystems Inc. SCR3320 USB Smart Card Reader 0
SCM Microsystems Inc. SCR3320 USB Smart Card Reader 1
SCM Microsystems Inc. SCR3320 USB Smart Card Reader 2
Что здорово, но я понятия не имею, какое имя принадлежит какому картридеру.
Откуда эти имена? Как они построены?
Что я нашел до сих пор: в реестре есть HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
ключ. В этом ключе вы можете найти подраздел, который соответствует "услуге" устройства чтения карт (которую я нашел, запросив реестр WMI). Например: сервис для SCM Microsystems Inc. SCR3320 USB Smart Card Reader
читатели SCR3XX2K
,
Этот подключ (SCR3XX2K
) есть другой подраздел Enum
, который имеет несколько интересных значений:
Count
: DWORD, количество подключенных читателей0
,1
,2
: STRING, аппаратный идентификатор устройства
Я предполагаю, что это числа, добавленные к "дружественным именам", но я не могу понять, как строится строка имени. Мне нужно это, чтобы сопоставить идентификаторы аппаратных устройств (которые я получаю через WMI) с их понятным именем.
Итак, какой шаблон используется для создания "дружественного имени" для устройства чтения смарт-карт и откуда берутся значения?
1 ответ
Они являются объединением этих 3 атрибутов:
SCARD_ATTR_VENDOR_NAME
SCARD_ATTR_VENDOR_IFD_TYPE
SCARD_ATTR_DEVICE_UNIT
Статья TechNet События смарт-карт документирует это в разделе "Имя устройства чтения смарт-карт".
SCARD_???
атрибуты запрашиваются с SCardGetAttrib
функция
SCARD_ATTR_DEVICE_SYSTEM_NAME
атрибут возвращает friendly name
как те, которые вы получаете, перечисляя читателей.
Список читателей Smart Card существует в реестре под HKLM\SOFTWARE\Microsoft\Cryptography\Calais\Readers
, Считыватели добавляются в этот список с помощью файла INF драйвера SCR, поэтому во время установки драйвера.
Связь между устройством и читателем может быть найдена в классе SmartCardReader {50DD5230-BA8A-11D1-BF5D-0000F805F530}
под HKLM\SYSTEM\CurrentControlSet\Control\Class\{50DD5230-BA8A-11D1-BF5D-0000F805F530}
,