Función CertEnumCertificatesInStore (wincrypt.h)
La función
Sintaxis
PCCERT_CONTEXT CertEnumCertificatesInStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pPrevCertContext
);
Parámetros
[in] hCertStore
Identificador de un almacén de certificados de .
[in] pPrevCertContext
Puntero al CERT_CONTEXT del contexto de certificado de anterior encontrado.
Este parámetro debe ser NULL para comenzar la enumeración y obtener el primer certificado del almacén. Los certificados sucesivos se enumeran estableciendo pPrevCertContext al puntero devuelto por una llamada anterior a la función. Esta función libera los valores de CERT_CONTEXT a los que hace referencia novalores NULL de este parámetro.
Para almacenes lógicos, incluidos los almacenes de recopilación, un duplicado del pCertContext devuelto por esta función no se puede usar para iniciar una nueva subsecuencia de enumeraciones porque el certificado duplicado pierde la enumeración inicial estado. La enumeración omite cualquier certificado eliminado previamente por CertDeleteCertificateFromStore.
Valor devuelto
Si la función se ejecuta correctamente, la función devuelve un puntero al siguiente CERT_CONTEXT del almacén. Si no existen más certificados en el almacén, la función devuelve NULL.
Para obtener información de error extendida, llame a GetLastError. A continuación se indican algunos códigos de error posibles.
Valor | Descripción |
---|---|
|
El identificador del parámetro hCertStore no es el mismo que en el contexto del certificado al que apunta pPrevCertContext. |
|
No se encontraron certificados. Esto sucede si el almacén está vacío o si la función alcanzó el final de la lista del almacén. |
|
Se aplica a almacenes externos. No se encontraron certificados. Esto sucede si el almacén está vacío o si la función alcanzó el final de la lista del almacén. |
Observaciones
El puntero devuelto se libera cuando se pasa como parámetro pPrevCertContext en una llamada posterior. De lo contrario, el puntero debe liberarse llamando a CertFreeCertificateContext. Un
Se puede realizar un duplicado del certificado enumerado actualmente llamando a CertDuplicateCertificateContext.
Ejemplos
En el ejemplo siguiente se enumeran los contextos de certificado en el almacén de certificados. Para obtener otro ejemplo que use esta función, vea Programa C de ejemplo: eliminar certificados de un almacén 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 |
---|---|
cliente mínimo admitido | Windows XP [aplicaciones de escritorio | Aplicaciones para UWP] |
servidor mínimo admitido | Windows Server 2003 [aplicaciones de escritorio | Aplicaciones para UWP] |
de la plataforma de destino de |
Windows |
encabezado de |
wincrypt.h |
biblioteca de |
Crypt32.lib |
DLL de |
Crypt32.dll |
Consulte también
CertDeleteCertificateFromStore