CryptEnumProvidersW, fonction (wincrypt.h)
Les fournisseurs de services de chiffrement de base Microsoft version 1.0 et Microsoft Enhanced Cryptographic Provider version 1.0 sont possibles.
Syntaxe
BOOL CryptEnumProvidersW(
[in] DWORD dwIndex,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] DWORD *pdwProvType,
[out] LPWSTR szProvName,
[in, out] DWORD *pcbProvName
);
Paramètres
[in] dwIndex
Index du 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 du fournisseur énuméré.
[out] szProvName
Pointeur vers une mémoire tampon qui reçoit les données du fournisseur énuméré. Il s’agit d’une chaîne incluant le caractère null de fin.
Ce paramètre peut être null pour définir 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] pcbProvName
Pointeur vers une valeur DWORD spécifiant la taille, en octets, de la mémoire tampon pointée par le paramètre pszProvName. Lorsque la fonction est retournée, la valeur DWORD contient le nombre d’octets stockés 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 |
---|---|
|
La mémoire tampon pszProvName n’était pas suffisamment grande pour contenir le nom du fournisseur. |
|
Il n’y a plus d’éléments à énumérer. |
|
Le système d’exploitation n’a plus de mémoire. |
|
Le paramètre dwFlags a une valeur non reconnue. |
|
Un problème s’est produit avec l’inscription de type. |
Remarques
Cette fonction énumère les fournisseurs disponibles sur un ordinateur. Les types de fournisseurs peuvent être énumérés à l’aide de CryptEnumProviderTypes.
Exemples
L’exemple suivant montre une boucle répertoriant tous les fournisseurs de services de chiffrement disponibles. Pour obtenir un autre exemple qui utilise la fonction CryptEnumProviders, consultez Exemple de programme C : énumération des fournisseurs csp et des types de fournisseurs.
#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 cbName;
DWORD dwType;
DWORD dwIndex;
CHAR *pszName = NULL;
// Print header lines for providers.
printf("Listing Available Providers:\n");
printf("Provider type\tProvider Name\n");
printf("_____________\t__________________"
"___________________\n");
//---------------------------------------------------------------
// Loop through enumerating providers.
dwIndex = 0;
while(CryptEnumProviders(
dwIndex,
NULL,
0,
&dwType,
NULL,
&cbName
))
{
//-----------------------------------------------------------
// cbName returns the length of the name of the next
// provider. 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 name.
if (CryptEnumProviders(
dwIndex++,
NULL,
0,
&dwType,
pszName,
&cbName
))
{
printf (" %4.0d\t%s\n",dwType, pszName);
}
else
{
printf("ERROR - CryptEnumProviders failed.\n");
exit(1);
}
LocalFree(pszName);
} // End of while loop
printf("\nProvider types and provider names "
"have been listed.\n");
}
Note
L’en-tête wincrypt.h définit CryptEnumProviders 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 |