다음을 통해 공유


CertAddCTLLinkToStore 함수(wincrypt.h)

CertAddCTLLinkToStore 함수는 저장소의 링크를 다른 저장소의 CTL(인증서 신뢰 목록) 컨텍스트에 추가합니다. 이 함수는 CTL 컨텍스트의 중복을 만들고 추가하는 대신 원래 CTL 컨텍스트에 대한 링크를 추가합니다.

구문

BOOL CertAddCTLLinkToStore(
  [in]            HCERTSTORE    hCertStore,
  [in]            PCCTL_CONTEXT pCtlContext,
  [in]            DWORD         dwAddDisposition,
  [out, optional] PCCTL_CONTEXT *ppStoreContext
);

매개 변수

[in] hCertStore

링크를 추가할 인증서 저장소의 핸들입니다.

[in] pCtlContext

연결할 CTL_CONTEXT 구조체에 대한 포인터입니다.

[in] dwAddDisposition

일치하는 CTL 또는 일치하는 CTL에 대한 링크가 저장소에 이미 있는 경우 수행할 작업을 지정합니다. 현재 정의된 처리 값 및 해당 용도는 다음과 같습니다.

의미
CERT_STORE_ADD_ALWAYS
일치하는 기존 CTL 또는 일치하는 CTL에 대한 링크에 대해 검사 않습니다. 새 CTL은 항상 저장소에 추가됩니다. 이로 인해 저장소에서 중복이 발생할 수 있습니다.
CERT_STORE_ADD_NEW
일치하는 CTL 또는 일치하는 CTL에 대한 링크가 있는 경우 작업이 실패합니다. GetLastError 는 CRYPT_E_EXISTS 코드를 반환합니다.
CERT_STORE_ADD_NEWER
일치하는 CTL 또는 일치하는 CTL에 대한 링크가 있는 경우 CTL의 ThisUpdate 시간이 비교됩니다. 기존 CTL의 ThisUpdate 시간이 새 CTL의 ThisUpdate 시간보다 작은 경우 이전 CTL 또는 링크는 CERT_STORE_ADD_REPLACE_EXISTING 그대로 대체됩니다. 기존 CTL에 추가할 CTL의 ThisUpdate 시간보다 크거나 같은 ThisUpdate 시간이 있는 경우 GetLastError 가 CRYPT_E_EXISTS 코드를 반환하면서 함수가 실패합니다.

일치하는 CTL 또는 일치하는 CTL에 대한 링크가 저장소에 없으면 새 CTL이 저장소에 추가됩니다.

CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
작업은 이전 CTL을 교체하는 경우 이전 CTL의 속성이 대체 CTL에 통합된다는 점을 제외하고 CERT_STORE_ADD_NEWER 경우와 동일합니다.
CERT_STORE_ADD_REPLACE_EXISTING
일치하는 CTL 또는 일치하는 CTL에 대한 링크가 있는 경우 기존 CTL 또는 링크가 삭제되고 새 CTL이 만들어지고 저장소에 추가됩니다. 일치하는 CTL 또는 일치하는 CTL에 대한 링크가 없는 경우 하나가 추가됩니다.
CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
일치하는 CTL이 저장소에 있는 경우 새 컨텍스트를 만들고 추가하기 전에 기존 컨텍스트가 삭제됩니다. 추가된 컨텍스트는 기존 CTL에서 속성을 상속합니다.
CERT_STORE_ADD_USE_EXISTING
일치하는 CTL 또는 일치하는 CTL에 대한 링크가 있는 경우 기존 CTL이 사용되고 새 CTL의 속성이 추가됩니다. 함수는 실패하지 않지만 새 CTL은 추가되지 않습니다. ppCertContextNULL이 아니면 기존 컨텍스트가 중복됩니다.

일치하는 CTL 또는 일치하는 CTL에 대한 링크가 없는 경우 새 CTL이 추가됩니다.

[out, optional] ppStoreContext

만든 링크의 복사본에 대한 포인터에 대한 포인터입니다. ppStoreContext 는 링크의 복사본이 필요하지 않음을 나타내는 NULL 일 수 있습니다. 링크의 복사본이 만들어지면 CertFreeCTLContext를 사용하여 해당 복사본을 해제해야 합니다.

반환 값

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

함수가 실패하면 반환 값은 FALSE입니다. 확장 오류 정보는 GetLastError를 호출합니다. 몇 가지 가능한 오류 코드는 다음과 같습니다.

반환 코드 설명
CRYPT_E_EXISTS
CERT_STORE_ADD_NEW dwAddDisposition의 경우 CTL이 저장소에 이미 있습니다.
E_INVALIDARG
dwAddDisposition 매개 변수로 지정된 추가 처리가 잘못되었습니다.

설명

링크는 원래 CTL 컨텍스트에 대한 액세스를 제공하므로 연결된 CTL 컨텍스트에서 확장 속성을 설정하면 원래 CTL의 위치와 해당 CTL에 대한 다른 링크에서 확장된 속성이 변경됩니다.

컬렉션으로 열려 있는 저장소에 링크를 추가할 수 없습니다. 컬렉션으로 열린 저장소에는 CERT_STORE_PROV_SYSTEM 또는 CERT_STORE_PROV_COLLECTION 사용하여 CertOpenSystemStore 또는 CertOpenStore 로 열린 모든 저장소가 포함됩니다. CertAddStoreToCollection도 참조하세요.

링크를 사용하고 CERT_CLOSE_STORE_FORCE_FLAG 사용하여 CertCloseStore 를 호출하는 경우 원래 컨텍스트가 포함된 저장소를 닫기 전에 링크를 사용하는 저장소를 닫아야 합니다. CERT_CLOSE_STORE_FORCE_FLAG 사용하지 않으면 두 저장소를 두 순서로 닫을 수 있습니다.

인증서 저장소에서 CTL 컨텍스트 링크를 제거하려면 CertDeleteCTLFromStore 함수를 사용합니다.

요구 사항

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

추가 정보

CertAddCRLLinkToStore

CertAddCertificateLinkToStore

CertAddStoreToCollection

CertFreeCTLContext

CertOpenSystemStore

인증서 신뢰 목록 함수