Partager via


CryptGetDefaultProviderA, 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 CryptGetDefaultProvider recherche la fournisseur de services de chiffrement par défaut (CSP) d’un type de fournisseur spécifié pour l’ordinateur local ou l’utilisateur actuel. Le nom du fournisseur csp par défaut pour le type de fournisseur spécifié dans le paramètre dwProvType est retourné dans la mémoire tampon pszProvName.

Syntaxe

BOOL CryptGetDefaultProviderA(
  [in]      DWORD dwProvType,
  [in]      DWORD *pdwReserved,
  [in]      DWORD dwFlags,
  [out]     LPSTR pszProvName,
  [in, out] DWORD *pcbProvName
);

Paramètres

[in] dwProvType

Type de fournisseur pour lequel le nom csp par défaut doit être trouvé.

Les types de fournisseurs définis sont les suivants :

[in] pdwReserved

Ce paramètre est réservé pour une utilisation ultérieure et doit être NULL.

[in] dwFlags

Les valeurs d’indicateur suivantes sont définies.

Valeur Signification
CRYPT_USER_DEFAULT
0x00000002
Retourne le fournisseur csp par défaut de contexte utilisateur du type spécifié.
CRYPT_MACHINE_DEFAULT
0x00000001
Retourne le fournisseur csp par défaut de l’ordinateur du type spécifié.

[out] pszProvName

Pointeur vers une mémoire tampon de chaîne de caractères terminée par null pour recevoir le nom du fournisseur de solutions Cloud par défaut.

Pour rechercher la taille de la mémoire tampon à des fins d’allocation de mémoire, ce paramètre peut être NULL. Pour plus d’informations, consultez Récupération des données de longueur inconnue.

[in, out] pcbProvName

Pointeur vers une valeur DWORD qui spécifie 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 ou à stocker dans la mémoire tampon.

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.

Le code d’erreur précédé par NTE est généré par le fournisseur de solutions Cloud en cours d’utilisation. Les codes d’erreur possibles sont les suivants.

Retourner le code Description
ERROR_INVALID_PARAMETER
L’un des paramètres contient une valeur qui n’est pas valide. Il s’agit le plus souvent d’un pointeur qui n’est pas valide.
ERROR_MORE_DATA
La mémoire tampon du nom n’est pas suffisamment grande.
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.

Remarques

Cette fonction détermine quel fournisseur csp installé est actuellement défini comme valeur par défaut pour l’ordinateur local ou l’utilisateur actuel. Ces informations sont souvent affichées à l’utilisateur.

Exemples

L’exemple suivant récupère le nom du fournisseur csp par défaut pour le type de fournisseur de PROV_RSA_FULL. Pour obtenir un autre exemple qui utilise cette fonction, 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, "crypt32.lib")

void main()
{

    DWORD       cbProvName=0;
    LPTSTR      pbProvName=NULL;
    // Copyright (C) Microsoft.  All rights reserved.
    // Get the length of the RSA_FULL default provider name.
    if (!(CryptGetDefaultProvider(
         PROV_RSA_FULL, 
         NULL, 
         CRYPT_MACHINE_DEFAULT,
         NULL, 
         &cbProvName))) 
    { 
      printf("Error getting the length of the default "
          "provider name.\n");
      exit(1);
    }

    // Allocate local memory for the name of the default provider.
    if (!(pbProvName = (LPTSTR)LocalAlloc(LMEM_ZEROINIT, 
        cbProvName)))
    {
        printf("Error during memory allocation for "
            "provider name.\n");
        exit(1);
    }

    // Get the default provider name.
    if (CryptGetDefaultProvider(
        PROV_RSA_FULL, 
        NULL, 
        CRYPT_MACHINE_DEFAULT,
        pbProvName,
        &cbProvName)) 
    {
        printf("The default provider name is %s\n",pbProvName);
    }
    else
    {
        printf("Getting the name of the provider failed.\n");
        exit(1);
    }

    // Free resources when done.
    LocalFree(pbProvName);

}

Note

L’en-tête wincrypt.h définit CryptGetDefaultProvider 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

CryptSetProvider

CryptSetProviderEx

fonctions du fournisseur de services