Partager via


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

[Cette méthode n’est plus disponible à partir de Windows Server 2008 et Windows Vista.]

La méthode enumProviders récupère les noms des fournisseurs de services de chiffrement (CSP) disponibles spécifiés par la propriété ProviderType . Cette méthode a d’abord été définie dans l’interface ICEnroll .

Syntaxe

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

Paramètres

[in] dwIndex

Spécifie la position ordinale du fournisseur de solutions Cloud dont le nom sera récupéré. Spécifiez zéro pour le premier csp.

[in] dwFlags

Spécifie les indicateurs transmis à la fonction CryptEnumProviders . Ce paramètre n’est pas utilisé actuellement ; spécifiez zéro.

[out] pbstrProvName

Pointeur vers une variable BSTR qui reçoit le nom d’un fournisseur csp avec le type de propriété spécifié. Lorsque vous avez terminé d’utiliser le BSTR, libérez-le en appelant la fonction SysFreeString .

Valeur retournée

C++

La valeur de retour est un HRESULT. La valeur S_OK indique la réussite. La valeur ERROR_NO_MORE_ITEMS est retournée lorsqu’il n’y a plus de csp avec le type de propriété indiqué par la propriété ProviderType .

VB

La valeur de retour est une variable String qui contient le nom d’un fournisseur de solutions Cloud. Une exception est levée si une erreur est rencontrée ou lorsqu’il n’y a plus d’éléments.

Remarques

Si la valeur de la propriété ProviderType n’a pas été définie, la valeur par défaut (généralement PROV_RSA_FULL) de ProviderType définie dans le Registre est utilisée.

La méthode enumProviders appelle la fonction CryptEnumProviders .

Exemples

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête xenroll.h
Bibliothèque Uuid.lib
DLL Xenroll.dll

Voir aussi

CEnroll

ICEnroll

ICEnroll2

ICEnroll3

ICEnroll4

ProviderType