NCryptStreamOpenToUnprotect 函数 (ncryptprotect.h)

NCryptStreamOpenToUnprotect 函数打开一个流对象,该对象可用于将大量数据解密到用于加密的同一保护描述符。 调用 NCryptStreamUpdate 以执行解密。 若要解密较小的消息(如密钥和密码),请调用 NCryptUnprotectSecret

语法

SECURITY_STATUS NCryptStreamOpenToUnprotect(
  [in]           NCRYPT_PROTECT_STREAM_INFO *pStreamInfo,
                 DWORD                      dwFlags,
  [in, optional] HWND                       hWnd,
  [out]          NCRYPT_STREAM_HANDLE       *phStream
);

参数

[in] pStreamInfo

指向 NCRYPT_PROTECT_STREAM_INFO 结构的指针,该结构包含用于接收解密数据的用户定义的回调函数的地址,以及指向用户定义的上下文数据的指针。

dwFlags

一个标志,指定密钥服务提供程序的其他信息。 此值可以为零或以下值。

含义
NCRYPT_SILENT_FLAG
请求关键服务提供程序不显示用户界面。

[in, optional] hWnd

要显示的用户界面的父窗口(如果有)的句柄。

[out] phStream

指向解密数据流句柄的指针。

返回值

返回指示函数成功或失败的状态代码。 可能的返回代码包括但不限于以下内容。

返回代码 说明
ERROR_SUCCESS
函数成功。
NTE_BAD_FLAGS
dwFlags 参数必须包含零 (0) 或 NCRYPT_SILENT_FLAG
NTE_INVALID_PARAMETER
phStreampStreamInfo 参数不能为 NULL

pStreamInfo 参数指向的NCRYPT_PROTECT_STREAM_INFO结构的 pfnStreamOutput 成员所指向的回调函数不能为 NULL

NTE_NO_MEMORY
内存不足,无法分配数据流。

注解

NCryptStreamOpenToUnprotect 函数创建可用于加密大型消息的内部流对象。 不能直接使用 对象。 相反,必须使用此函数返回的对象句柄。

在调用 NCryptStreamUpdate 函数之前调用此函数。 如果要加密大型文件,请在逐个通过文件块的循环中使用 NCryptStreamUpdate ,在文件块前进时加密每个块,并在每个块完成时通知回调。 有关详细信息,请参阅 NCryptStreamUpdate

NCryptStreamOpenToUnprotect 函数从流标头中检索未加密的保护描述符规则字符串。 规则字符串由 NCryptStreamOpenToUnprotect 函数放置在 标头中。

要求

要求
最低受支持的客户端 Windows 8 [仅限桌面应用]
最低受支持的服务器 Windows Server 2012 [仅限桌面应用]
目标平台 Windows
标头 ncryptprotect.h
Library NCrypt.lib
DLL NCrypt.dll

另请参阅

CNG DPAPI 函数

NCRYPT_PROTECT_STREAM_INFO

NCryptStreamClose

NCryptStreamOpenToProtect

NCryptStreamUpdate