Função CertEnumCertificatesInStore (wincrypt.h)
A função CertEnumCertificatesInStore
Sintaxe
PCCERT_CONTEXT CertEnumCertificatesInStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pPrevCertContext
);
Parâmetros
[in] hCertStore
Um identificador de um repositório de certificados .
[in] pPrevCertContext
Um ponteiro para o CERT_CONTEXT do contexto de certificado anterior encontrado.
Esse parâmetro deve ser NULL para iniciar a enumeração e obter o primeiro certificado no repositório. Certificados sucessivos são enumerados definindo pPrevCertContext para o ponteiro retornado por uma chamada anterior para a função. Essa função libera o
Para
Valor de retorno
Se a função for bem-sucedida, a função retornará um ponteiro para o próximo CERT_CONTEXT no repositório. Se não houver mais certificados no repositório, a função retornará NULL.
Para obter informações de erro estendidas, chame GetLastError. Alguns códigos de erro possíveis seguem.
Valor | Descrição |
---|---|
|
O identificador no parâmetro hCertStore não é o mesmo que no contexto de certificado apontado por pPrevCertContext. |
|
Nenhum certificado foi encontrado. Isso acontece se o repositório estiver vazio ou se a função tiver atingido o final da lista do repositório. |
|
Aplica-se a repositórios externos. Nenhum certificado foi encontrado. Isso acontece se o repositório estiver vazio ou se a função tiver atingido o final da lista do repositório. |
Observações
O ponteiro retornado é liberado quando passado como o parâmetro pPrevCertContext em uma chamada subsequente. Caso contrário, o ponteiro deverá ser liberado chamando CertFreeCertificateContext. Um
Uma duplicata do certificado enumerado no momento pode ser feita chamando CertDuplicateCertificateContext.
Exemplos
O exemplo a seguir lista os contextos de certificado no repositório de certificados. Para obter outro exemplo que usa essa função, consulte Exemplo de Programa C: excluindo certificados de um repositório de certificados.
#include <windows.h>
#include <stdio.h>
#include <Wincrypt.h>
#pragma comment(lib, "crypt32.lib")
//--------------------------------------------------------------------
// Declare and initialize variables.
HANDLE hStoreHandle = NULL;
PCCERT_CONTEXT pCertContext = NULL;
char * pszStoreName = "CA";
//--------------------------------------------------------------------
// Open a system certificate store.
if (hStoreHandle = CertOpenSystemStore(
NULL,
pszStoreName))
{
printf("The %s store has been opened. \n", pszStoreName);
}
else
{
printf("The store was not opened.\n");
exit(1);
}
//-------------------------------------------------------------------
// Find the certificates in the system store.
while(pCertContext= CertEnumCertificatesInStore(
hStoreHandle,
pCertContext)) // on the first call to the function,
// this parameter is NULL
// on all subsequent calls,
// this parameter is the last pointer
// returned by the function
{
//----------------------------------------------------------------
// Do whatever is needed for a current certificate.
// ...
} // End of while.
//--------------------------------------------------------------------
// Clean up.
if (!CertCloseStore(
hStoreHandle,
0))
{
printf("Failed CertCloseStore\n");
exit(1);
}
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP [aplicativos da área de trabalho | Aplicativos UWP] |
servidor com suporte mínimo | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
da Plataforma de Destino |
Windows |
cabeçalho | wincrypt.h |
biblioteca | Crypt32.lib |
de DLL |
Crypt32.dll |
Consulte também
CertDeleteCertificateFromStore
CertDuplicateCertificateContext
CertFindCRLInStore