Compartilhar via


Método ICEnroll::enumProviders (xenroll.h)

[Esse método não está mais disponível para uso a partir do Windows Server 2008 e do Windows Vista.]

O método enumProviders recupera os nomes dos CSPs ( provedores de serviços criptográficos ) disponíveis especificados pela propriedade ProviderType . Esse método foi definido pela primeira vez na interface ICEnroll .

Sintaxe

HRESULT enumProviders(
  [in]  LONG dwIndex,
  [in]  LONG dwFlags,
  [out] BSTR *pbstrProvName
);

Parâmetros

[in] dwIndex

Especifica a posição ordinal do CSP cujo nome será recuperado. Especifique zero para o primeiro CSP.

[in] dwFlags

Especifica os sinalizadores que são passados para a função CryptEnumProviders . Esse parâmetro não é usado no momento; especifique zero.

[out] pbstrProvName

Um ponteiro para uma variável BSTR que recebe o nome de um CSP com o tipo de propriedade especificado. Quando terminar de usar o BSTR, libere-o chamando a função SysFreeString .

Retornar valor

C++

O valor retornado é um HRESULT. Um valor de S_OK indica êxito. O valor ERROR_NO_MORE_ITEMS é retornado quando não há mais CSPs com o tipo de propriedade indicado pela propriedade ProviderType .

VB

O valor retornado é uma variável String que contém o nome de um CSP. Uma exceção será gerada se um erro for encontrado ou quando não houver mais itens.

Comentários

Se o valor da propriedade ProviderType não tiver sido definido, o valor padrão (geralmente PROV_RSA_FULL) de ProviderType , conforme definido no registro, será usado.

O método enumProviders chama a função CryptEnumProviders .

Exemplos

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 );

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho xenroll.h
Biblioteca Uuid.lib
DLL Xenroll.dll

Confira também

CEnroll

ICEnroll

ICEnroll2

ICEnroll3

ICEnroll4

ProviderType