BCryptQueryProviderRegistration 函数 (bcrypt.h)

BCryptQueryProviderRegistration 函数检索有关 CNG 提供程序的信息。

语法

NTSTATUS BCryptQueryProviderRegistration(
  [in]      LPCWSTR             pszProvider,
  [in]      ULONG               dwMode,
  [in]      ULONG               dwInterface,
  [in, out] ULONG               *pcbBuffer,
  [in, out] PCRYPT_PROVIDER_REG *ppBuffer
);

参数

[in] pszProvider

指向以 null 结尾的 Unicode 字符串的指针,该字符串包含要获取相关信息的提供程序的名称。

[in] dwMode

指定要检索的信息的类型。 这可以是以下值之一。

含义
CRYPT_ANY
检索提供程序的任何信息。
CRYPT_UM
检索提供程序的用户模式信息。
CRYPT_KM
检索提供程序的内核模式信息。
CRYPT_MM
检索提供程序的用户模式和内核模式信息。

[in] dwInterface

指定要检索其信息的接口。 这可以是以下值之一。

含义
BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE
检索非对称加密接口。
BCRYPT_CIPHER_INTERFACE
检索密码接口。
BCRYPT_HASH_INTERFACE
检索哈希接口。
NCRYPT_KEY_STORAGE_INTERFACE
检索密钥存储接口。
BCRYPT_RNG_INTERFACE
检索随机数生成器接口。
NCRYPT_SCHANNEL_INTERFACE
检索 Schannel 接口。
BCRYPT_SECRET_AGREEMENT_INTERFACE
检索机密协议接口。
BCRYPT_SIGNATURE_INTERFACE
检索签名接口。

[in, out] pcbBuffer

指向 ULONG 值的指针,该值在输入时包含 ppBuffer 参数指向的缓冲区的大小(以字节为单位)。 退出时,此值接收复制到缓冲区的字节数或缓冲区的所需大小(以字节为单位)。

注意 这是整个缓冲区的总大小(以字节为单位),而不仅仅是 CRYPT_PROVIDER_REG 结构的大小。 缓冲区必须能够保存提供程序的其他数据以及 CRYPT_PROVIDER_REG 结构。
 

[in, out] ppBuffer

指向缓冲区指针的指针,该指针接收 CRYPT_PROVIDER_REG 结构和描述提供程序的其他数据。

如果此参数为 NULL,则此函数将返回 STATUS_BUFFER_TOO_SMALL ,并放置在 由STATUS_BUFFER_TOO_SMALL 参数指向的值中,即所有数据的所需大小(以字节为单位)。

如果此参数是 NULL 指针的地址,则此函数将分配所需的内存,用提供程序信息填充它,并在此参数中放置指向此内存的指针。 使用此内存后,请通过将此指针传递给 BCryptFreeBuffer 函数来释放内存。

如果此参数是非 NULL 指针的地址,则此函数会将提供程序信息复制到此缓冲区。 “线路板”参数必须包含整个缓冲区的大小(以字节为单位)。 如果缓冲区不够大,无法保存所有提供程序信息,则此函数将返回 STATUS_BUFFER_TOO_SMALL

返回值

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

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

返回代码 说明
STATUS_SUCCESS
函数成功。
STATUS_INVALID_PARAMETER
一个或多个参数无效。
STATUS_BUFFER_TOO_SMALL
由线路板参数指定的大小不够大,无法容纳所有数据。
STATUS_NOT_FOUND
找不到与指定条件匹配的提供程序。

注解

只能在用户模式下调用 BCryptQueryProviderRegistration

要求

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

另请参阅

BCryptFreeBuffer

CRYPT_PROVIDER_REG