Função CryptGetDefaultProviderA (wincrypt.h)
Sintaxe
BOOL CryptGetDefaultProviderA(
[in] DWORD dwProvType,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] LPSTR pszProvName,
[in, out] DWORD *pcbProvName
);
Parâmetros
[in] dwProvType
O tipo de provedor para o qual o nome CSP padrão deve ser encontrado.
Os tipos de provedor definidos são os seguintes:
- 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
Esse parâmetro é reservado para uso futuro e deve ser NULL.
[in] dwFlags
Os valores de sinalizador a seguir são definidos.
[out] pszProvName
Um ponteiro para um buffer de cadeia de caracteres terminada em nulo para receber o nome do CSP padrão.
Para localizar o tamanho do buffer para fins de alocação de memória, esse parâmetro pode ser NULL. Para obter mais informações, consulte Recuperando dados de comprimento desconhecido.
[in, out] pcbProvName
Um ponteiro para um valor DWORD que especifica o tamanho, em bytes, do buffer apontado pelo parâmetro pszProvName . Quando a função retorna, o valor DWORD contém o número de bytes armazenados ou a serem armazenados no buffer.
Valor retornado
Se a função for bem-sucedida, o valor retornado será diferente de zero (TRUE).
Se a função falhar, o valor retornado será zero (FALSE). Para obter informações de erro estendidas, chame GetLastError.
O código de erro precedido pelo NTE é gerado pelo CSP específico que está sendo usado. Os códigos de erro possíveis incluem o seguinte.
Código de retorno | Descrição |
---|---|
|
Um dos parâmetros contém um valor que não é válido. Isso geralmente é um ponteiro que não é válido. |
|
O buffer para o nome não é grande o suficiente. |
|
O sistema operacional ficou sem memória. |
|
O parâmetro dwFlags tem um valor não reconhecido. |
Comentários
Essa função determina qual CSP instalado está atualmente definido como o padrão para o computador local ou o usuário atual. Essas informações geralmente são exibidas para o usuário.
Exemplos
O exemplo a seguir recupera o nome do CSP padrão para o tipo de provedor PROV_RSA_FULL. Para obter outro exemplo que usa essa função, consulte Exemplo de Programa C: Enumerando provedores CSP e tipos de provedor.
#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);
}
Observação
O cabeçalho wincrypt.h define CryptGetDefaultProvider como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
Requisitos
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | wincrypt.h |
Biblioteca | Advapi32.lib |
DLL | Advapi32.dll |