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


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

Функция NCryptGetProperty извлекает значение именованного свойства для объекта хранилища ключей.

Синтаксис

SECURITY_STATUS NCryptGetProperty(
  [in]  NCRYPT_HANDLE hObject,
  [in]  LPCWSTR       pszProperty,
  [out] PBYTE         pbOutput,
  [in]  DWORD         cbOutput,
  [out] DWORD         *pcbResult,
  [in]  DWORD         dwFlags
);

Параметры

[in] hObject

Дескриптор объекта для получения свойства. Это может быть дескриптор поставщика (NCRYPT_PROV_HANDLE) или маркер ключа (NCRYPT_KEY_HANDLE).

[in] pszProperty

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

[out] pbOutput

Адрес буфера, получающего значение свойства. Параметр cbOutput содержит размер этого буфера.

Чтобы вычислить размер буфера, задайте для этого параметра значение NULL. Требуемый размер в байтах возвращается в расположении, на который указывает параметр pcbResult .

[in] cbOutput

Размер буфера pbOutput (в байтах).

[out] pcbResult

Указатель на переменную DWORD , получающую количество байтов, скопированных в буфер pbOutput .

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

[in] dwFlags

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

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

Для свойства NCRYPT_SECURITY_DESCR_PROPERTY этот параметр также должен содержать одно из следующих значений, которое определяет часть извлекаемого дескриптора безопасности.

Значение Значение
OWNER_SECURITY_INFORMATION
Получение идентификатора безопасности (SID) владельца объекта. Используйте функцию GetSecurityDescriptorOwner , чтобы получить идентификатор безопасности владельца из структуры SECURITY_DESCRIPTOR .
GROUP_SECURITY_INFORMATION
Получение идентификатора безопасности основной группы объекта. Используйте функцию GetSecurityDescriptorGroup , чтобы получить идентификатор безопасности группы из структуры SECURITY_DESCRIPTOR .
DACL_SECURITY_INFORMATION
Получите список управления доступом на уровне пользователей (DACL). Используйте функцию GetSecurityDescriptorSacl , чтобы получить список DACL из структуры SECURITY_DESCRIPTOR .
SACL_SECURITY_INFORMATION
Получение списка управления доступом системы (SACL). Используйте функцию GetSecurityDescriptorDacl для получения списка SACL из структуры SECURITY_DESCRIPTOR .

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

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

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

Код возврата Описание
ERROR_SUCCESS Функция выполнена успешно.
NTE_BAD_FLAGS Параметр dwFlags содержит недопустимое значение.
NTE_INVALID_HANDLE Недопустимый параметр hObject.
NTE_INVALID_PARAMETER Один или несколько параметров недопустимы.
NTE_NO_MEMORY Произошел сбой выделения памяти.
NTE_NOT_SUPPORTED Указанное свойство не поддерживается для объекта .

Комментарии

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

Требования

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