Funzione CryptEnumProvidersA (wincrypt.h)
I provider di servizi di configurazione 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 uso futuro e deve essere NULL.
[in] dwFlags
Riservato per uso futuro e deve essere zero.
[out] pdwProvType
Indirizzo dell'DWORD valore 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 di terminazione.
Questo parametro può essere NULL per impostare le dimensioni del nome a scopo di allocazione della memoria. Per altre informazioni, vedere Recupero di 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 viene restituita, il valore DWORD
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 sugli errori estesi, chiamare GetLastError.
I codici di errore preceduti dall'NTE vengono generati dal CSP specifico usato. Di seguito sono riportati alcuni possibili codici di errore.
Codice restituito | Descrizione |
---|---|
|
Il buffer pszProvName |
|
Non sono presenti altri elementi da enumerare. |
|
Memoria esaurita del sistema operativo. |
|
Il parametro dwFlags ha un valore non riconosciuto. |
|
Si è verificato un problema con la registrazione del tipo. |
Osservazioni
Questa funzione enumera i provider disponibili in un computer. I tipi di provider possono essere enumerati usando CryptEnumProviderTypes.
Esempi
L'esempio seguente mostra un ciclo che elenca tutti i provider di servizi di crittografia disponibili. Per un altro esempio che usa la funzione
#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 del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows XP [solo app desktop] |
server minimo supportato | Windows Server 2003 [solo app desktop] |
piattaforma di destinazione | Finestre |
intestazione |
wincrypt.h |
libreria |
Advapi32.lib |
dll | Advapi32.dll |
Vedere anche
CryptEnumProviderTypes
funzioni del provider di servizi