CertCloseStore 함수(wincrypt.h)

CertCloseStore 함수는 인증서 저장소 핸들을 닫고 저장소의 참조 수를 줄입니다. CertOpenStore 또는 CertDuplicateStore 함수를 성공적으로 호출할 때마다 CertCloseStore에 대한 해당 호출이 있어야 합니다.

구문

BOOL CertCloseStore(
  [in] HCERTSTORE hCertStore,
  [in] DWORD      dwFlags
);

매개 변수

[in] hCertStore

닫을 인증서 저장소의 핸들입니다.

[in] dwFlags

일반적으로 이 매개 변수는 기본값 0을 사용합니다. 기본값은 해제되지 않은 컨텍스트에 대해 메모리가 할당된 상태로 저장소를 닫는 것입니다. 이 경우 컨텍스트에 대한 메모리가 할당된 상태로 유지되는지 여부를 결정하는 검사 없습니다.

플래그 설정은 저장소를 닫을 때 저장소의 모든 인증서, CRL( 인증서 해지 목록 ) 및 CTL( 인증서 신뢰 목록 ) 컨텍스트에 대한 메모리를 강제로 해제할 수 있습니다. 저장소의 모든 인증서, CRL 및 CTL 컨텍스트가 해제되었는지 여부를 검사 플래그를 설정할 수도 있습니다. 다음 값이 정의됩니다.

의미
CERT_CLOSE_STORE_CHECK_FLAG
자주 설정되지 않은 인증서, CRL 및 CTL 컨텍스트를 확인합니다. 반환된 오류 코드는 하나 이상의 저장소 요소가 여전히 사용 중임을 나타냅니다. 이 플래그는 애플리케이션 개발에서 진단 도구로만 사용해야 합니다.
CERT_CLOSE_STORE_FORCE_FLAG
저장소와 연결된 모든 컨텍스트에 대해 메모리를 강제로 해제합니다. 이 플래그는 저장소가 함수에서 열리고 저장소 핸들이나 해당 컨텍스트가 호출된 함수에 전달되지 않는 경우에만 안전하게 사용할 수 있습니다. 자세한 내용은 설명을 참조하세요.

반환 값

함수가 성공하면 반환 값은 TRUE입니다.

함수가 실패하면 반환 값은 FALSE입니다. 확장된 오류 정보는 GetLastError를 호출합니다.

CERT_CLOSE_STORE_CHECK_FLAG 설정되지 않았거나 설정되고 저장소와 연결된 모든 컨텍스트가 해제된 경우 반환 값은 TRUE입니다.

CERT_CLOSE_STORE_CHECK_FLAG 설정되고 저장소와 연결된 하나 이상의 컨텍스트에 대한 메모리가 할당된 상태로 유지되는 경우 반환 값은 FALSE입니다. 함수가 FALSE를 반환하는 경우에도 저장소는 항상 닫힙니다. 자세한 내용은 설명을 참조하세요.

저장소와 연결된 컨텍스트에 대한 메모리가 할당된 상태로 유지되는 경우 GetLastError는 CRYPT_E_PENDING_CLOSE 설정됩니다. CERT_CLOSE_STORE_CHECK_FLAG 설정되지 않은 한 GetLastError 에서 반환된 모든 기존 값은 유지됩니다.

설명

인증서 저장소가 열려 있는 동안 해당 저장소 의 컨텍스트를 검색하거나 복제할 수 있습니다. 컨텍스트를 검색하거나 복제하면 해당 참조 수가 증가합니다. 컨텍스트를 이전 컨텍스트로 검색 또는 열거형 함수에 전달하거나 CertFreeCertificateContext, CertFreeCRLContext 또는 CertFreeCTLContext사용하여 컨텍스트를 해제하면 해당 참조 수가 감소합니다. 컨텍스트의 참조 수가 0에 도달하면 해당 컨텍스트에 할당된 메모리가 자동으로 해제됩니다. 컨텍스트에 할당된 메모리가 해제되면 해당 컨텍스트에 대한 포인터가 유효하지 않습니다.

기본적으로 참조 수가 0보다 큰 컨텍스트를 저장하는 데 사용되는 메모리는 인증서 저장소를 닫을 때 해제되지 않습니다. 이러한 컨텍스트에 대한 참조는 유효한 상태로 유지됩니다. 그러나 이로 인해 메모리 누수가 발생할 수 있습니다. 또한 저장소를 닫은 후 컨텍스트의 속성에 대한 변경 내용은 유지되지 않습니다.

저장소와 연결된 모든 컨텍스트에 대해 메모리를 강제로 해제하려면 CERT_CLOSE_STORE_FORCE_FLAG 설정합니다. 이 플래그를 설정하면 저장소와 연결된 모든 컨텍스트에 대한 메모리가 해제되고 저장소와 연결된 인증서, CRL 또는 CTL 컨텍스트에 대한 모든 포인터가 유효하지 않습니다. 이 플래그는 저장소가 함수에서 열리고 저장소 핸들이나 해당 컨텍스트가 호출된 함수에 전달되지 않은 경우에만 설정해야 합니다.

CERT_CLOSE_STORE_CHECK_FLAG 사용하여 저장소를 닫을 때 저장소와 연결된 컨텍스트에 대한 참조 수의 상태 확인할 수 있습니다. 이 플래그가 설정되고 모든 인증서, CRL 또는 CTL 컨텍스트가 해제되지 않은 경우 함수는 FALSE 를 반환하고 GetLastError 는 CRYPT_E_PENDING_CLOSE 반환합니다. FALSE가 반환되고 활성 컨텍스트에 대한 메모리가 해제되지 않으면 저장소가 여전히 닫힙니다.

저장소를 열 때 CERT_STORE_NO_CRYPT_RELEASE_FLAG 설정되지 않은 경우 저장소를 닫으면 CSP 핸들이 해제됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 wincrypt.h
라이브러리 Crypt32.lib
DLL Crypt32.dll

추가 정보

CertDuplicateStore

CertFreeCRLContext

CertFreeCTLContext

CertFreeCertificateContext

CertOpenStore

인증서 저장소 함수

CryptReleaseContext