CryptGetDefaultProviderA-Funktion (wincrypt.h)
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:
- PROV_RSA_FULL
- PROV_RSA_SIG
- PROV_DSS
- PROV_DSS_DH
- PROV_DH_SCHANNEL
- PROV_FORTEZZA
- PROV_MS_EXCHANGE
- PROV_RSA_SCHANNEL
- PROV_SSL
[in] pdwReserved
Dieser Parameter ist für die zukünftige Verwendung reserviert und muss NULL-sein.
[in] dwFlags
Die folgenden Flagwerte werden definiert.
[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.
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 |
---|---|
|
Einer der Parameter enthält einen ungültigen Wert. Dies ist am häufigsten ein ungültiger Zeiger. |
|
Der Puffer für den Namen ist nicht groß genug. |
|
Das Betriebssystem hat nicht genügend Arbeitsspeicher. |
|
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 |