Funzione CryptEnumProviderTypesA (wincrypt.h)
I tipi di provider includono PROV_RSA_FULL, PROV_RSA_SCHANNEL e PROV_DSS.
Sintassi
BOOL CryptEnumProviderTypesA(
[in] DWORD dwIndex,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] DWORD *pdwProvType,
[out] LPSTR szTypeName,
[in, out] DWORD *pcbTypeName
);
Parametri
[in] dwIndex
Indice del tipo di 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 di provider enumerato.
[out] szTypeName
Puntatore a un buffer che riceve i dati dal tipo di provider enumerato. Si tratta di una stringa che include il carattere di terminazione NULL. Alcuni tipi di provider non hanno nomi visualizzati e in questo caso non viene restituito alcun nome e il valore restituito a cui punta pcbTypeName è zero.
Questo parametro può essere NULL per ottenere le dimensioni del nome a scopo di allocazione della memoria. Per altre informazioni, vedere Recupero di dati di lunghezza sconosciuta.
[in, out] pcbTypeName
Puntatore a un valore DWORD che specifica le dimensioni, in byte, del buffer a cui punta il parametro pszTypeName. 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 |
---|---|
|
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 tipi di provider disponibili in un computer. I provider per qualsiasi tipo di provider specifico possono essere enumerati usando CryptEnumProviders.
Esempi
L'esempio seguente mostra un ciclo che elenca tutti i tipi di provider di servizi di crittografia disponibili.
#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 dwIndex;
DWORD dwType;
DWORD cbName;
LPTSTR pszName;
//--------------------------------------------------------------
// Print header lines for provider types.
printf("Listing Available Provider Types:\n");
printf("Provider type\tProvider Type Name\n");
printf("_____________\t_____________________________________\n");
// Loop through enumerating provider types.
dwIndex = 0;
while(CryptEnumProviderTypes(
dwIndex,
NULL,
0,
&dwType,
NULL,
&cbName
))
{
//-----------------------------------------------------------
// cbName returns the length of the name of the next
// provider type. 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 type name.
if (CryptEnumProviderTypes(
dwIndex++,
NULL,
NULL,
&dwType,
pszName,
&cbName))
{
printf (" %4.0d\t%s\n",dwType, pszName);
}
else
{
printf("ERROR - CryptEnumProviderTypes\n");
exit(1);
}
LocalFree(pszName);
} // End of while loop.
}
Per un altro esempio che usa la funzione CryptEnumProviderTypes, vedere programma C di esempio: enumerazione dei provider CSP e dei tipi di provider.
Nota
L'intestazione wincrypt.h definisce CryptEnumProviderTypes 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
CryptEnumProviders
funzioni del provider di servizi