Freigeben über


CryptGetDefaultProviderA-Funktion (wincrypt.h)

Wichtige Diese API ist veraltet. Neue und vorhandene Software sollten mit der Verwendung Kryptografie-APIs der nächsten Generation beginnen. Microsoft kann diese API in zukünftigen Versionen entfernen.
 
Die CryptGetDefaultProvider--Funktion findet den standardmäßigen kryptografischen Dienstanbieter (CSP) eines angegebenen Anbietertyps für den lokalen Computer oder den aktuellen Benutzer. Der Name des Standard-CSP für den anbietertyp, der im dwProvType Parameter angegeben ist, wird im pszProvName Puffer zurückgegeben.

Syntax

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

Parameter

[in] dwProvType

Der Anbietertyp, für den der Standardmäßige CSP-Name gefunden werden soll.

Definierte Anbietertypen sind wie folgt:

[in] pdwReserved

Dieser Parameter ist für die zukünftige Verwendung reserviert und muss NULL-sein.

[in] dwFlags

Die folgenden Flagwerte werden definiert.

Wert Bedeutung
CRYPT_USER_DEFAULT
0x00000002
Gibt den Standard-CSP für den Benutzerkontext des angegebenen Typs zurück.
CRYPT_MACHINE_DEFAULT
0x00000001
Gibt den Computerstandard-CSP des angegebenen Typs zurück.

[out] pszProvName

Ein Zeiger auf einen Zeichenfolgenpuffer mit Null-Beendigung, um den Namen des Standard-Konfigurationsdienstanbieters zu erhalten.

Um die Größe des Puffers für Speicherzuordnungszwecke zu ermitteln, kann dieser Parameter NULL-sein. Weitere Informationen finden Sie unter Abrufen von Daten unbekannter Länge.

[in, out] pcbProvName

Ein Zeiger auf einen DWORD- Wert, der die Größe des Puffers in Bytes angibt, auf den der pszProvName-Parameter verweist. Wenn die Funktion zurückgegeben wird, enthält der DWORD- Wert die Anzahl der im Puffer gespeicherten oder zu speichernden Bytes.

Hinweis Bei der Verarbeitung der im Puffer zurückgegebenen Daten müssen Anwendungen die tatsächliche Größe der zurückgegebenen Daten verwenden. Die tatsächliche Größe kann etwas kleiner sein als die Größe des für die Eingabe angegebenen Puffers. (Bei Eingaben werden Puffergrößen in der Regel groß genug angegeben, um sicherzustellen, dass die größtmöglichen Ausgabedaten in den Puffer passen.) Bei der Ausgabe wird die variable, auf die dieser Parameter verweist, aktualisiert, um die tatsächliche Größe der in den Puffer kopierten Daten widerzuspiegeln.
 

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null (TRUE).

Wenn die Funktion fehlschlägt, ist der Rückgabewert null (FALSE). Rufen Sie für erweiterte Fehlerinformationen GetLastError-auf.

Der von NTE vorgestellte Fehlercode wird vom verwendeten CSP generiert. Mögliche Fehlercodes sind die folgenden.

Rückgabecode Beschreibung
ERROR_INVALID_PARAMETER
Einer der Parameter enthält einen ungültigen Wert. Dies ist am häufigsten ein ungültiger Zeiger.
ERROR_MORE_DATA
Der Puffer für den Namen ist nicht groß genug.
ERROR_NOT_ENOUGH_MEMORY
Das Betriebssystem hat nicht genügend Arbeitsspeicher.
NTE_BAD_FLAGS
Der dwFlags Parameter weist einen unbekannten Wert auf.

Bemerkungen

Diese Funktion bestimmt, welcher installierte CSP derzeit als Standard für den lokalen Computer oder den aktuellen Benutzer festgelegt ist. Diese Informationen werden häufig dem Benutzer angezeigt.

Beispiele

Im folgenden Beispiel wird der Name des Standard-CSP für den PROV_RSA_FULL Anbietertyp abgerufen. Ein weiteres Beispiel, das diese Funktion verwendet, finden Sie unter Beispiel-C-Programm: Aufzählen von CSP-Anbietern und Anbietertypen.

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

}

Anmerkung

Der wincrypt.h-Header definiert CryptGetDefaultProvider als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows XP [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2003 [Nur Desktop-Apps]
Zielplattform- Fenster
Header- wincrypt.h
Library Advapi32.lib
DLL- Advapi32.dll

Siehe auch

CryptSetProvider-

CryptSetProviderEx-

Dienstanbieterfunktionen