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 |