Método ICEnroll::enumProviders (xenroll.h)
[Este método ya no está disponible para su uso a partir de Windows Server 2008 y Windows Vista.]
El método enumProviders recupera los nombres de los proveedores de servicios criptográficos (CSP) disponibles especificados por la propiedad ProviderType . Este método se definió por primera vez en la interfaz ICEnroll .
Sintaxis
HRESULT enumProviders(
[in] LONG dwIndex,
[in] LONG dwFlags,
[out] BSTR *pbstrProvName
);
Parámetros
[in] dwIndex
Especifica la posición ordinal del CSP cuyo nombre se recuperará. Especifique cero para el primer CSP.
[in] dwFlags
Especifica marcas que se pasan a la función CryptEnumProviders . Este parámetro no se usa actualmente; especifique cero.
[out] pbstrProvName
Puntero a una variable BSTR que recibe el nombre de un CSP con el tipo de propiedad especificado. Cuando haya terminado de usar BSTR, ábrelo llamando a la función SysFreeString .
Valor devuelto
C++
El valor devuelto es un HRESULT. Un valor de S_OK indica que se ha realizado correctamente. El valor ERROR_NO_MORE_ITEMS se devuelve cuando no hay más CSP con el tipo de propiedad indicado por la propiedad ProviderType .VB
El valor devuelto es una variable String que contiene el nombre de un CSP. Se produce una excepción si se encuentra un error o cuando no hay más elementos.Comentarios
Si no se ha establecido el valor de la propiedad ProviderType , se usa el valor predeterminado (normalmente PROV_RSA_FULL) de ProviderType establecido en el Registro.
El método enumProviders llama a la función CryptEnumProviders .
Ejemplos
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 | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | xenroll.h |
Library | Uuid.lib |
Archivo DLL | Xenroll.dll |