cryptReleaseContext 函数 (wincrypt.h)

重要 此 API 已弃用。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
 
CryptReleaseContext 函数释放加密服务提供程序的句柄 (CSP) 和密钥容器。 每次调用此函数时,CSP 上的 引用计数 都会减少 1。 当引用计数达到零时, 上下文 将完全释放,并且应用程序中的任何函数都不能再使用它。

应用程序在完成 CSP 的使用后调用此函数。 调用此函数后,释放的 CSP 句柄不再有效。 此函数不会销毁 密钥容器密钥对

语法

BOOL CryptReleaseContext(
  [in] HCRYPTPROV hProv,
  [in] DWORD      dwFlags
);

参数

[in] hProv

加密服务提供程序 (CSP) 调用 CryptAcquireContext 创建的句柄。

[in] dwFlags

保留以供将来使用,必须为零。 如果未将 dwFlags 设置为零,则此函数返回 FALSE ,但会释放 CSP。

返回值

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

如果函数失败,则返回值为零 (FALSE) 。 有关扩展的错误信息,请调用 GetLastError。 下表列出了一些可能的错误代码。

返回代码 说明
ERROR_BUSY
hProv 指定的 CSP 上下文当前正由另一个进程使用。
ERROR_INVALID_HANDLE
其中一个参数指定无效的句柄。
ERROR_INVALID_PARAMETER
其中一个参数包含无效的值。 这通常是无效的指针。
NTE_BAD_FLAGS
dwFlags 参数为非零值。
NTE_BAD_UID
hProv 参数不包含有效的上下文句柄。

备注

调用此函数后,CSP 会话已完成,使用 hProv 句柄创建的所有现有会话密钥和哈希对象将不再有效。 实际上,在调用 CryptReleaseContext 之前,应通过调用 CryptDestroyKeyCryptDestroyHash 来销毁所有这些对象。

示例

有关使用此函数的示例,请参阅 示例 C 程序:创建和哈希处理会话密钥

要求

   
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 wincrypt.h
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

CryptAcquireContext

CryptDestroyHash

CryptDestroyKey

服务提供程序函数