Metodo ICEnroll::enumProviders (xenroll.h)

[Questo metodo non è più disponibile per l'uso a partire da Windows Server 2008 e Windows Vista.]

Il metodo enumProviders recupera i nomi dei provider di servizi di crittografia disponibili specificati dalla proprietà ProviderType . Questo metodo è stato definito per la prima volta nell'interfaccia ICEnroll .

Sintassi

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

Parametri

[in] dwIndex

Specifica la posizione ordinale del CSP il cui nome verrà recuperato. Specificare zero per il primo CSP.

[in] dwFlags

Specifica i flag passati alla funzione CryptEnumProviders . Questo parametro non è attualmente usato; specificare zero.

[out] pbstrProvName

Puntatore a una variabile BSTR che riceve il nome di un CSP con il tipo di proprietà specificato. Al termine dell'uso della funzione BSTR, liberarla chiamando la funzione SysFreeString .

Valore restituito

C++

Il valore restituito è un HRESULT. Un valore di S_OK indica l'esito positivo. Il valore ERROR_NO_MORE_ITEMS viene restituito quando non sono presenti più provider di servizi di configurazione con il tipo di proprietà indicato dalla proprietà ProviderType .

VB

Il valore restituito è una variabile String contenente il nome di un CSP. Viene generata un'eccezione se viene rilevato un errore o quando non sono presenti più elementi.

Commenti

Se il valore della proprietà ProviderType non è stato impostato, viene usato il valore predefinito (in genere PROV_RSA_FULL) di ProviderType impostato nel Registro di sistema.

Il metodo enumProviders chiama la funzione CryptEnumProviders .

Esempio

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

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione xenroll.h
Libreria Uuid.lib
DLL Xenroll.dll

Vedi anche

CEnroll

ICEnroll

ICEnroll2

ICEnroll3

ICEnroll4

ProviderType