Partager via


CryptEnumProviderTypesW, fonction (wincrypt.h)

important cette API est déconseillée. Les logiciels nouveaux et existants doivent commencer à utiliser API de nouvelle génération de chiffrement. Microsoft peut supprimer cette API dans les versions ultérieures.
 
La fonction CryptEnumProviderTypes récupère les premiers types de fournisseur de services de chiffrement (CSP) pris en charge sur l’ordinateur. Utilisée dans une boucle, cette fonction récupère en séquence tous les types CSP disponibles sur un ordinateur.

Les types de fournisseurs incluent PROV_RSA_FULL, PROV_RSA_SCHANNEL et PROV_DSS.

Syntaxe

BOOL CryptEnumProviderTypesW(
  [in]      DWORD  dwIndex,
  [in]      DWORD  *pdwReserved,
  [in]      DWORD  dwFlags,
  [out]     DWORD  *pdwProvType,
  [out]     LPWSTR szTypeName,
  [in, out] DWORD  *pcbTypeName
);

Paramètres

[in] dwIndex

Index du type de fournisseur suivant à énumérer.

[in] pdwReserved

Réservé pour une utilisation ultérieure et doit être NULL .

[in] dwFlags

Réservé pour une utilisation ultérieure et doit être égal à zéro.

[out] pdwProvType

Adresse du valeur DWORD désignant le type de fournisseur énuméré.

[out] szTypeName

Pointeur vers une mémoire tampon qui reçoit les données du type de fournisseur énuméré. Il s’agit d’une chaîne incluant la fin caractère NULL. Certains types de fournisseurs n’ont pas de noms d’affichage et, dans ce cas, aucun nom n’est retourné et la valeur retournée pointée par cspTypeName est égale à zéro.

Ce paramètre peut être NULL pour obtenir la taille du nom à des fins d’allocation de mémoire. Pour plus d’informations, consultez Récupération des données de longueur inconnue.

[in, out] pcbTypeName

Pointeur vers une valeur DWORD spécifiant la taille, en octets, de la mémoire tampon pointée par le paramètre pszTypeName. Lorsque la fonction est retournée, la valeur DWORD contient le nombre d’octets stockés ou à stocker dans la mémoire tampon. Certains types de fournisseurs n’ont pas de noms d’affichage et, dans ce cas, aucun nom n’est retourné et la valeur retournée pointée par cspTypeName est égale à zéro.

Remarque Lors du traitement des données retournées dans la mémoire tampon, les applications doivent utiliser la taille réelle des données retournées. La taille réelle peut être légèrement inférieure à la taille de la mémoire tampon spécifiée lors de l’entrée. (Lors de l’entrée, les tailles de mémoire tampon sont généralement spécifiées suffisamment grandes pour s’assurer que les données de sortie les plus volumineuses possibles s’intègrent dans la mémoire tampon.) Lors de la sortie, la variable pointée par ce paramètre est mise à jour pour refléter la taille réelle des données copiées dans la mémoire tampon.
 

Valeur de retour

Si la fonction réussit, la valeur de retour est différente de zéro (TRUE).

Si la fonction échoue, la valeur de retour est égale à zéro (FALSE). Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Les codes d’erreur précédés par NTE sont générés par le fournisseur de solutions Cloud en cours d’utilisation. Certains codes d’erreur possibles suivent.

Retourner le code Description
ERROR_NO_MORE_ITEMS
Il n’y a plus d’éléments à énumérer.
ERROR_NOT_ENOUGH_MEMORY
Le système d’exploitation n’a plus de mémoire.
NTE_BAD_FLAGS
Le paramètre dwFlags a une valeur non reconnue.
NTE_FAIL
Un problème s’est produit avec l’inscription de type.

Remarques

Cette fonction énumère les types de fournisseurs disponibles sur un ordinateur. Les fournisseurs pour n’importe quel type de fournisseur spécifique peuvent être énumérés à l’aide de CryptEnumProviders.

Exemples

L’exemple suivant montre une boucle répertoriant tous les types de fournisseurs de services de chiffrement disponibles.

#include <stdio.h>
#include <windows.h>
#include <Wincrypt.h>
#pragma comment(lib, "advapi32.lib")

void main()
{
    
    // Copyright (C) Microsoft.  All rights reserved.
    // Declare and initialize variables.

    DWORD       dwIndex;
    DWORD       dwType;
    DWORD       cbName;
    LPTSTR      pszName;

    //--------------------------------------------------------------
    //   Print header lines for provider types.

    printf("Listing Available Provider Types:\n");
    printf("Provider type\tProvider Type Name\n");
    printf("_____________\t_____________________________________\n");

    // Loop through enumerating provider types.
    dwIndex = 0;
    while(CryptEnumProviderTypes(
           dwIndex,
           NULL,
           0,
           &dwType,
           NULL,
           &cbName
           ))
    {

        //-----------------------------------------------------------
        //  cbName returns the length of the name of the next
        //  provider type. Allocate memory in a buffer to retrieve
        //  that name.
        if (!(pszName = (LPTSTR)LocalAlloc(LMEM_ZEROINIT, cbName)))
        {
           printf("ERROR - LocalAlloc failed.\n");
           exit(1);
        }
        //-----------------------------------------------------------
        //  Get the provider type name.

        if (CryptEnumProviderTypes(
               dwIndex++,
               NULL,
               NULL,
               &dwType,   
               pszName,
               &cbName))     
        {
            printf ("     %4.0d\t%s\n",dwType, pszName);
        }
        else
        {
            printf("ERROR - CryptEnumProviderTypes\n");
            exit(1);
        }
        LocalFree(pszName);
    } // End of while loop.
}

Pour obtenir un autre exemple qui utilise la fonction CryptEnumProviderTypes, consultez Exemple de programme C : énumération des fournisseurs csp et des types de fournisseurs.

Note

L’en-tête wincrypt.h définit CryptEnumProviderTypes comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows XP [applications de bureau uniquement]
serveur minimum pris en charge Windows Server 2003 [applications de bureau uniquement]
plateforme cible Windows
d’en-tête wincrypt.h
bibliothèque Advapi32.lib
DLL Advapi32.dll

Voir aussi

CryptEnumProviders

fonctions du fournisseur de services