Проблемы с перечислением криптопровайдеров
нашел функцию для перечисления провайдеров:
void drt()
{
DWORD cbName, dwType dwIndex;
void * pszName = NULL;
printf("Listing Available Providers:\n");
printf("Provider type\tProvider Name\n");
printf("_____________\t__________________"
"___________________\n");
dwIndex = 0;
while(CryptEnumProviders(dwIndex,NULL,0, &dwType, NULL, &cbName))
{
//-----------------------------------------------------------
if (!(pszName = LocalAlloc(LMEM_ZEROINIT, cbName+1))) {printf("ERROR — LocalAlloc failed\n"); exit(1); }
//-----------------------------------------------------------
// Get the provider name.
if (CryptEnumProviders(dwIndex++,NULL, 0, &dwType, (LPWSTR)pszName, &cbName )){ printf (" %4.0d\t%s\n",dwType, (char*)pszName); }
else {printf("ERROR — CryptEnumProviders failed.\n");exit(1); }
LocalFree(pszName);
}
printf("\nProvider types and provider names "
"have been listed.\n");
}
но на выходе
listen Available Providers^
Provider type Provider Name
---------------- --------------------------
1 A
75 C
1 G
не пойму почему вместо имен буквы.
Re: Проблемы с перечислением криптопровайдеров
Здравствуйте, alexsandr-ter, Вы писали:
AT>нашел функцию для перечисления провайдеров:
AT>...
AT>не пойму почему вместо имен буквы.
Вероятно потому, что printf принимает char-строку, а проект настроен на
использование Unicode — CryptEnumProvidersW.
Re: Проблемы с перечислением криптопровайдеров
Здравствуйте, alexsandr-ter, Вы писали:
AT>нашел функцию для перечисления провайдеров:
AT>void drt()
AT>{
AT> DWORD cbName, dwType dwIndex;
AT> void * pszName = NULL;
AT> printf("Listing Available Providers:\n");
AT> printf("Provider type\tProvider Name\n");
AT> printf("_____________\t__________________"
AT> "___________________\n");
AT> dwIndex = 0;
AT> while(CryptEnumProviders(dwIndex,NULL,0, &dwType, NULL, &cbName))
AT> {
AT> //-----------------------------------------------------------
AT> if (!(pszName = LocalAlloc(LMEM_ZEROINIT, cbName+1))) {printf("ERROR — LocalAlloc failed\n"); exit(1); }
AT> //-----------------------------------------------------------
AT> // Get the provider name.
AT> if (CryptEnumProviders(dwIndex++,NULL, 0, &dwType, (LPWSTR)pszName, &cbName )){ printf (" %4.0d\t%s\n",dwType, (char*)pszName); }
AT> else {printf("ERROR — CryptEnumProviders failed.\n");exit(1); }
AT> LocalFree(pszName);
AT> }
AT> printf("\nProvider types and provider names "
AT> "have been listed.\n");
AT>}
AT>но на выходе
AT>listen Available Providers^
AT>Provider type Provider Name
AT>---------------- --------------------------
AT> 1 A
AT> 75 C
AT> 1 G
AT>не пойму почему вместо имен буквы.
Все решил! Проблема была с типами строк
Пока на собственное сообщение не было ответов, его можно удалить.