Функция BCryptResolveProviders (bcrypt.h)

Функция BCryptResolveProviders получает коллекцию всех поставщиков, соответствующих указанным критериям.

Синтаксис

NTSTATUS BCryptResolveProviders(
  [in, optional] LPCWSTR              pszContext,
  [in, optional] ULONG                dwInterface,
  [in, optional] LPCWSTR              pszFunction,
  [in, optional] LPCWSTR              pszProvider,
  [in]           ULONG                dwMode,
  [in]           ULONG                dwFlags,
  [in, out]      ULONG                *pcbBuffer,
  [in, out]      PCRYPT_PROVIDER_REFS *ppBuffer
);

Параметры

[in, optional] pszContext

Указатель на строку Юникода, завершающуюся null, которая содержит идентификатор контекста, для которого требуется получить поставщиков. Если задано значение NULL или пустая строка, предполагается контекст по умолчанию.

[in, optional] dwInterface

Идентификатор интерфейса, который должен поддерживать поставщик. Это должен быть один из идентификаторов интерфейса CNG. Если параметр pszFunction не равен NULL или не является пустой строкой, можно задать для параметра dwInterface значение 0, чтобы функция вывела интерфейс.

[in, optional] pszFunction

Указатель на строку Юникода, завершающуюся null, которая содержит алгоритм или идентификатор функции, который должен поддерживать поставщик. Это может быть один из стандартных идентификаторов алгоритма CNG или идентификатор для другого зарегистрированного алгоритма. Если для dwInterface задано ненулевое значение, то pszFunction может иметь значение NULL , чтобы включить все алгоритмы и функции.

[in, optional] pszProvider

Указатель на строку Юникода, завершающуюся null, которая содержит имя извлекаемого поставщика. Если этот параметр имеет значение NULL, будут включены все поставщики.

Этот параметр позволяет указать конкретный поставщик для получения в случае, если несколько поставщиков соответствуют другим критериям.

[in] dwMode

Указывает тип извлекаемого поставщика. Это может быть одно из следующих значений.

Значение Значение
CRYPT_UM
Получение поставщиков пользовательского режима.
CRYPT_KM
Получение поставщиков режима ядра.
CRYPT_MM
Получение поставщиков пользовательского режима и режима ядра.

[in] dwFlags

Набор флагов, которые изменяют поведение этой функции.

Это может быть ноль или сочетание одного или нескольких из следующих значений.

Значение Значение
CRYPT_ALL_FUNCTIONS
1
Эта функция будет извлекать все функции, поддерживаемые каждым поставщиком, который соответствует указанным критериям. Если этот флаг не указан, эта функция будет извлекать только первую функцию поставщика или поставщиков, соответствующих указанным критериям.
CRYPT_ALL_PROVIDERS
2
Эта функция извлекает все поставщики, соответствующие указанным критериям. Если этот флаг не указан, эта функция будет извлекать только первый найденный поставщик, соответствующий указанным условиям.

[in, out] pcbBuffer

Указатель на значение DWORD , которое в записи содержит размер буфера, на который указывает параметр ppBuffer , в байтах. При выходе это значение получает либо количество байтов, скопированных в буфер, либо требуемый размер (в байтах) буфера.

[in, out] ppBuffer

Адрес указателя CRYPT_PROVIDER_REFS , который получает коллекцию поставщиков, соответствующих указанным критериям.

Если этот параметр имеет значение NULL, эта функция вернет STATUS_SUCCESS и поместит в значение, указанное параметром pcbBuffer , требуемый размер всех данных в байтах.

Если этот параметр является адресом указателя NULL , эта функция выделяет необходимую память, заполняет память сведениями о поставщиках и помещет указатель на эту память в этом параметре. Завершив использование этой памяти, освободите ее, передав указатель на функцию BCryptFreeBuffer .

Если этот параметр является адресом указателя, отличного от NULL , эта функция будет копировать сведения о поставщике в этот буфер. Параметр pcbBuffer должен содержать размер всего буфера в байтах. Если буфер недостаточно велик для хранения всех сведений о поставщике, эта функция вернет STATUS_BUFFER_TOO_SMALL.

Возвращаемое значение

Возвращает код состояния, указывающий на успешное или неудачное выполнение функции.

Возможные коды возврата включают, помимо прочего, следующие.

Код возврата Описание
STATUS_SUCCESS
Функция выполнена успешно.
STATUS_BUFFER_TOO_SMALL
Размер, заданный параметром pcbBuffer , недостаточно велик для хранения всех данных.
STATUS_INVALID_PARAMETER
Один или несколько параметров являются недопустимыми.
STATUS_NOT_FOUND
Не удалось найти поставщика, удовлетворяющего всем указанным критериям.

Комментарии

BCryptResolveProviders можно вызывать из пользовательского режима или режима ядра. Вызывающие вызовы режима ядра должны выполняться на PASSIVE_LEVELIRQL.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header bcrypt.h
Библиотека Bcrypt.lib
DLL Bcrypt.dll