CryptGetDefaultProviderA-Funktion (wincrypt.h)

Wichtig Diese API ist veraltet. Neue und vorhandene Software sollten mit der Verwendung von Kryptografie-APIs der nächsten Generation beginnen. Microsoft kann diese API in zukünftigen Releases entfernen.
 
Die CryptGetDefaultProvider-Funktion findet den Standard-Kryptografiedienstanbieter (CSP) eines angegebenen Anbietertyps für den lokalen Computer oder aktuellen Benutzer. Der Name des Standard-CSP für den im dwProvType-Parameter angegebenen Anbietertyp wird im Puffer pszProvName 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 Standard-CSP-Name gefunden werden soll.

Die definierten 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 Null-Zeichenfolgenpuffer, um den Namen des Standard-CSP zu empfangen.

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ückgibt, enthält der DWORD-Wert die Anzahl der Bytes, die im Puffer gespeichert oder gespeichert werden sollen.

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 Puffers, der bei der Eingabe angegeben wird. (Bei der Eingabe werden Puffergrößen normalerweise groß genug angegeben, um sicherzustellen, dass die größtmöglichen Ausgabedaten in den Puffer passen.) Bei der Ausgabe wird die Variable aktualisiert, auf die dieser Parameter verweist, um die tatsächliche Größe der in den Puffer kopierten Daten widerzuspiegeln.
 

Rückgabewert

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

Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (FALSE). Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.

Der von NTE vorangestellte Fehlercode wird vom verwendeten CSP generiert. Mögliche Fehlercodes sind:

Rückgabecode Beschreibung
ERROR_INVALID_PARAMETER
Einer der Parameter enthält einen ungültigen Wert. Dies ist in den meisten Fällen ein nicht gültiger Zeiger.
ERROR_MORE_DATA
Der Puffer für den Namen ist nicht groß genug.
ERROR_NOT_ENOUGH_MEMORY
Dem Betriebssystem war der Arbeitsspeicher nicht mehr vorhanden.
NTE_BAD_FLAGS
Der dwFlags-Parameter verfügt über einen nicht erkannten Wert.

Hinweise

Diese Funktion bestimmt, welcher installierte CSP derzeit als Standard für den lokalen Computer oder aktuellen Benutzer festgelegt ist. Diese Informationen werden dem Benutzer häufig 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);

}

Hinweis

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 nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wincrypt.h
Bibliothek Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

CryptSetProvider

CryptSetProviderEx

Dienstanbieterfunktionen