Compartir a través de


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

Consulte también

CEnroll

ICEnroll

ICEnroll2

ICEnroll3

ICEnroll4

ProviderType