Funzione CryptEnumProvidersA (wincrypt.h)
I provider di sicurezza di rete possibili includono Microsoft Base Cryptographic Provider versione 1.0 e Microsoft Enhanced Cryptographic Provider versione 1.0.
Sintassi
BOOL CryptEnumProvidersA(
[in] DWORD dwIndex,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] DWORD *pdwProvType,
[out] LPSTR szProvName,
[in, out] DWORD *pcbProvName
);
Parametri
[in] dwIndex
Indice del provider successivo da enumerare.
[in] pdwReserved
Riservato per l'uso futuro e deve essere NULL.
[in] dwFlags
Riservato per l'uso futuro e deve essere zero.
[out] pdwProvType
Indirizzo del valore DWORD che designa il tipo del provider enumerato.
[out] szProvName
Puntatore a un buffer che riceve i dati dal provider enumerato. Si tratta di una stringa che include il carattere Null terminante.
Questo parametro può essere NULL per impostare le dimensioni del nome a scopo di allocazione della memoria. Per altre informazioni, vedere Recupero dei dati di lunghezza sconosciuta.
[in, out] pcbProvName
Puntatore a un valore DWORD che specifica le dimensioni, in byte, del buffer a cui punta il parametro pszProvName . Quando la funzione restituisce, il valore DWORD contiene il numero di byte archiviati nel buffer.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero (TRUE).
Se la funzione ha esito negativo, il valore restituito è zero (FALSE). Per informazioni sull'errore estese, chiamare GetLastError.
I codici di errore preceduti dall'NTE vengono generati dal particolare CSP usato. Alcuni codici di errore possibili seguono.
Codice restituito | Descrizione |
---|---|
|
Il buffer pszProvName non è abbastanza grande per contenere il nome del provider. |
|
Non sono presenti più elementi da enumerare. |
|
Il sistema operativo ha esaurito la memoria. |
|
Il parametro dwFlags ha un valore non riconosciuto. |
|
Si è verificato un errore nella registrazione del tipo. |
Commenti
Questa funzione enumera i provider disponibili in un computer. I tipi di provider possono essere enumerati usando CryptEnumProviderTypes.
Esempio
Nell'esempio seguente viene illustrato un elenco di cicli di tutti i provider di servizi di crittografia disponibili. Per un altro esempio che usa la funzione CryptEnumProviders , vedere Esempio di programma C: enumerazione di provider e tipi di provider CSP.
#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");
}
Nota
L'intestazione wincrypt.h definisce CryptEnumProviders come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | wincrypt.h |
Libreria | Advapi32.lib |
DLL | Advapi32.dll |