NCryptGetProperty 函数 (ncrypt.h)

NCryptGetProperty 函数检索密钥存储对象的命名属性的值。

语法

SECURITY_STATUS NCryptGetProperty(
  [in]  NCRYPT_HANDLE hObject,
  [in]  LPCWSTR       pszProperty,
  [out] PBYTE         pbOutput,
  [in]  DWORD         cbOutput,
  [out] DWORD         *pcbResult,
  [in]  DWORD         dwFlags
);

参数

[in] hObject

要获取其 属性的 对象的句柄。 这可以是提供程序句柄 (NCRYPT_PROV_HANDLE) ,也可以是密钥句柄 (NCRYPT_KEY_HANDLE) 。

[in] pszProperty

指向以 null 结尾的 Unicode 字符串的指针,该字符串包含要检索的属性的名称。 这可以是预定义的 密钥存储属性标识符 之一,也可以是自定义属性标识符。

[out] pbOutput

接收属性值的缓冲区的地址。 cbOutput 参数包含此缓冲区的大小。

若要计算缓冲区所需的大小,请将此参数设置为 NULL。 所需的大小(以字节为单位)在 由印刷电路板Result 参数指向的位置返回。

[in] cbOutput

pbOutput 缓冲区的大小(以字节为单位)。

[out] pcbResult

指向 DWORD 变量的指针,该变量接收复制到 pbOutput 缓冲区的字节数。

如果 pbOutput 参数为 NULL,则缓冲区所需的大小(以字节为单位)将放置在此参数指向的位置。

[in] dwFlags

用于修改函数行为的标志。 此值可以为零或以下值。

含义
NCRYPT_PERSIST_ONLY_FLAG
忽略此属性的任何内置值,仅检索密钥的用户持久化属性。 任何持久化属性的最大数据大小为 NCRYPT_MAX_PROPERTY_DATA 字节。
NCRYPT_SILENT_FLAG
请求关键服务提供程序 (KSP) 不显示任何用户界面。 如果提供程序必须显示 UI 才能操作,则调用将失败,KSP 应将 NTE_SILENT_CONTEXT 错误代码设置为最后一个错误。

对于 NCRYPT_SECURITY_DESCR_PROPERTY 属性,此参数还必须包含以下值之一,该值标识要检索的安全描述符的一部分。

含义
OWNER_SECURITY_INFORMATION
检索对象所有者 (SID) 的安全标识符。 使用 GetSecurityDescriptorOwner 函数从 SECURITY_DESCRIPTOR 结构获取所有者 SID。
GROUP_SECURITY_INFORMATION
检索对象的主组的 SID。 使用 GetSecurityDescriptorGroup 函数从 SECURITY_DESCRIPTOR 结构获取组 SID。
DACL_SECURITY_INFORMATION
检索 DACL) (任意访问控制列表。 使用 GetSecurityDescriptorSacl 函数从 SECURITY_DESCRIPTOR 结构获取 DACL。
SACL_SECURITY_INFORMATION
(SACL) 检索系统访问控制列表。 使用 GetSecurityDescriptorDacl 函数从 SECURITY_DESCRIPTOR 结构获取 SACL。

返回值

返回指示函数成功或失败的状态代码。

可能的返回代码包括但不限于以下内容。

返回代码 说明
ERROR_SUCCESS 函数成功。
NTE_BAD_FLAGS 参数 dwFlags 包含无效的值。
NTE_INVALID_HANDLE hObject 参数无效。
NTE_INVALID_PARAMETER 一个或多个参数无效。
NTE_NO_MEMORY 内存分配失败。
NTE_NOT_SUPPORTED 对象不支持指定的 属性。

注解

服务不得从其 StartService 函数调用此函数。 如果服务从其 StartService 函数调用此函数,则可能会出现死锁,并且该服务可能会停止响应。

要求

要求
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 ncrypt.h
Library Ncrypt.lib
DLL Ncrypt.dll