Fonction CryptEnumProviderTypesA (wincrypt.h)
Les types de fournisseurs incluent PROV_RSA_FULL, PROV_RSA_SCHANNEL et PROV_DSS.
Syntaxe
BOOL CryptEnumProviderTypesA(
[in] DWORD dwIndex,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] DWORD *pdwProvType,
[out] LPSTR 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 avoir la valeur NULL.
[in] dwFlags
Réservé à une utilisation future et doit être égal à zéro.
[out] pdwProvType
Adresse de la 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 le caractère NULL de fin. Certains types de fournisseurs n’ont pas de noms d’affichage, et dans ce cas aucun nom n’est retourné et la valeur renvoyée pointée par pcbTypeName est zéro.
Ce paramètre peut avoir la valeur NULL pour obtenir la taille du nom à des fins d’allocation de mémoire. Pour plus d’informations, consultez Récupération de 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 retourne, 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 renvoyée pointée par pcbTypeName est zéro.
Valeur retournée
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 zéro (FALSE). Pour obtenir des informations d’erreur étendues, appelez GetLastError.
Les codes d’erreur préfacés par NTE sont générés par le fournisseur de solutions cloud en cours d’utilisation. Certains codes d’erreur possibles suivent.
Code de retour | Description |
---|---|
|
Il n’y a plus d’éléments à énumérer. |
|
Le système d’exploitation a manqué de mémoire. |
|
Le paramètre dwFlags a une valeur non reconnue. |
|
Il y avait un problème avec l’inscription de type. |
Remarques
Cette fonction énumère les types de fournisseurs disponibles sur un ordinateur. Les fournisseurs d’un 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.
Notes
L’en-tête wincrypt.h définit CryptEnumProviderTypes comme un 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.
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 | wincrypt.h |
Bibliothèque | Advapi32.lib |
DLL | Advapi32.dll |