Функция BCryptEnumContextFunctions (bcrypt.h)
Функция BCryptEnumContextFunctions получает криптографические функции для контекста в указанной таблице конфигурации.
Синтаксис
NTSTATUS BCryptEnumContextFunctions(
[in] ULONG dwTable,
[in] LPCWSTR pszContext,
[in] ULONG dwInterface,
[in, out] ULONG *pcbBuffer,
[in, out] PCRYPT_CONTEXT_FUNCTIONS *ppBuffer
);
Параметры
[in] dwTable
Определяет таблицу конфигурации, из которой извлекаются функции контекста. Это может быть одно из следующих значений.
Значение | Значение |
---|---|
|
Получите функции контекста из таблицы конфигурации локального компьютера. |
|
Это значение недоступно для использования. |
[in] pszContext
Указатель на строку Юникода, завершающуюся null, которая содержит идентификатор контекста для перечисления функций.
[in] dwInterface
Определяет криптографический интерфейс для получения функций. Это может быть одно из следующих значений.
[in, out] pcbBuffer
Адрес переменной ULONG , которая в записи содержит размер (в байтах) буфера, на который указывает ppBuffer. Если этот размер недостаточно велик для хранения набора идентификаторов контекста, эта функция завершится сбоем с STATUS_BUFFER_TOO_SMALL.
После возврата этой функции это значение содержит количество байтов, скопированных в буфер ppBuffer .
[in, out] ppBuffer
Адрес указателя на структуру CRYPT_CONTEXT_FUNCTIONS , которая получает набор контекстных функций, полученных этой функцией. Значение, на которое указывает параметр pcbBuffer , содержит размер этого буфера.
Если значение, указываемое этим параметром, равно NULL, эта функция выделяет необходимую память. Эта память должна быть освобождена, если она больше не нужна, передав этот указатель на функцию BCryptFreeBuffer .
Если этот параметр имеет значение NULL, эта функция поместит необходимый размер в байтах в переменную, на которую указывает параметр pcbBuffer , и вернет STATUS_BUFFER_TOO_SMALL.
Возвращаемое значение
Возвращает код состояния, указывающий на успешное или неудачное выполнение функции.
Возможные коды возврата включают, помимо прочего, следующие.
Код возврата | Описание |
---|---|
|
Функция выполнена успешно. |
|
Параметр ppBuffer не имеет значения NULL, а значение, указываемое параметром pcbBuffer , недостаточно велико для хранения набора контекстов. |
|
Один или несколько параметров недопустимы. |
|
Произошел сбой выделения памяти. |
|
Контекстные функции, соответствующие указанным критериям, не найдены. |
Комментарии
BCryptEnumContextFunctions можно вызывать только в пользовательском режиме.
Примеры
В следующем примере показано, как использовать функцию BCryptEnumContextFunctions для перечисления функций хранилища ключей для всех контекстов в таблице конфигурации локального компьютера.
#include <windows.h>
#include <stdio.h>
#include <Bcrypt.h>
#pragma comment(lib, "Bcrypt.lib")
#ifndef NT_SUCCESS
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
#endif
NTSTATUS EnumContextFunctions()
{
NTSTATUS status;
ULONG uSize = 0;
PCRYPT_CONTEXTS pContexts = NULL;
// Get the contexts for the local machine.
// CNG will allocate the memory for us.
status = BCryptEnumContexts(CRYPT_LOCAL, &uSize, &pContexts);
if(NT_SUCCESS(status))
{
// Enumerate the context identifiers.
for(ULONG uContextIndex = 0;
uContextIndex < pContexts->cContexts;
uContextIndex++)
{
wprintf(L"Context functions for %s:\n",
pContexts->rgpszContexts[uContextIndex]);
// Get the functions for this context.
// CNG will allocate the memory for us.
PCRYPT_CONTEXT_FUNCTIONS pContextFunctions = NULL;
status = BCryptEnumContextFunctions(
CRYPT_LOCAL,
pContexts->rgpszContexts[uContextIndex],
NCRYPT_SCHANNEL_INTERFACE,
&uSize,
&pContextFunctions);
if(NT_SUCCESS(status))
{
// Enumerate the functions.
for(ULONG i = 0;
i < pContextFunctions->cFunctions;
i++)
{
wprintf(L"\t%s\n",
pContextFunctions->rgpszFunctions[i]);
}
// Free the context functions buffer.
BCryptFreeBuffer(pContextFunctions);
}
}
// Free the contexts buffer.
BCryptFreeBuffer(pContexts);
}
return status;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | bcrypt.h |
Библиотека | Bcrypt.lib |
DLL | Bcrypt.dll |