Função CryptEnumProvidersA (wincrypt.h)
Os CSPs possíveis incluem o Microsoft Base Cryptographic Provider versão 1.0 e o Microsoft Enhanced Cryptographic Provider versão 1.0.
Sintaxe
BOOL CryptEnumProvidersA(
[in] DWORD dwIndex,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] DWORD *pdwProvType,
[out] LPSTR szProvName,
[in, out] DWORD *pcbProvName
);
Parâmetros
[in] dwIndex
Índice do próximo provedor a ser enumerado.
[in] pdwReserved
Reservado para uso futuro e deve ser NULL.
[in] dwFlags
Reservado para uso futuro e deve ser zero.
[out] pdwProvType
Endereço do valor DWORD que designa o tipo do provedor enumerado.
[out] szProvName
Um ponteiro para um buffer que recebe os dados do provedor enumerado. Essa é uma cadeia de caracteres, incluindo o caractere nulo de terminação.
Esse parâmetro pode ser NULL para definir o tamanho do nome para fins de alocação de memória. 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 no buffer.
Retornar valor
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.
Os códigos de erro precedidos pelo NTE são gerados pelo CSP específico que está sendo usado. Alguns códigos de erro possíveis seguem.
Código de retorno | Descrição |
---|---|
|
O buffer pszProvName não era grande o suficiente para manter o nome do provedor. |
|
Não há mais itens para enumerar. |
|
O sistema operacional ficou sem memória. |
|
O parâmetro dwFlags tem um valor não reconhecido. |
|
Algo estava errado com o registro de tipo. |
Comentários
Essa função enumera os provedores disponíveis em um computador. Os tipos de provedor podem ser enumerados usando CryptEnumProviderTypes.
Exemplos
O exemplo a seguir mostra um loop listando todos os provedores de serviços criptográficos disponíveis. Para obter outro exemplo que usa a função CryptEnumProviders , consulte Exemplo de programa C: enumerando provedores CSP e tipos de provedor.
#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");
}
Observação
O cabeçalho wincrypt.h define CryptEnumProviders 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
Requisito | Valor |
---|---|
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 |