Я работаю над проектом мини-драйвера, который может генерировать пару ключей в смарт-карте.
Чтобы сгенерировать пару ключей из тестового приложения, я должен проверить, существует ли пара ключей с указанным именем контейнера, и в случае обнаружения я должен удалить это.
Чтобы проверить, существует ли контейнер с тем же именем, которое я использовал NCryptOpenKey
Status = NCryptOpenKey(
hProvider,
&hKey,
wszContainerName,
0, // dwLegacyKeySpec
0 // dwFlags
);
Он отлично работает и возвращает дескриптор ключа, если в моей смарт-карте есть контейнер, доступный для моего минидрайвера.
Но если в смарт-карте нет пары ключей с такой же меткой, она показывает диалоговое окно, подобное этому, для выбора смарт-карты.
Естественно ли показывать диалог выбора карты?
Как перестать показывать диалог выбора карты из минидрайвера? NCryptOpenKey может просто вернуться
SCARD_E_NO_KEY_CONTAINER (0x80100030)
Задача ещё не решена.
Других решений пока нет …