CertEnumCertificatesInStore 함수(wincrypt.h)
CertEnumCertificatesInStore 함수는 인증서 저장소첫 번째 또는 다음 인증서를 검색합니다. 루프에서 사용되는 이 함수는 인증서 저장소의 모든 인증서를 순서대로 검색할 수 있습니다.
통사론
PCCERT_CONTEXT CertEnumCertificatesInStore(
[in] HCERTSTORE hCertStore,
[in] PCCERT_CONTEXT pPrevCertContext
);
매개 변수
[in] hCertStore
인증서 저장소핸들입니다.
[in] pPrevCertContext
이전
이 매개 변수는 NULL
컬렉션 저장소를 포함하여
반환 값
함수가 성공하면 함수는 저장소의 다음 CERT_CONTEXT 대한 포인터를 반환합니다. 저장소에 인증서가 더 이상 없으면 함수는 NULL반환합니다.
확장 오류 정보는 GetLastError호출합니다. 몇 가지 가능한 오류 코드는 다음과 같습니다.
값 | 묘사 |
---|---|
|
hCertStore 매개 변수의 핸들은 pPrevCertContext가리키는 인증서 컨텍스트의 핸들과 다릅니다. |
|
인증서를 찾을 수 없습니다. 이 문제는 저장소가 비어 있거나 함수가 저장소 목록의 끝에 도달한 경우에 발생합니다. |
|
외부 저장소에 적용됩니다. 인증서를 찾을 수 없습니다. 이 문제는 저장소가 비어 있거나 함수가 저장소 목록의 끝에 도달한 경우에 발생합니다. |
발언
반환된 포인터는 후속 호출에서 pPrevCertContext 매개 변수로 전달되면 해제됩니다. 그렇지 않으면 CertFreeCertificateContext호출하여 포인터를 해제해야 합니다. CertEnumCertificatesInStore 전달된NULLpPrevCertContext 오류가 발생하더라도 항상 해제됩니다.
CertDuplicateCertificateContext호출하여 현재 열거된 인증서의 중복을 만들 수 있습니다.
예제
다음 예제에서는 인증서 저장소의 인증서 컨텍스트를 나열합니다. 이 함수를 사용하는 또 다른 예제는 C 프로그램 예제: 인증서 저장소인증서 삭제를 참조하세요.
#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);
}
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | wincrypt.h |
라이브러리 | Crypt32.lib |
DLL | Crypt32.dll |
참고 항목
CertDeleteCertificateFromStore