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

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

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

[in] dwInterface

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

Value 含义
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 指针的地址,此函数会将提供程序信息复制到此缓冲区中。 sshBuffer 参数必须包含整个缓冲区的大小(以字节为单位)。 如果缓冲区不够大,无法容纳所有提供程序信息,则此函数将返回 STATUS_BUFFER_TOO_SMALL

返回值

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

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

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

注解

BCryptQueryProviderRegistration 只能在用户模式下调用。

要求

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

另请参阅

BCryptFreeBuffer

CRYPT_PROVIDER_REG