|
IvanKripta |
|
|
Статус: Новичок Группы: Участники
|
Доброго время суток, возникла такая проблема, при настройки носителей(етокен про32) в Крипто про CSP 3.0 Выдается такая ошибка «Диспетчер ресурсов смарт-карт не выполняется (0х8010001d). Установите etoken RTE версии % или выше.» ОС XP SP2. Etoken RTE Версия модуля 3.0.16. ОС лецензионная. Устанавливал на ноуте на своем, там у меня ZVER стоит, встало без проблем. Но принципиально установить на этой машине. Подскажите. Заранее спасибо. |
![]() |
|
|
Татьяна |
|
|
Статус: Сотрудник Группы: Участники Поблагодарили: 40 раз в 37 постах |
Здравствуйте. Сейчас актуальна версия eToken RTE 3.66, её можно скачать с сайта производителя. Кроме того, проверьте что у Вас запушена служба смарт-карт(панель управления — администрирование — службы). |
|
Татьяна |
|
![]() |
|
|
Manhill |
|
|
Статус: Участник Группы: Участники
|
У меня аналогичная проблема, служба смарт-карт запущена, но установить ни один считыватель не получается — при выборе предлагает установить с диска |
![]() |
|
|
Татьяна |
|
|
Статус: Сотрудник Группы: Участники Поблагодарили: 40 раз в 37 постах |
Если при этом Ваш компьютер подключен к интернету, Вы можете выбрать опцию «установить с диска» и в качестве источника модулей поддержки указать сервер КриптоПро. |
|
Татьяна |
|
![]() |
|
|
Manhill |
|
|
Статус: Участник Группы: Участники
|
Спасибо, все получилось |
![]() |
|
| Пользователи, просматривающие эту тему |
|
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Содержание
- 0x8010001d диспетчер ресурсов смарт карт не выполняется
- Установите контекст менеджера ресурсов для использования считывателя смарт-карт
- Ошибка 0x8010001D при подаче заявки на сертификат
- Сообщений 10
- #1 Тема от mk 2011-05-10 09:16:20
- Ошибка 0x8010001D при подаче заявки на сертификат
- #2 Ответ от Алексей Несененко 2011-05-10 09:44:23
- Re: Ошибка 0x8010001D при подаче заявки на сертификат
- #3 Ответ от mk 2011-05-10 09:58:27
- Re: Ошибка 0x8010001D при подаче заявки на сертификат
- #4 Ответ от Алексей Несененко 2011-05-10 10:47:51
- Re: Ошибка 0x8010001D при подаче заявки на сертификат
- #5 Ответ от mk 2011-05-10 11:45:59
- Re: Ошибка 0x8010001D при подаче заявки на сертификат
- #6 Ответ от Алексей Несененко 2011-05-10 11:54:03
- Re: Ошибка 0x8010001D при подаче заявки на сертификат
- #7 Ответ от mk 2011-05-10 13:03:53
- Re: Ошибка 0x8010001D при подаче заявки на сертификат
- Ошибка 2146435043 (Страница 1 из 2)
- Сообщений с 1 по 15 из 22
- #1 Тема от Вилка 2010-03-18 08:56:53
- Ошибка 2146435043
- #2 Ответ от Алексей Несененко 2010-03-18 10:03:18
- Re: Ошибка 2146435043
- #3 Ответ от Вилка 2010-03-18 11:51:31
- Re: Ошибка 2146435043
- #4 Ответ от Алексей Несененко 2010-03-18 12:25:44
- Re: Ошибка 2146435043
- 0x8010001d диспетчер ресурсов смарт карт не выполняется
0x8010001d диспетчер ресурсов смарт карт не выполняется
Проблема:
При добавлении новой карты в систему Indeed CM появляется сообщение об ошибке:
Диспетчер ресурсов смарт-карт не выполняется
Решение 1:
Убедитесь в том, что на рабочей станции, к которой подключена добавляемая смарт-карта, запущена и работает служба Смарт-карта. Для управления работой служб необходимо обладать правами Локального администратора.
Чтобы просмотреть состояние службы Смарт-карта выполните следующие действия (для русскоязычных ОС):
Откройте меню Панель управления — Администрирование — Службы, найдите в списке службу Смарт-карта
Для англоязычных ОС:
Откройте меню Control Panel — Administrative Tools — Services найдите службу Smart Card
Решение 2:
Убедитесь в том, что адрес сервера Indeed CM добавлен в зону Местная интрасеть (Local Intranet) браузера рабочей станции, к которой подключена смарт-карта.
Для русскоязычных ОС: Свойства браузера — Безопасность — Местная интрасеть — Сайты. Добавить зону следующий узел: https://»DNS-имя сервера CM» и wss://localhost/
Для англоязычных ОС: Internet options — Security — Local intranet — Sites . 
Источник
Установите контекст менеджера ресурсов для использования считывателя смарт-карт
Я занимаюсь разработкой приложения c++ с использованием Visual Studio 2017.
Я использую библиотеку Windows winscard. Я начинаю с простого проекта, в котором я вызываю функцию SCardEstablishContext в качестве первого шага, необходимого для чтения смарт-карты.
Ниже приведен фрагмент кода, который я использую:
Что я знаю, так это то, что эта функция использует службу Windows под названием «Смарт-карта», чтобы получить область, в которой выполняются операции с базой данных (карты чтения / записи).
К сожалению, это простое приложение работает (то есть возвращает код SCARD_S_SUCCESS ) только в среде Windows 7. Во всех системах Windows 10, которые я тестировал, код возврата всегда 0x8010001DL связан с определением SCARD_E_NO_SERVICE , которое утверждает:
Диспетчер ресурсов смарт-карт не работает.
В системах Windows 7 программа работает без прав администратора, в системах Windows 10 я тоже пытался с правами администратора, но ошибка та же.
В каждой системе Windows 10, которую я тестировал, я вручную запускал службу «Смарт-карта» перед тестированием моей программы и проверял, что она все еще работает во время тестирования.
В системах Windows 7 и Windows 10 у меня нет подключенного устройства чтения смарт-карт.
Файл winscard.lib , который я использую, поставляется с Microsoft Windows SDK версией 10.0.17763.0
Есть что-то еще, чтобы заставить его работать с Windows 10?
Источник
Ошибка 0x8010001D при подаче заявки на сертификат
Форум Рутокен → Техническая поддержка пользователей → Ошибка 0x8010001D при подаче заявки на сертификат
Сообщений 10
#1 Тема от mk 2011-05-10 09:16:20
- mk
- Посетитель
- Неактивен
Ошибка 0x8010001D при подаче заявки на сертификат
Не могу найти решение проблемы: при подаче заявки на сертификат после ввода ПИН-кода, долго думает и выдает «непредвиденную ошибку» 0x8010001D.
Система: Win2003 Server Standart SP2 x64
Подскажите где примерно искать?
#2 Ответ от Алексей Несененко 2011-05-10 09:44:23
- Алексей Несененко
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
Вы используете Microsoft CA?
#3 Ответ от mk 2011-05-10 09:58:27
- mk
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
#4 Ответ от Алексей Несененко 2011-05-10 10:47:51
- Алексей Несененко
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
Какова структура домена — DC и СА на одном компьютере?
Какой шаблон сертификата используется при выписывании?
#5 Ответ от mk 2011-05-10 11:45:59
- mk
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
Какова структура домена — DC и СА на одном компьютере?
Какой шаблон сертификата используется при выписывании?
Все на одном компьютере. Все делалось по инструкции с установочного диска. Шаблон сертификата: «Пользователь со смарт-картой».
До установки другого сервера и перехода на x64 платформу все работало отлично.
#6 Ответ от Алексей Несененко 2011-05-10 11:54:03
- Алексей Несененко
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
сертификат выписывается через консоль или вебинтерфейс?
Что пишется в логах системы по поводу этой ошибки?
Проверьте службу смарт карт работает ли она и правильны ли ее настройки.
#7 Ответ от mk 2011-05-10 13:03:53
- mk
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
Выписываю через веб-интерфейс, как по другому не знаю, но думаю стоит попробовать?
В логах системы записей относящихся к этому нет
Служба работает, но как проверить правильность настроек?
Источник
Ошибка 2146435043 (Страница 1 из 2)
Сообщений с 1 по 15 из 22
#1 Тема от Вилка 2010-03-18 08:56:53
- Вилка
- Посетитель
- Неактивен
Ошибка 2146435043
Во время установки готового решения КриптоПро+Рутокен возникает ошибка «Не удается зарегистрировать модуль C:windowssystem32rtCSP.dll. HRESULT -2146435043»
Подскажите, в какую сторону копать?
Со службой смарт-карт всё хорошо.
#2 Ответ от Алексей Несененко 2010-03-18 10:03:18
- Алексей Несененко
- Посетитель
- Неактивен
Re: Ошибка 2146435043
Установка производится локально или удаленно?
#3 Ответ от Вилка 2010-03-18 11:51:31
- Вилка
- Посетитель
- Неактивен
Re: Ошибка 2146435043
Локально. С правами администратора.
#4 Ответ от Алексей Несененко 2010-03-18 12:25:44
- Алексей Несененко
- Посетитель
- Неактивен
Re: Ошибка 2146435043
Проверьте, пожалуйста, настройки службы смарт-карт.
Служба «Смарт-карты» должна быть запущена.
До службы Смарт-карт можно добраться так:
— Выполните правый щелчок на иконке Мой компьютер (My Computer), расположенной на рабочем столе, и выберите Управление(Manage).
— Раскройте пункт Службы и приложения(Services and Applications) и нажмите Службы (Services).
— В правой части окна сделайте правый щелчок на пункте Смарт-карты (Smart Card).
— Свойства
— Закладка .Должно быть выбрано и в окошке NTAUTHORITYLocalService >
если же нет, то надо нажать кнопку . Ввести буквы LO и нажать кнопку . Вместо букв LO появится LOCAL SERVICE. Нажимаете кнопку
Источник
0x8010001d диспетчер ресурсов смарт карт не выполняется
Проблема:
При добавлении новой карты в систему Indeed CM появляется сообщение об ошибке:
Диспетчер ресурсов смарт-карт не выполняется
Решение 1:
Убедитесь в том, что на рабочей станции, к которой подключена добавляемая смарт-карта, запущена и работает служба Смарт-карта. Для управления работой служб необходимо обладать правами Локального администратора.
Чтобы просмотреть состояние службы Смарт-карта выполните следующие действия (для русскоязычных ОС):
Откройте меню Панель управления — Администрирование — Службы, найдите в списке службу Смарт-карта
Для англоязычных ОС:
Откройте меню Control Panel — Administrative Tools — Services найдите службу Smart Card
Решение 2:
Убедитесь в том, что адрес сервера Indeed CM добавлен в зону Местная интрасеть (Local Intranet) браузера рабочей станции, к которой подключена смарт-карта.
Для русскоязычных ОС: Свойства браузера — Безопасность — Местная интрасеть — Сайты. Добавить зону следующий узел: https://»DNS-имя сервера CM» и wss://localhost/
Для англоязычных ОС: Internet options — Security — Local intranet — Sites . 
Источник
Содержание
- Ошибка 0x8010001D при подаче заявки на сертификат
- Сообщений 10
- #1 Тема от mk 2011-05-10 09:16:20
- Ошибка 0x8010001D при подаче заявки на сертификат
- #2 Ответ от Алексей Несененко 2011-05-10 09:44:23
- Re: Ошибка 0x8010001D при подаче заявки на сертификат
- #3 Ответ от mk 2011-05-10 09:58:27
- Re: Ошибка 0x8010001D при подаче заявки на сертификат
- #4 Ответ от Алексей Несененко 2011-05-10 10:47:51
- Re: Ошибка 0x8010001D при подаче заявки на сертификат
- #5 Ответ от mk 2011-05-10 11:45:59
- Re: Ошибка 0x8010001D при подаче заявки на сертификат
- #6 Ответ от Алексей Несененко 2011-05-10 11:54:03
- Re: Ошибка 0x8010001D при подаче заявки на сертификат
- #7 Ответ от mk 2011-05-10 13:03:53
- Re: Ошибка 0x8010001D при подаче заявки на сертификат
- Unable to establish scard context error 0x8010001d
- Answered by:
- Question
- Answers
- All replies
- Unable to establish scard context error 0x8010001d
- Answered by:
- Question
- Answers
- All replies
- Unable to establish scard context error 0x8010001d
- Asked by:
- Question
- Unable to establish scard context error 0x8010001d
- Вопрос
- Ответы
- Все ответы
Ошибка 0x8010001D при подаче заявки на сертификат
Форум Рутокен → Техническая поддержка пользователей → Ошибка 0x8010001D при подаче заявки на сертификат
Сообщений 10
#1 Тема от mk 2011-05-10 09:16:20
- mk
- Посетитель
- Неактивен
Ошибка 0x8010001D при подаче заявки на сертификат
Не могу найти решение проблемы: при подаче заявки на сертификат после ввода ПИН-кода, долго думает и выдает «непредвиденную ошибку» 0x8010001D.
Система: Win2003 Server Standart SP2 x64
Подскажите где примерно искать?
#2 Ответ от Алексей Несененко 2011-05-10 09:44:23
- Алексей Несененко
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
Вы используете Microsoft CA?
#3 Ответ от mk 2011-05-10 09:58:27
- mk
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
#4 Ответ от Алексей Несененко 2011-05-10 10:47:51
- Алексей Несененко
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
Какова структура домена — DC и СА на одном компьютере?
Какой шаблон сертификата используется при выписывании?
#5 Ответ от mk 2011-05-10 11:45:59
- mk
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
Какова структура домена — DC и СА на одном компьютере?
Какой шаблон сертификата используется при выписывании?
Все на одном компьютере. Все делалось по инструкции с установочного диска. Шаблон сертификата: «Пользователь со смарт-картой».
До установки другого сервера и перехода на x64 платформу все работало отлично.
#6 Ответ от Алексей Несененко 2011-05-10 11:54:03
- Алексей Несененко
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
сертификат выписывается через консоль или вебинтерфейс?
Что пишется в логах системы по поводу этой ошибки?
Проверьте службу смарт карт работает ли она и правильны ли ее настройки.
#7 Ответ от mk 2011-05-10 13:03:53
- mk
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
Выписываю через веб-интерфейс, как по другому не знаю, но думаю стоит попробовать?
В логах системы записей относящихся к этому нет
Служба работает, но как проверить правильность настроек?
Источник
Unable to establish scard context error 0x8010001d
This forum is closed. Thank you for your contributions.
Answered by:
Question
It is reproducible.
Is there anyway to fix the problem?
However, go back to machine A and login into A’s desktop, SCardEstablishContext return successful.
Answers
Thank you for your post! I would suggest posting your question in one of the MS Forums,
Have a great day!
Thank you for your post! I would suggest posting your question in one of the MS Forums,
Have a great day!
Please provide more precise steps as to how to reproduce this issue.
did you able to find the root cause of your issue? I am facing similar kind of issue intermittently.
Your Issue:
—————
I have my Window Service running on machine A. The Window Service is to detect smart card device.
From machine B, I RDP to machine A and login into machine A’s desktop and then close the RDP session. Go back to machine A(at the lock screen) , I plugged in a smart card device, my window service fail to detect the device because SCardEstablishContext always return 0x8010001d( SCARD_E_NO_SERVICE ). I am using sc command and sure that SCardSvr is still running on machine A. Plug out and plug in the smart card device again, the problem still happens. It is reproducible.
Is there anyway to fix the problem?
However, go back to machine A and login into A’s desktop, SCardEstablishContext return successful.
Источник
Unable to establish scard context error 0x8010001d
This forum is closed. Thank you for your contributions.
Answered by:
Question
It is reproducible.
Is there anyway to fix the problem?
However, go back to machine A and login into A’s desktop, SCardEstablishContext return successful.
Answers
Thank you for your post! I would suggest posting your question in one of the MS Forums,
Have a great day!
Thank you for your post! I would suggest posting your question in one of the MS Forums,
Have a great day!
Please provide more precise steps as to how to reproduce this issue.
did you able to find the root cause of your issue? I am facing similar kind of issue intermittently.
Your Issue:
—————
I have my Window Service running on machine A. The Window Service is to detect smart card device.
From machine B, I RDP to machine A and login into machine A’s desktop and then close the RDP session. Go back to machine A(at the lock screen) , I plugged in a smart card device, my window service fail to detect the device because SCardEstablishContext always return 0x8010001d( SCARD_E_NO_SERVICE ). I am using sc command and sure that SCardSvr is still running on machine A. Plug out and plug in the smart card device again, the problem still happens. It is reproducible.
Is there anyway to fix the problem?
However, go back to machine A and login into A’s desktop, SCardEstablishContext return successful.
Источник
Unable to establish scard context error 0x8010001d
This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.
Asked by:
Question
I’m trying to communicate with a smartcard on a Win10 system from a Windows service (which is running as «local system»).
When calling `SCardEstablishContext` to initialize the context the return value is `SCARD_E_NO_SERVICE`, even though the smartcard service «SCardSvr» is shown as running by the task manager.
If I try to start «SCardSvr» in code calling `GetLastError()` returns 1056, which corresponds to `ERROR_SERVICE_ALREADY_RUNNING` («An instance of the service is already running.»)
The workaround listed here https://blogs.msdn.microsoft.com/alejacma/2011/05/19/scardestablishcontext-fails-with-scard_e_no_service-error/ unfortunately does not change anything.
Here’s the code that I’m using:
I would expect `SCardEstablishContext` to return something else other than `SCARD_E_NO_SERVICE` if the smartcard service «SCardSvr» supposedly is running.
Источник
Unable to establish scard context error 0x8010001d
Вопрос
It is reproducible.
Is there anyway to fix the problem?
However, go back to machine A and login into A’s desktop, SCardEstablishContext return successful.
Ответы
Thank you for your post! I would suggest posting your question in one of the MS Forums,
Have a great day!
Все ответы
Thank you for your post! I would suggest posting your question in one of the MS Forums,
Have a great day!
Please provide more precise steps as to how to reproduce this issue.
did you able to find the root cause of your issue? I am facing similar kind of issue intermittently.
Your Issue:
—————
I have my Window Service running on machine A. The Window Service is to detect smart card device.
From machine B, I RDP to machine A and login into machine A’s desktop and then close the RDP session. Go back to machine A(at the lock screen) , I plugged in a smart card device, my window service fail to detect the device because SCardEstablishContext always return 0x8010001d( SCARD_E_NO_SERVICE ). I am using sc command and sure that SCardSvr is still running on machine A. Plug out and plug in the smart card device again, the problem still happens. It is reproducible.
Is there anyway to fix the problem?
However, go back to machine A and login into A’s desktop, SCardEstablishContext return successful.
Источник
|
aslanovsergey |
|
|
Статус: Новичок Группы: Участники
|
Добавляю eToken PRO 32K , и получаю ошибку: Служа Смарт-Карты запущена, eToken RTE 3.66 установить не получилось, говорит что уже стоит более свежая версия В чем может быть причина? Устанавливаю все это на Windows XP Mode |
![]() |
|
| Пользователи, просматривающие эту тему |
|
Guest |
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Страницы 1
Чтобы отправить ответ, нужно авторизоваться или зарегистрироваться
#1 2011-05-10 09:16:20
- mk
- Посетитель
- Неактивен
Ошибка 0x8010001D при подаче заявки на сертификат
Здравствуйте!
Не могу найти решение проблемы: при подаче заявки на сертификат после ввода ПИН-кода, долго думает и выдает «непредвиденную ошибку» 0x8010001D.
Система: Win2003 Server Standart SP2 x64
Подскажите где примерно искать?
Спасибо.
#2 Ответ от Алексей Несененко 2011-05-10 09:44:23
- Алексей Несененко
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
Вы используете Microsoft CA?
#3 Ответ от mk 2011-05-10 09:58:27
- mk
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
Алексей Несененко пишет:
Вы используете Microsoft CA?
Да.
#4 Ответ от Алексей Несененко 2011-05-10 10:47:51
- Алексей Несененко
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
Какова структура домена — DC и СА на одном компьютере?
Какой шаблон сертификата используется при выписывании?
#5 Ответ от mk 2011-05-10 11:45:59
- mk
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
Алексей Несененко пишет:
Какова структура домена — DC и СА на одном компьютере?
Какой шаблон сертификата используется при выписывании?
Все на одном компьютере. Все делалось по инструкции с установочного диска. Шаблон сертификата: «Пользователь со смарт-картой».
До установки другого сервера и перехода на x64 платформу все работало отлично.
#6 Ответ от Алексей Несененко 2011-05-10 11:54:03
- Алексей Несененко
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
сертификат выписывается через консоль или вебинтерфейс?
Что пишется в логах системы по поводу этой ошибки?
Проверьте службу смарт карт работает ли она и правильны ли ее настройки.
#7 Ответ от mk 2011-05-10 13:03:53
- mk
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
Выписываю через веб-интерфейс, как по другому не знаю, но думаю стоит попробовать?
В логах системы записей относящихся к этому нет
Служба работает, но как проверить правильность настроек?
#8 Ответ от Алексей Несененко 2011-05-10 13:16:39
- Алексей Несененко
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
настройки службы можно посмотреть здесь — https://forum.rutoken.ru/topic/1472/
#9 Ответ от mk 2011-05-11 22:00:59
- mk
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
исправил на NT AUTHORITYLocalService, так как служба была установлена самостоятельно, но проблема с ошибкой осталась(
подскажите пжлста, где еще можно посмотреть?
#10 Ответ от Ирина Богданова 2011-05-12 06:46:03
- Ирина Богданова
- Посетитель
- Неактивен
Re: Ошибка 0x8010001D при подаче заявки на сертификат
1. Подскажите, пожалуйста, Вы работаете с указанным компьютером с Win2003 Server Standart SP2 x64 локально или удалённо (например, посредством RDP)?
2. Каким образом Вы устанавливали самостоятельно службу?
Сообщений 10
Страницы 1
Чтобы отправить ответ, нужно авторизоваться или зарегистрироваться
I’m trying to play with a smart card using Windows 10/Access 2016 and VBA, and I have come across just about every example I could possibly find of how to make this happen, including:
- https://www.utteraccess.com/forum/Acccess-Card-Readers-t1986575.html
- Getting started with smartcard & ISO 7816 in excel vba ( SCardEstablishContext )
- https://learn.microsoft.com/en-us/windows/win32/api/winscard/ (for function reference), and
- Authentication Return Values and System Error Codes just to figure out what’s going sideways.
The issue that I’m having is that SCardEstablishContext is returning 0x0 - SCARD_S_SUCCESS, but when I pass the SCARDCONTEXT over to SCardIsValidContext, it’s returning 0x6 - ERROR_INVALID_HANDLE.
Here’s the relevant parts of the code that I’m using (ignore AuthDict and SCardAuthCode as those are just helper functions to decode whatever status the other functions return)
Public AuthDict As Scripting.Dictionary
Public Const SCARD_SCOPE_USER As Long = &H0
Public Const SCARD_SCOPE_SYSTEM As Long = &H2
Public Const SCARD_SHARE_SHARED As Long = &H2
Public Const SCARD_SHARE_EXCLUSIVE As Long = &H1
Public Const SCARD_SHARE_DIRECT As Long = &H3
Public Const SCARD_PROTOCOL_T0 As Long = &H1
Public Const SCARD_PROTOCOL_T1 As Long = &H2
Public Const SCARD_DEFAULT_READERS As String = "SCard$DefaultReaders00"
Public Const SCARD_ALL_READERS As String = "SCard$AllReaders00"
Public Type SCARDCONTEXT
CardContext1 As Long
ReaderName As String
End Type
Public Declare PtrSafe Function SCardEstablishContext Lib "winscard.dll" ( _
ByVal dwScope As Long, _
ByVal pvReserved1 As Long, _
ByVal pvReserved2 As Long, _
ByRef phContext As SCARDCONTEXT _
) As Long
Public Declare PtrSafe Function SCardIsValidContext Lib "winscard.dll" ( _
ByRef hContext As SCARDCONTEXT _
) As Long
Public Sub GetContext()
Dim lreturn As Long
Dim RSVD1 As Long, RSVD2 As Long
Dim myContext As SCARDCONTEXT
Set AuthDict = New Scripting.Dictionary
Debug.Print "-----------------------------------------------------------------------------"
lreturn = SCardEstablishContext(SCARD_SCOPE_USER, RSVD1, RSVD2, myContext)
SCardAuthCode lreturn
Debug.Print "SCardEstablishContext:" & vbCrLf & _
" Return = " & AuthDict("hr") & vbCrLf & _
" Value = " & AuthDict("hc") & vbCrLf & _
" Description = " & AuthDict("hd") & vbCrLf & _
" myContext.CardContext1 = " & myContext.CardContext1 & vbCrLf & _
" myContext.ReaderName = " & Chr(34) & myContext.ReaderName & Chr(34) & vbCrLf
lreturn = SCardIsValidContext(myContext)
SCardAuthCode lreturn
Debug.Print "SCardIsValidContext:" & vbCrLf & _
" Return = " & AuthDict("hr") & vbCrLf & _
" Value = " & AuthDict("hc") & vbCrLf & _
" Description = " & AuthDict("hd") & vbCrLf
If lreturn <> 0 Then GoTo GetContextExit
GetContextExit:
Debug.Print "-----------------------------------------------------------------------------" & vbCrLf
End Sub
Run the Sub, here’s the output:
-----------------------------------------------------------------------------
SCardEstablishContext:
Return = 0x00000000
Value = SCARD_S_SUCCESS
Description = No error was encountered.
myContext.CardContext1 = -855572480
myContext.ReaderName = ""
SCardIsValidContext:
Return = 0x00000006
Value = ERROR_INVALID_HANDLE
Description = The handle is invalid.
-----------------------------------------------------------------------------
It seems that I’m not setting myContext correctly, but I’m at a loss for what it should actually look like.
Also, here’s the code for SCardAuthCode if you want the pretty return:
'https://learn.microsoft.com/en-us/windows/win32/secauthn/authentication-return-values?redirectedfrom=MSDN#smart_card_return_values
'https://learn.microsoft.com/en-us/windows/win32/debug/system-error-codes--0-499-?redirectedfrom=MSDN
Public Function SCardAuthCode(lreturn As Long)
AuthDict.RemoveAll
Dim hreturn As String, hc As String, hd As String
hreturn = "0x" & Right("0000000" & Hex(lreturn), 8)
Select Case hreturn
Case "0x00000000": hc = "SCARD_S_SUCCESS": hd = "No error was encountered."
Case "0x00000006": hc = "ERROR_INVALID_HANDLE": hd = "The handle is invalid."
Case "0x00000109": hc = "ERROR_BROKEN_PIPE": hd = "The client attempted a smart card operation in a remote session, such as a client session running on a terminal server, and the operating system in use does not support smart card redirection."
Case "0x80100001": hc = "SCARD_F_INTERNAL_ERROR": hd = "An internal consistency check failed."
Case "0x80100002": hc = "SCARD_E_CANCELLED": hd = "The action was canceled by an SCardCancel request."
Case "0x80100003": hc = "SCARD_E_INVALID_HANDLE": hd = "The supplied handle was not valid."
Case "0x80100004": hc = "SCARD_E_INVALID_PARAMETER": hd = "One or more of the supplied parameters could not be properly interpreted."
Case "0x80100005": hc = "SCARD_E_INVALID_TARGET": hd = "Registry startup information is missing or not valid."
Case "0x80100006": hc = "SCARD_E_NO_MEMORY": hd = "Not enough memory available to complete this command."
Case "0x80100007": hc = "SCARD_F_WAITED_TOO_LONG": hd = "An internal consistency timer has expired."
Case "0x80100008": hc = "SCARD_E_INSUFFICIENT_BUFFER": hd = "The data buffer for returned data is too small for the returned data."
Case "0x80100009": hc = "SCARD_E_UNKNOWN_READER": hd = "The specified reader name is not recognized."
Case "0x8010000A": hc = "SCARD_E_TIMEOUT": hd = "The user-specified time-out value has expired."
Case "0x8010000B": hc = "SCARD_E_SHARING_VIOLATION": hd = "The smart card cannot be accessed because of other outstanding connections."
Case "0x8010000C": hc = "SCARD_E_NO_SMARTCARD": hd = "The operation requires a smart card, but no smart card is currently in the device."
Case "0x8010000D": hc = "SCARD_E_UNKNOWN_CARD": hd = "The specified smart card name is not recognized."
Case "0x8010000E": hc = "SCARD_E_CANT_DISPOSE": hd = "The system could not dispose of the media in the requested manner."
Case "0x8010000F": hc = "SCARD_E_PROTO_MISMATCH": hd = "The requested protocols are incompatible with the protocol currently in use with the card."
Case "0x80100010": hc = "SCARD_E_NOT_READY": hd = "The reader or card is not ready to accept commands."
Case "0x80100011": hc = "SCARD_E_INVALID_VALUE": hd = "One or more of the supplied parameter values could not be properly interpreted."
Case "0x80100012": hc = "SCARD_E_SYSTEM_CANCELLED": hd = "The action was canceled by the system, presumably to log off or shut down."
Case "0x80100013": hc = "SCARD_F_COMM_ERROR": hd = "An internal communications error has been detected."
Case "0x80100014": hc = "SCARD_F_UNKNOWN_ERROR": hd = "An internal error has been detected, but the source is unknown."
Case "0x80100015": hc = "SCARD_E_INVALID_ATR": hd = "An ATR string obtained from the registry is not a valid ATR string."
Case "0x80100016": hc = "SCARD_E_NOT_TRANSACTED": hd = "An attempt was made to end a nonexistent transaction."
Case "0x80100017": hc = "SCARD_E_READER_UNAVAILABLE": hd = "The specified reader is not currently available for use."
Case "0x80100018": hc = "SCARD_P_SHUTDOWN": hd = "The operation has been aborted to allow the server application to exit."
Case "0x80100019": hc = "SCARD_E_PCI_TOO_SMALL": hd = "The PCI receive buffer was too small."
Case "0x8010001A": hc = "SCARD_E_READER_UNSUPPORTED": hd = "The reader driver does not meet minimal requirements for support."
Case "0x8010001B": hc = "SCARD_E_DUPLICATE_READER": hd = "The reader driver did not produce a unique reader name."
Case "0x8010001C": hc = "SCARD_E_CARD_UNSUPPORTED": hd = "The smart card does not meet minimal requirements for support."
Case "0x8010001D": hc = "SCARD_E_NO_SERVICE": hd = "The smart card resource manager is not running."
Case "0x8010001E": hc = "SCARD_E_SERVICE_STOPPED": hd = "The smart card resource manager has shut down."
Case "0x8010001F": hc = "SCARD_E_UNEXPECTED": hd = "An unexpected card error has occurred."
Case "0x80100020": hc = "SCARD_E_ICC_INSTALLATION": hd = "No primary provider can be found for the smart card."
Case "0x80100021": hc = "SCARD_E_ICC_CREATEORDER": hd = "The requested order of object creation is not supported."
Case "0x80100022": hc = "SCARD_E_UNSUPPORTED_FEATURE": hd = "This smart card does not support the requested feature."
Case "0x80100023": hc = "SCARD_E_DIR_NOT_FOUND": hd = "The specified directory does not exist in the smart card."
Case "0x80100024": hc = "SCARD_E_FILE_NOT_FOUND": hd = "The specified file does not exist in the smart card."
Case "0x80100025": hc = "SCARD_E_NO_DIR": hd = "The supplied path does not represent a smart card directory."
Case "0x80100026": hc = "SCARD_E_NO_FILE": hd = "The supplied path does not represent a smart card file."
Case "0x80100027": hc = "SCARD_E_NO_ACCESS": hd = "Access is denied to the file."
Case "0x80100028": hc = "SCARD_E_WRITE_TOO_MANY": hd = "An attempt was made to write more data than would fit in the target object."
Case "0x80100029": hc = "SCARD_E_BAD_SEEK": hd = "An error occurred in setting the smart card file object pointer."
Case "0x8010002A": hc = "SCARD_E_INVALID_CHV": hd = "The supplied PIN is incorrect."
Case "0x8010002B": hc = "SCARD_E_UNKNOWN_RES_MNG": hd = "An unrecognized error code was returned."
Case "0x8010002C": hc = "SCARD_E_NO_SUCH_CERTIFICATE": hd = "The requested certificate does not exist."
Case "0x8010002D": hc = "SCARD_E_CERTIFICATE_UNAVAILABLE": hd = "The requested certificate could not be obtained."
Case "0x8010002E": hc = "SCARD_E_NO_READERS_AVAILABLE": hd = "No smart card reader is available."
Case "0x8010002F": hc = "SCARD_E_COMM_DATA_LOST": hd = "A communications error with the smart card has been detected."
Case "0x80100030": hc = "SCARD_E_NO_KEY_CONTAINER": hd = "The requested key container does not exist on the smart card."
Case "0x80100031": hc = "SCARD_E_SERVER_TOO_BUSY": hd = "The smart card resource manager is too busy to complete this operation."
Case "0x80100032": hc = "SCARD_E_PIN_CACHE_EXPIRED": hd = "The smart card PIN cache has expired."
Case "0x80100033": hc = "SCARD_E_NO_PIN_CACHE": hd = "The smart card PIN cannot be cached."
Case "0x80100034": hc = "SCARD_E_READ_ONLY_CARD": hd = "The smart card is read-only and cannot be written to."
Case "0x80100065": hc = "SCARD_W_UNSUPPORTED_CARD": hd = "The reader cannot communicate with the card, due to ATR string configuration conflicts."
Case "0x80100066": hc = "SCARD_W_UNRESPONSIVE_CARD": hd = "The smart card is not responding to a reset."
Case "0x80100067": hc = "SCARD_W_UNPOWERED_CARD": hd = "Power has been removed from the smart card, so that further communication is not possible."
Case "0x80100068": hc = "SCARD_W_RESET_CARD": hd = "The smart card was reset."
Case "0x80100069": hc = "SCARD_W_REMOVED_CARD": hd = "The smart card has been removed, so further communication is not possible."
Case "0x8010006A": hc = "SCARD_W_SECURITY_VIOLATION": hd = "Access was denied because of a security violation."
Case "0x8010006B": hc = "SCARD_W_WRONG_CHV": hd = "The card cannot be accessed because the wrong PIN was presented."
Case "0x8010006C": hc = "SCARD_W_CHV_BLOCKED": hd = "The card cannot be accessed because the maximum number of PIN entry attempts has been reached."
Case "0x8010006D": hc = "SCARD_W_EOF": hd = "The end of the smart card file has been reached."
Case "0x8010006E": hc = "SCARD_W_CANCELLED_BY_USER": hd = "The action was canceled by the user."
Case "0x8010006F": hc = "SCARD_W_CARD_NOT_AUTHENTICATED": hd = "No PIN was presented to the smart card."
Case "0x80100070": hc = "SCARD_W_CACHE_ITEM_NOT_FOUND": hd = "The requested item could not be found in the cache."
Case "0x80100071": hc = "SCARD_W_CACHE_ITEM_STALE": hd = "The requested cache item is too old and was deleted from the cache."
Case "0x80100072": hc = "SCARD_W_CACHE_ITEM_TOO_BIG": hd = "The new cache item exceeds the maximum per-item size defined for the cache."
Case Else: hc = "UNKNOWN VALUE": hd = "Unknown value."
End Select
AuthDict.Add "hr", hreturn
AuthDict.Add "hc", hc
AuthDict.Add "hd", hd
End Function







