CryptEnumProvidersA-Funktion (wincrypt.h)
Mögliche CSPs sind Microsoft Base Cryptographic Provider Version 1.0 und Microsoft Enhanced Cryptographic Provider Version 1.0.
Syntax
BOOL CryptEnumProvidersA(
[in] DWORD dwIndex,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] DWORD *pdwProvType,
[out] LPSTR szProvName,
[in, out] DWORD *pcbProvName
);
Parameter
[in] dwIndex
Index des nächsten zu aufzählenden Anbieters.
[in] pdwReserved
Reserviert für die zukünftige Verwendung und muss NULL-sein.
[in] dwFlags
Reserviert für die zukünftige Verwendung und muss null sein.
[out] pdwProvType
Adresse des DWORD- Werts, der den Typ des aufgezählten Anbieters angibt.
[out] szProvName
Ein Zeiger auf einen Puffer, der die Daten vom aufgezählten Anbieter empfängt. Dies ist eine Zeichenfolge einschließlich des endenden Nullzeichens.
Dieser Parameter kann NULL- sein, um die Größe des Namens für Speicherzuweisungszwecke festzulegen. 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 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.
Die von NTE vorgestellten Fehlercodes werden von dem verwendeten CSP generiert. Einige mögliche Fehlercodes folgen.
Rückgabecode | Beschreibung |
---|---|
|
Der pszProvName Puffer war nicht groß genug, um den Anbieternamen zu enthalten. |
|
Es gibt keine weiteren Elemente, die aufgezählt werden sollen. |
|
Das Betriebssystem hat nicht genügend Arbeitsspeicher. |
|
Der dwFlags Parameter weist einen unbekannten Wert auf. |
|
Bei der Typregistrierung ist ein Fehler aufgetreten. |
Bemerkungen
Diese Funktion listet die anbieter auf, die auf einem Computer verfügbar sind. Die Anbietertypen können mithilfe von CryptEnumProviderTypesaufgezählt werden.
Beispiele
Das folgende Beispiel zeigt eine Schleife, die alle verfügbaren Kryptografiedienstanbieter auflistet. Ein weiteres Beispiel, das die funktion CryptEnumProviders 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, "advapi32.lib")
void main()
{
//---------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Declare and initialize variables.
DWORD cbName;
DWORD dwType;
DWORD dwIndex;
CHAR *pszName = NULL;
// Print header lines for providers.
printf("Listing Available Providers:\n");
printf("Provider type\tProvider Name\n");
printf("_____________\t__________________"
"___________________\n");
//---------------------------------------------------------------
// Loop through enumerating providers.
dwIndex = 0;
while(CryptEnumProviders(
dwIndex,
NULL,
0,
&dwType,
NULL,
&cbName
))
{
//-----------------------------------------------------------
// cbName returns the length of the name of the next
// provider. Allocate memory in a buffer to retrieve
// that name.
if (!(pszName = (LPTSTR)LocalAlloc(LMEM_ZEROINIT, cbName)))
{
printf("ERROR - LocalAlloc failed\n");
exit(1);
}
//-----------------------------------------------------------
// Get the provider name.
if (CryptEnumProviders(
dwIndex++,
NULL,
0,
&dwType,
pszName,
&cbName
))
{
printf (" %4.0d\t%s\n",dwType, pszName);
}
else
{
printf("ERROR - CryptEnumProviders failed.\n");
exit(1);
}
LocalFree(pszName);
} // End of while loop
printf("\nProvider types and provider names "
"have been listed.\n");
}
Anmerkung
Der wincrypt.h-Header definiert CryptEnumProviders als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante 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 |