Функция NCryptStreamOpenToProtect (ncryptprotect.h)

Функция NCryptStreamOpenToProtect открывает объект потока, который можно использовать для шифрования больших объемов данных в заданном дескрипторе защиты. Вызовите NCryptStreamUpdate для шифрования содержимого. Чтобы зашифровать небольшие сообщения, такие как ключи и пароли, вызовите NCryptProtectSecret.

Синтаксис

SECURITY_STATUS NCryptStreamOpenToProtect(
  [in]           NCRYPT_DESCRIPTOR_HANDLE   hDescriptor,
                 DWORD                      dwFlags,
  [in, optional] HWND                       hWnd,
  [in]           NCRYPT_PROTECT_STREAM_INFO *pStreamInfo,
  [out]          NCRYPT_STREAM_HANDLE       *phStream
);

Параметры

[in] hDescriptor

Дескриптор дескриптора защиты. Создайте дескриптор, вызвав NCryptCreateProtectionDescriptor.

dwFlags

Флаг может быть равен нулю или следующему значению.

Значение Значение
NCRYPT_SILENT_FLAG
Запрашивает, чтобы поставщик службы ключей не отображал пользовательский интерфейс.

[in, optional] hWnd

Дескриптор к родительскому окну пользовательского интерфейса, если таковой есть, для отображения.

[in] pStreamInfo

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

[out] phStream

Указатель на дескриптор объекта потока.

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

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

Код возврата Описание
ERROR_SUCCESS
Функция выполнена успешно.
NTE_BAD_FLAGS
Параметр dwFlags должен содержать ноль (0), NCRYPT_MACHINE_KEY_FLAG или NCRYPT_SILENT_FLAG.
NTE_INVALID_HANDLE
Дескриптор, указанный параметром hDescriptor , недопустим.
NTE_INVALID_PARAMETER
Параметры phStream и pStreamInfo не могут иметь значение NULL.

Функция обратного вызова, на которую указывает член pfnStreamOutputструктуры NCRYPT_PROTECT_STREAM_INFO , на которую указывает параметр pStreamInfo , не может иметь значение NULL.

NTE_NO_MEMORY
Недостаточно памяти для выделения потока данных.

Комментарии

Функция NCryptStreamOpenToProtect создает объект внутреннего потока, который можно использовать для шифрования больших сообщений. Нельзя использовать объект напрямую. Вместо этого необходимо использовать дескриптор объекта, возвращаемый этой функцией.

Вызовите эту функцию перед вызовом функции NCryptStreamUpdate . Если вы шифруете большой файл, используйте NCryptStreamUpdate в цикле, который проходит через блок файла за блоком, шифруя каждый блок по мере его продвижения и уведомляя обратный вызов по завершении каждого блока. Дополнительные сведения см. в разделе NCryptStreamUpdate.

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

Требования

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

См. также раздел

Функции DPAPI CNG

NCRYPT_PROTECT_STREAM_INFO

NCryptCreateProtectionDescriptor

NCryptStreamClose

NCryptStreamOpenToUnprotect

NCryptStreamUpdate