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 Standard-CSP-Name gefunden werden soll.
Die definierten 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 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.
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 |
---|---|
|
Einer der Parameter enthält einen ungültigen Wert. Dies ist in den meisten Fällen ein nicht gültiger Zeiger. |
|
Der Puffer für den Namen ist nicht groß genug. |
|
Dem Betriebssystem war der Arbeitsspeicher nicht mehr vorhanden. |
|
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 |