Согласно MSDN существует специальное виртуальное устройство чтения \? PNP? \ Notification, которое позволяет получать уведомления о прибытии нового устройства чтения смарт-карт (через SCardGetStatusChange функция).
Мой код выглядит так (обработка ошибок и проверки опущены):
while (true)
{
SCardGetStatusChange(hContext, INFINITE, rgReaderStates, cReaders);
// rgReaderStates[0] - \\?PNP?\Notification
WorkWithNewReader();
}
Этот код прекрасно работает на нетерминальной сессии.
Но через терминальный сеанс Citrix функция SCardGetStatusChange немедленно возвращает значение, а rgReaderStates [0] .dwEventState равно 7 (SCARD_STATE_UNKNOWN).
Итак, как я могу получить уведомление о вставке нового считывателя смарт-карт?
Задача ещё не решена.
Других решений пока нет …