Função CryptEnumProviderTypesA (wincrypt.h)
Os tipos de provedor incluem PROV_RSA_FULL, PROV_RSA_SCHANNEL e PROV_DSS.
Sintaxe
BOOL CryptEnumProviderTypesA(
[in] DWORD dwIndex,
[in] DWORD *pdwReserved,
[in] DWORD dwFlags,
[out] DWORD *pdwProvType,
[out] LPSTR szTypeName,
[in, out] DWORD *pcbTypeName
);
Parâmetros
[in] dwIndex
Índice do próximo tipo de 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 DWORD valor que designa o tipo de provedor enumerado.
[out] szTypeName
Um ponteiro para um buffer que recebe os dados do tipo de provedor enumerado. Essa é uma cadeia de caracteres que inclui o caractere de NULL
Esse parâmetro pode ser NULL para obter o tamanho do nome para fins de alocação de memória. Para obter mais informações, consulte Recuperando dados dede comprimento desconhecido.
[in, out] pcbTypeName
Um ponteiro para um valor DWORD especificando o tamanho, em bytes, do buffer apontado pelo parâmetro pszTypeName. Quando a função retorna, o valor DWORD contém o número de bytes armazenados ou a serem armazenados no buffer. Alguns tipos de provedor não têm nomes de exibição e, nesse caso, nenhum nome é retornado e o valor retornado apontado por pcbTypeName é zero.
Valor de retorno
Se a função for bem-sucedida, o valor retornado não será 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 |
---|---|
|
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. |
Observações
Essa função enumera os tipos de provedor disponíveis em um computador. Provedores para qualquer tipo de provedor específico podem ser enumerados usando CryptEnumProviders.
Exemplos
O exemplo a seguir mostra um loop listando todos os tipos de provedor de serviços criptográficos disponíveis.
#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.
}
Para outro exemplo que usa a função CryptEnumProviderTypes, consulte Exemplo de Programa C: Enumerando provedores CSP e tipos de provedor.
Nota
O cabeçalho wincrypt.h define CryptEnumProviderTypes como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows Server 2003 [somente aplicativos da área de trabalho] |
da Plataforma de Destino |
Windows |
cabeçalho | wincrypt.h |
biblioteca | Advapi32.lib |
de DLL |
Advapi32.dll |
Consulte também