| ||||
| ||||
Здравствуйте, уважаемые форумцы.У меня есть такая проблема: пытаюсь получить контекст Microsoft Base и Microsoft Enhanced криптопровайдеров из-под Win98,но ничего не получается. Выдает ошибку( в числовом виде).Я знаю, что Enhanced-провайдер не поддерживается Win98,но почему не инициализируется Base?Если кто-нибудь может что-нибудь подсказать, буду очень благодарна. Так же попутно вопрос: как получить текст ошибки вместо ее кода? Даже | ||||
Ответы: | ||||
| ||||
Инициализация 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 ); | ||||