BCryptEnumRegisteredProviders 函数 (bcrypt.h)
BCryptEnumRegisteredProviders 函数检索有关已注册提供程序的信息。
语法
NTSTATUS BCryptEnumRegisteredProviders(
[in, out] ULONG *pcbBuffer,
[in, out] PCRYPT_PROVIDERS *ppBuffer
);
参数
[in, out] pcbBuffer
指向 ULONG 值的指针,该值在输入时包含 ppBuffer 参数指向的缓冲区的大小(以字节为单位)。 退出时,此值接收复制到缓冲区的字节数或缓冲区的所需大小(以字节为单位)。
[in, out] ppBuffer
指向缓冲区指针的指针,该指针接收 CRYPT_PROVIDERS 结构和描述已注册提供程序集合的其他数据。
如果此参数为 NULL,则此函数将返回 STATUS_BUFFER_TOO_SMALL ,并放置在 由STATUS_BUFFER_TOO_SMALL 参数指向的值中,即所有数据的所需大小(以字节为单位)。
如果此参数是 NULL 指针的地址,则此函数将分配所需的内存,使用有关提供程序的信息填充内存,并将指向此内存的指针放在此参数中。 使用此内存后,请通过将此指针传递给 BCryptFreeBuffer 函数来释放内存。
如果此参数是非 NULL 指针的地址,则此函数会将提供程序信息复制到此缓冲区。 “线路板”参数必须包含整个缓冲区的大小(以字节为单位)。 如果缓冲区不够大,无法保存所有提供程序信息,则此函数将返回 STATUS_BUFFER_TOO_SMALL。
返回值
返回指示函数成功或失败的状态代码。
可能的返回代码包括但不限于以下内容。
返回代码 | 说明 |
---|---|
|
函数成功。 |
|
由线路板参数指定的大小不够大,无法容纳所有数据。 |
|
一个或多个参数无效。 |
注解
可以通过以下两种方式之一调用 BCryptEnumRegisteredProviders 函数:
-
第一个是让 BCryptEnumRegisteredProviders 函数分配内存。 这是通过为 ppBuffer 参数传递 NULL 指针的地址来实现的。
以下示例演示如何使用 BCryptEnumRegisteredProviders 函数通过为 ppBuffer 参数传递 NULL 指针的地址来分配内存。
PCRYPT_PROVIDERS pBuffer = NULL; BCryptEnumRegisteredProviders(/*...*/, &pBuffer);
此代码将分配 CRYPT_PROVIDERS 结构和关联字符串所需的内存。 以这种方式使用 BCryptEnumRegisteredProviders 函数时,必须通过将 ppBuffer 传递到 BCryptFreeBuffer 函数来释放不再需要的内存。
- 第二种方法是自行分配所需的内存。 这是通过为 ppBuffer 参数调用具有 NULL 的 BCryptEnumRegisteredProviders 函数来实现的。 BCryptEnumRegisteredProviders 函数将放置在CRYPT_PROVIDERS结构和所有字符串的所需大小(以字节为单位)的CRYPT_PROVIDERS参数所指向的值中。 然后,在第二次调用 BCryptEnumRegisteredProviders 函数时,分配所需的内存并将此缓冲区指针的地址传递给 ppBuffer 参数。
只能在用户模式下调用 BCryptEnumRegisteredProviders。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | bcrypt.h |
Library | Bcrypt.lib |
DLL | Bcrypt.dll |