Función CertEnumCertificatesInStore (wincrypt.h)
La función CertEnumCertificatesInStore recupera el primer o siguiente certificado de un almacén de certificados. Se usa en un bucle , esta función puede recuperar en secuencia todos los certificados de un almacén de certificados.
Sintaxis
PCCERT_CONTEXT CertEnumCertificatesInStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pPrevCertContext
);
Parámetros
[in] hCertStore
Identificador de un almacén de certificados.
[in] pPrevCertContext
Puntero al CERT_CONTEXT del contexto de certificado 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 en el puntero devuelto por una llamada anterior a la función. Esta función libera la CERT_CONTEXT a la que hacen referencia los valores que no son NULL de este parámetro.
En el caso de los almacenes lógicos, incluidos los almacenes de recopilación, no se puede usar un duplicado de pCertContext devuelto por esta función para iniciar una nueva subsecuencia de enumeraciones porque el certificado duplicado pierde el estado de enumeración inicial. La enumeración omite cualquier certificado eliminado previamente por CertDeleteCertificateFromStore.
Valor devuelto
Si la función se realiza 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. |
Comentarios
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 valor pPrevCertContext noNULL pasado a CertEnumCertificatesInStore siempre se libera incluso por un error.
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 usa esta función, vea Programa C de ejemplo: eliminación de 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 | Value |
---|---|
Cliente mínimo compatible | Windows XP [aplicaciones de escritorio | aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | wincrypt.h |
Library | Crypt32.lib |
Archivo DLL | Crypt32.dll |
Consulte también
CertDeleteCertificateFromStore
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de