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 [仅限桌面应用]
目标平台 窗户
标头 wincrypt.h
Advapi32.lib
DLL Advapi32.dll

另请参阅

CryptAcquireContext

CryptReleaseContext

服务提供程序函数