У меня есть проект C ++ CLR с управляемым и неуправляемым кодом.В этом проекте я перебираю список криптопровайдеров и ищу подходящие.
Поэтому я использую функции
CryptEnumProvidersA
CryptAcquireContextA
У меня есть проект C #, который использует проект C ++.Когда я дважды вызываю метод для обхода списка криптопровайдеров, мое приложение вылетает.И он падает на CryptAcquireContextA.И только на "Aloaha Cryptographic Provider".
Когда я использую режим отладки, он также падает.Но когда я использую режим отладки, устанавливаю точку останова и пропускаю код с помощью F10, он отлично работает.
Когда я выполняю код C ++ для отдельного проекта, он отлично работает во всех случаях.
Так, У меня здесь два вопроса:
1) Как возможен такой сбой?И почему это происходит?
2) Как я могу вызвать CryptAcquireContextA для обработки такого сбоя?
Мои соображения.
1) Некоторые проблемы с памятью.Я искал утечки памяти, но ничего не нашел.
2) Я пытался использовать try-catch, но безрезультатно, CryptAcquireContextA все равно вылетает.Я хотел бы использовать такие функции, как «CryptIsValidProvider» или «CryptPingProvider», но я не нашел его.