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


Функция ReplaceFileFromAppW (fileapifromapp.h)

Заменяет один файл другим с возможностью создания резервной копии исходного файла. Поведение этой функции идентично Функции ReplaceFile, за исключением того, что она соответствует модели безопасности приложений универсальная платформа Windows.

Синтаксис

WINSTORAGEAPI BOOL ReplaceFileFromAppW(
  LPCWSTR lpReplacedFileName,
  LPCWSTR lpReplacementFileName,
  LPCWSTR lpBackupFileName,
  DWORD   dwReplaceFlags,
  LPVOID  lpExclude,
  LPVOID  lpReserved
) noexcept;

Параметры

lpReplacedFileName

Сведения об отказе от ограничения MAX_PATH без добавления "\?\" см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .

Этот файл открывается с правами доступа GENERIC_READ, DELETE и SYNCHRONIZE . Режим общего доступа FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE.

Вызывающий объект должен иметь доступ на запись к файлу для замены. Дополнительные сведения см. в разделе Безопасность файлов и права доступа.

lpReplacementFileName

Имя файла, который заменит файл lpReplacedFileName .

Сведения об отказе от ограничения MAX_PATH без добавления "\?\" см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .

Функция пытается открыть этот файл с правами доступа SYNCHRONIZE, GENERIC_READ, GENERIC_WRITE, DELETE и WRITE_DAC , чтобы сохранить все атрибуты и списки ACL. Если это не удается, функция пытается открыть файл с правами доступа SYNCHRONIZE, GENERIC_READ, DELETE и WRITE_DAC . Режим общего доступа не указан.

lpBackupFileName

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

Сведения об отказе от ограничения MAX_PATH без добавления "\?\" см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .

dwReplaceFlags

Варианты замены. Этот параметр может быть одним или несколькими из следующих значений.

Значение Значение
0x00000001 REPLACEFILE_WRITE_THROUGH

Это значение не поддерживается.

0x00000002 REPLACEFILE_IGNORE_MERGE_ERRORS

Игнорирует ошибки, возникающие при слиянии сведений (таких как атрибуты и списки ACL) из замененного файла в файл замены. Таким образом, если указать этот флаг и у вас нет доступа к WRITE_DAC , функция будет выполнена успешно, но списки управления доступом не сохраняются.

0x00000004 REPLACEFILE_IGNORE_ACL_ERRORS

Игнорирует ошибки, возникающие при слиянии данных ACL из замененного файла в файл замены. Таким образом, если указать этот флаг и у вас нет доступа к WRITE_DAC , функция будет выполнена успешно, но списки управления доступом не сохраняются. Чтобы скомпилировать приложение, использующее это значение, определите макрос _WIN32_WINNT как 0x0600 или более поздней версии.

lpExclude

Зарезервировано для будущего использования.

lpReserved

Зарезервировано для будущего использования.

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

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

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError. Ниже приведены возможные коды ошибок для этой функции.

Возвращаемый код или значение Описание
ERROR_UNABLE_TO_MOVE_REPLACEMENT 1176 (0x498)

Не удалось переименовать файл замены. Если указан параметр lpBackupFileName , замененные и заменяющие файлы сохраняют исходные имена файлов. В противном случае замененный файл больше не существует, а файл замены существует под его исходным именем.

ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 1177 (0x499)

Не удалось переместить файл замены. Файл замены по-прежнему существует под его исходным именем; однако он наследовал потоки файлов и атрибуты из файла, который он заменяет. Файл для замены по-прежнему существует с другим именем. Если указано значение lpBackupFileName , это будет имя замененного файла.

ERROR_UNABLE_TO_REMOVE_REPLACED 1175 (0x497)

Не удалось удалить замененный файл. Замененные и заменяющие файлы сохраняют исходные имена файлов.

 

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

Требования

   
Минимальная версия клиента Windows 10 версии 1803
Верхняя часть fileapifromapp.h