CryptContextAddRef 함수(wincrypt.h)

중요 이 API는 더 이상 사용되지 않습니다. 신규 및 기존 소프트웨어는 Cryptography Next Generation 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

서비스 공급자 함수