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

保留以供将来使用,必须为零。

返回值

如果函数成功,则返回值为非零 (TRUE) 。

如果函数失败,则返回值为零 (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
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

CryptAcquireContext

CryptReleaseContext

服务提供程序函数