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


Функция NCryptEnumKeys (ncrypt.h)

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

Синтаксис

SECURITY_STATUS NCryptEnumKeys(
  [in]           NCRYPT_PROV_HANDLE hProvider,
  [in, optional] LPCWSTR            pszScope,
  [out]          NCryptKeyName      **ppKeyName,
  [in, out]      PVOID              *ppEnumState,
  [in]           DWORD              dwFlags
);

Параметры

[in] hProvider

Дескриптор поставщика хранилища ключей для перечисления ключей. Этот дескриптор получается с помощью функции NCryptOpenStorageProvider .

[in, optional] pszScope

Этот параметр в настоящее время не используется и должен иметь значение NULL.

[out] ppKeyName

Адрес указателя на структуру NCryptKeyName , получающую имя полученного ключа. Когда приложение завершит использование этой памяти, освободите ее, вызвав функцию NCryptFreeBuffer .

[in, out] ppEnumState

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

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

[in] dwFlags

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

Значение Значение
NCRYPT_MACHINE_KEY_FLAG
Перечисление ключей для локального компьютера. Если этот флаг отсутствует, перечисляются текущие ключи пользователя.
NCRYPT_SILENT_FLAG
Запрашивает, чтобы поставщик служб ключей (KSP) не отображал пользовательский интерфейс. Если поставщик должен отображать пользовательский интерфейс для работы, вызов завершается сбоем, а KSP должен задать код ошибки NTE_SILENT_CONTEXT как последнюю ошибку.

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

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

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

Код возврата Описание
ERROR_SUCCESS
Функция выполнена успешно.
NTE_BAD_FLAGS
Параметр dwFlags содержит недопустимое значение.
NTE_INVALID_HANDLE
Недопустимый параметр hProvider .
NTE_INVALID_PARAMETER
Один или несколько параметров недопустимы.
NTE_NO_MEMORY
Произошел сбой выделения памяти.
NTE_NO_MORE_ITEMS
Достигнут конец перечисления.
NTE_SILENT_CONTEXT
Параметр dwFlags содержит флаг NCRYPT_SILENT_FLAG , но перечисляемый ключ требует участия пользователя.

Комментарии

Эта функция получает только один элемент при каждом вызове. Состояние перечисления хранится в переменной, на которую указывает параметр ppEnumState , поэтому оно должно сохраняться между вызовами этой функции. При извлечении последнего ключа, хранящегося у поставщика, эта функция возвращает NTE_NO_MORE_ITEMS при следующем вызове. Чтобы начать перечисление заново, задайте для переменной, на которую указывает параметр ppEnumState , значение NULL, освободите память, на которую указывает параметр ppKeyName , если она не имеет значение NULL, и снова вызовите эту функцию.

Служба не должна вызывать эту функцию из функции StartService. Если служба вызывает эту функцию из функции StartService, может возникнуть взаимоблокировка, и служба может перестать отвечать.

Требования

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