CryptContextAddRef 함수(wincrypt.h)

중요 이 API는 더 이상 사용되지 않습니다. 신규 및 기존 소프트웨어는 암호화 차세대 API를 사용하기 시작해야 합니다. Microsoft는 이후 릴리스에서 이 API를 제거할 수 있습니다.
 
CryptContextAddRef 함수는 HCRYPTPROV암호화 서비스 공급자(CSP) 핸들의 참조 수 하나를 추가합니다. CSP 핸들이 다른 함수에 전달된 구조체의 멤버로 포함된 경우 이 함수를 사용해야 합니다. CSP 핸들이 더 이상 필요하지 않은 경우 CryptReleaseContext 함수를 호출해야 합니다.

통사론

BOOL CryptContextAddRef(
  [in] HCRYPTPROV hProv,
  [in] DWORD      *pdwReserved,
  [in] DWORD      dwFlags
);

매개 변수

[in] hProv

HCRYPTPROV참조 횟수 증가되는 핸들입니다. 이 핸들은 CryptAcquireContext사용하여 이미 만들어졌어야 합니다.

[in] pdwReserved

나중에 사용하도록 예약되며 NULL합니다.

[in] dwFlags

나중에 사용하도록 예약되며 0이어야 합니다.

반환 값

함수가 성공하면 반환 값은 0이 아닌 값(TRUE)입니다.

함수가 실패하면 반환 값은 0(FALSE)입니다. 확장 오류 정보는 GetLastError호출합니다. 가능한 오류 코드 중 하나는 다음과 같은 것입니다.

반환 코드 묘사
ERROR_INVALID_PARAMETER
매개 변수 중 하나에 유효하지 않은 값이 포함되어 있습니다. 이는 가장 자주 유효하지 않은 포인터입니다.

발언

이 함수는 HCRYPTPROV 핸들에서 참조 개수 증가하므로 CryptReleaseContext 대한 여러 호출이 실제로 핸들을 해제해야 합니다.

예제

다음 예제에서는 획득된 CSP 핸들에서 참조 횟수 증가합니다.

//--------------------------------------------------------------------
// hCryptProv is a HCRYPTPROV variable that was previously acquired
// by using CryptAcquireContext or CryptAcquireCertificatePrivateKey.

if(CryptContextAddRef(
       hCryptProv, 
       NULL, 
       0)) 
{
    printf("CryptContextAddRef succeeded. \n");
}
else
{
   printf("Error during CryptContextAddRef!\n");
   exit(1);
}
//--------------------------------------------------------------------
//  The reference count on hCryptProv is now greater than one. The 
//  first call to CryptReleaseContext will not release the provider 
//  handle. A second call to CryptReleaseContext would be needed to 
//  release the context.

이 함수를 사용하는 또 다른 예제는 C 프로그램 예제: CryptAcquireContext사용합니다.

요구 사항

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

참고 항목

CryptAcquireContext

CryptReleaseContext

서비스 공급자 함수