05.05.2004 17:19:06Инициализация криптопровайдера Ответов: 1
Светланка
Здравствуйте, уважаемые форумцы.У меня есть такая проблема: пытаюсь получить контекст Microsoft Base и Microsoft Enhanced криптопровайдеров из-под Win98,но ничего не получается. Выдает ошибку( в числовом виде).Я знаю, что Enhanced-провайдер не поддерживается Win98,но почему не инициализируется Base?Если кто-нибудь может что-нибудь подсказать, буду очень благодарна. Так же попутно вопрос: как получить текст ошибки вместо ее кода?
Даже
 
Ответы:
05.05.2004 19:24:46chip
Инициализация Base:
// Get a handle to a PROV_RSA_FULL provider.

if(CryptAcquireContext(
&hCryptProv,
NULL,
MS_DEF_PROV,//base
//MS_ENHANCED_PROV, //enhanced
PROV_RSA_FULL,
0))
{
printf("CryptAcquireContext succeeded.\n");
} else
{
printf("Error:%x.\n",GetLastError());
}


Ошибку в строку:
Из msdn:
Example Code
The FormatMessage function can be used to obtain error message strings for the system error codes returned by GetLastError, as shown in the following sample code.

LPVOID lpMsgBuf;
if (!FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL ))
{
// Handle the error.
return;
}

// Process any inserts in lpMsgBuf.
// ...

// Display the string.
MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );

// Free the buffer.
LocalFree( lpMsgBuf );