Метод 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

См. также раздел

CEnroll

ICEnroll

ICEnroll2

ICEnroll3

ICEnroll4

ProviderType