Funzione CryptEnumProviderTypesW (wincrypt.h)
I tipi di provider includono PROV_RSA_FULL, PROV_RSA_SCHANNEL e PROV_DSS.
Sintassi
BOOL CryptEnumProviderTypesW(
[in] DWORD dwIndex,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] DWORD *pdwProvType,
[out] LPWSTR szTypeName,
[in, out] DWORD *pcbTypeName
);
Parametri
[in] dwIndex
Indice del tipo di 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 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 NULL terminante. Alcuni tipi di provider non hanno nomi visualizzati e in questo caso non viene restituito alcun nome e il valore restituito puntato a pcbTypeName è zero.
Questo parametro può essere NULL per ottenere le dimensioni del nome ai fini dell'allocazione della memoria. Per altre informazioni, vedere Recupero dei 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 restituisce, il valore DWORD contiene il numero di byte archiviati o da archiviare nel buffer. Alcuni tipi di provider non hanno nomi visualizzati e in questo caso non viene restituito alcun nome e il valore restituito puntato a pcbTypeName è zero.
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 |
---|---|
|
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 tipi di provider disponibili in un computer. I provider per qualsiasi tipo di provider specifico possono essere enumerati usando CryptEnumProviders.
Esempio
Nell'esempio seguente viene illustrato un elenco di cicli di tutti i tipi di provider di servizi crittografici 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 di provider e tipi di provider CSP.
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 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 |