Funzione CryptEnumProvidersW (wincrypt.h)
I provider di servizi di crittografia possibili includono Microsoft Base Cryptographic Provider versione 1.0 e Microsoft Enhanced Cryptographic Provider versione 1.0.
Sintassi
BOOL CryptEnumProvidersW(
[in] DWORD dwIndex,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] DWORD *pdwProvType,
[out] LPWSTR 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 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 di terminazione.
Questo parametro può essere NULL per impostare le dimensioni del nome ai fini dell'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 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 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 è sufficientemente grande da contenere il nome del provider. |
|
Non sono più presenti elementi da enumerare. |
|
Memoria insufficiente del sistema operativo. |
|
Il parametro dwFlags ha un valore non riconosciuto. |
|
Si è verificato un problema con la registrazione del tipo. |
Commenti
Questa funzione enumera i provider disponibili in un computer. I tipi di provider possono essere enumerati usando CryptEnumProviderTypes.
Esempio
L'esempio seguente mostra un ciclo che elenca 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 CSP e tipi di provider.
#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 che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.
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 |
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per