Функция WriteEncryptedFileRaw (winbase.h)
Восстанавливает (импорт) зашифрованные файлы. Это одна из групп функций зашифрованной файловой системы (EFS), которая предназначена для реализации функций резервного копирования и восстановления, сохраняя при этом файлы в зашифрованном состоянии.
Синтаксис
DWORD WriteEncryptedFileRaw(
[in] PFE_IMPORT_FUNC pfImportCallback,
[in, optional] PVOID pvCallbackContext,
[in] PVOID pvContext
);
Параметры
[in] pfImportCallback
Указатель на функцию обратного вызова импорта. Система вызывает функцию обратного вызова несколько раз, каждый раз передавая буфер, который будет заполнен функцией обратного вызова частью данных файла резервной копии. Когда функция обратного вызова сообщает, что весь файл был обработан, она сообщает системе, что операция восстановления завершена. Дополнительные сведения см. в разделе ImportCallback.
[in, optional] pvCallbackContext
Указатель на определяемый приложением и выделенный блок контекста. Система передает этот указатель на функцию обратного вызова в качестве параметра, чтобы у функции обратного вызова был доступ к данным конкретного приложения. Это может быть структура и может содержать любые данные, необходимые приложению, например дескриптор файла, который будет содержать резервную копию зашифрованного файла.
[in] pvContext
Указатель на определяемый системой блок контекста. Блок контекста возвращается функцией OpenEncryptedFileRaw . Не изменяйте ее.
Возвращаемое значение
Если функция завершается успешно, возвращаемое значение будет ERROR_SUCCESS.
Если функция завершается сбоем, она возвращает ненулевой код ошибки, определенный в WinError.h. Вы можете использовать FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM , чтобы получить общее текстовое описание ошибки.
Комментарии
Восстанавливаемый файл не расшифровывается; он восстанавливается в зашифрованном состоянии.
Чтобы создать резервную копию зашифрованного файла, вызовите OpenEncryptedFileRaw , чтобы открыть файл. Затем вызовите ReadEncryptedFileRaw, передав ему адрес определяемой приложением функции обратного вызова экспорта. Система вызывает эту функцию обратного вызова несколько раз, пока не будет прочитано и резервное копирование всего файла. После завершения резервного копирования вызовите Метод CloseEncryptedFileRaw , чтобы освободить ресурсы и закрыть файл. Дополнительные сведения о том, как объявить функцию обратного вызова экспорта, см. в разделе ExportCallback .
Чтобы восстановить зашифрованный файл, вызовите OpenEncryptedFileRaw, указав CREATE_FOR_IMPORT в параметре ulFlags . Затем вызовите WriteEncryptedFileRaw, передав ему адрес определяемой приложением функции обратного вызова импорта. Система вызывает эту функцию обратного вызова несколько раз, пока не будет прочитано и восстановлено все содержимое файла. После завершения восстановления вызовите Метод CloseEncryptedFileRaw , чтобы освободить ресурсы и закрыть файл. Дополнительные сведения о том, как объявить функцию обратного вызова экспорта, см. в разделе ImportCallback .
Если файл является разреженным файлом, резервная копия которой была создана из тома с меньшим размером разреженной единицы распределения, чем в томе, в который он восстанавливается, разреженные блоки в середине файла могут неправильно выровняться с более крупными блоками, и вызов функции завершится ошибкой и установит ERROR_INVALID_PARAMETER код последней ошибки. Размер разреженной единицы распределения составляет 16 кластеров или 64 КБ, в зависимости от того, что меньше.
Эта функция предназначена для восстановления только зашифрованных файлов; Сведения о восстановлении незашифрованных файлов см. в разделе BackupWrite .
В Windows 8, Windows Server 2012 и более поздних версиях эта функция поддерживается следующими технологиями.
Технология | Поддерживается |
---|---|
Протокол SMB 3.0 | Да |
SMB 3.0 Transparent Failover (TFO) | Нет |
SMB 3.0 с масштабируемыми общими папками (SO) | Нет |
Файловая система общего тома кластера (CSVFS) | Нет |
Восстанавливаемая файловая система (ReFS) | Нет |
SMB 3.0 не поддерживает EFS в общих папках с возможностью непрерывной доступности.
Требования
Минимальная версия клиента | Windows XP Professional [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | winbase.h (включая Windows.h) |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |
Набор API | ext-ms-win-advapi32-encryptedfile-l1-1-0 (представлено в Windows 8) |