Метод ICEnroll::enumProviders (xenroll.h)
[Этот метод больше недоступен для использования в Windows Server 2008 и Windows Vista.]
Метод enumProviders извлекает имена доступных поставщиков служб шифрования (CSP), указанных свойством ProviderType . Этот метод был впервые определен в интерфейсе ICEnroll .
Синтаксис
HRESULT enumProviders(
[in] LONG dwIndex,
[in] LONG dwFlags,
[out] BSTR *pbstrProvName
);
Параметры
[in] dwIndex
Указывает порядковый номер поставщика служб CSP, имя которого будет извлечено. Укажите ноль для первого поставщика служб CSP.
[in] dwFlags
Указывает флаги, передаваемые в функцию CryptEnumProviders . Этот параметр в настоящее время не используется; укажите ноль.
[out] pbstrProvName
Указатель на переменную BSTR , получающую имя CSP с указанным типом свойства. Завершив использование BSTR, освободите его, вызвав функцию SysFreeString .
Возвращаемое значение
C++
Возвращаемое значение — HRESULT. Значение S_OK указывает на успешное выполнение. Значение ERROR_NO_MORE_ITEMS возвращается при отсутствии поставщиков служб конфигурации с типом свойства, указанным свойством ProviderType .VB
Возвращаемое значение является строковой переменной, содержащей имя CSP. Исключение возникает при обнаружении ошибки или отсутствии элементов.Комментарии
Если значение свойства ProviderType не задано, используется значение по умолчанию (обычно PROV_RSA_FULL) параметра ProviderType , заданное в реестре.
Метод enumProviders вызывает функцию CryptEnumProviders .
Примеры
BSTR bstrProvName = NULL;
DWORD nProv;
int j;
HRESULT hr;
// array of CSP provider types (see Wincrypt.h)
DWORD nProvType[] = { PROV_RSA_FULL,
PROV_RSA_SIG,
// list shortened for brevity
//...
PROV_STT_ISS };
// Loop, for each Prov Type.
for (j = 0; j < (sizeof(nProvType)/sizeof(DWORD)); j++)
{
nProv = 0;
// pEnroll is previously instantiated ICEnroll interface pointer
hr = pEnroll->put_ProviderType( nProvType[j] );
if ( FAILED(hr))
{
printf("Failed put_ProviderType - %x\n", hr);
goto error;
}
// Enumerate the CSPs of this type.
while ( S_OK == ( hr = pEnroll->enumProviders(nProv,
0,
&bstrProvName)))
{
printf("Provider %ws (type %d )\n", bstrProvName,
nProvType[j] );
nProv++;
if ( bstrProvName )
{
SysFreeString( bstrProvName );
bstrProvName = NULL;
}
}
// Print message if provider type does not have any CSPs.
if ( 0 == nProv )
printf("There were no CSPs of type %d\n", dwType );
}
error:
// Clean up resources, and so on.
if ( bstrProvName )
SysFreeString( bstrProvName );
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | xenroll.h |
Библиотека | Uuid.lib |
DLL | Xenroll.dll |