Поделиться через


Функция 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 равным нулю, чтобы принудить функцию выводить интерфейс.

[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 [только классические приложения]
целевая платформа Виндоус
заголовка bcrypt.h
библиотеки Bcrypt.lib
DLL Bcrypt.dll