Funzione CryptGetDefaultProviderA (wincrypt.h)
Sintassi
BOOL CryptGetDefaultProviderA(
[in] DWORD dwProvType,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] LPSTR pszProvName,
[in, out] DWORD *pcbProvName
);
Parametri
[in] dwProvType
Tipo di provider per il quale è necessario trovare il nome CSP predefinito.
I tipi di provider definiti sono i seguenti:
- PROV_RSA_FULL
- PROV_RSA_SIG
- PROV_DSS
- PROV_DSS_DH
- PROV_DH_SCHANNEL
- PROV_FORTEZZA
- PROV_MS_EXCHANGE
- PROV_RSA_SCHANNEL
- PROV_SSL
[in] pdwReserved
Questo parametro è riservato per l'uso futuro e deve essere NULL.
[in] dwFlags
I valori di flag seguenti sono definiti.
[out] pszProvName
Puntatore a un buffer di stringa di caratteri con terminazione null per ricevere il nome del CSP predefinito.
Per trovare le dimensioni del buffer per scopi di allocazione della memoria, questo parametro può essere NULL. 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 o da archiviare 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.
Il codice di errore preceduto dall'NTE viene generato dal particolare CSP usato. I codici di errore possibili includono quanto segue.
Codice restituito | Descrizione |
---|---|
|
Uno dei parametri contiene un valore non valido. Questo è più spesso un puntatore che non è valido. |
|
Il buffer per il nome non è abbastanza grande. |
|
Il sistema operativo ha esaurito la memoria. |
|
Il parametro dwFlags ha un valore non riconosciuto. |
Commenti
Questa funzione determina quale CSP installato è attualmente impostato come impostazione predefinita per il computer locale o l'utente corrente. Queste informazioni vengono spesso visualizzate all'utente.
Esempio
Nell'esempio seguente viene recuperato il nome del CSP predefinito per il tipo di provider PROV_RSA_FULL. Per un altro esempio che usa questa funzione, vedere Programma C di esempio: enumerazione di provider CSP e tipi di provider.
#include <stdio.h>
#include <windows.h>
#include <Wincrypt.h>
#pragma comment(lib, "crypt32.lib")
void main()
{
DWORD cbProvName=0;
LPTSTR pbProvName=NULL;
// Copyright (C) Microsoft. All rights reserved.
// Get the length of the RSA_FULL default provider name.
if (!(CryptGetDefaultProvider(
PROV_RSA_FULL,
NULL,
CRYPT_MACHINE_DEFAULT,
NULL,
&cbProvName)))
{
printf("Error getting the length of the default "
"provider name.\n");
exit(1);
}
// Allocate local memory for the name of the default provider.
if (!(pbProvName = (LPTSTR)LocalAlloc(LMEM_ZEROINIT,
cbProvName)))
{
printf("Error during memory allocation for "
"provider name.\n");
exit(1);
}
// Get the default provider name.
if (CryptGetDefaultProvider(
PROV_RSA_FULL,
NULL,
CRYPT_MACHINE_DEFAULT,
pbProvName,
&cbProvName))
{
printf("The default provider name is %s\n",pbProvName);
}
else
{
printf("Getting the name of the provider failed.\n");
exit(1);
}
// Free resources when done.
LocalFree(pbProvName);
}
Nota
L'intestazione wincrypt.h definisce CryptGetDefaultProvider 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
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 |