将一个文件替换为另一个文件,并可以选择创建原始文件的备份副本。 此函数的行为与 ReplaceFile 相同,只不过此函数遵循通用 Windows 平台应用安全模型。
Syntax
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
替换选项。 此参数可以是以下一个或多个值。
| 价值 | Meaning |
|---|---|
| REPLACEFILE_WRITE_THROUGH 0x00000001 | 不支持此值。 |
| REPLACEFILE_IGNORE_MERGE_ERRORS 0x00000002 | 忽略将替换文件中的信息(如属性和 ACL)合并到替换文件时发生的错误。 因此,如果指定此标志并且没有 WRITE_DAC 访问权限,则函数会成功,但不会保留 ACL。 |
| REPLACEFILE_IGNORE_ACL_ERRORS 0x00000004 | 忽略将 ACL 信息从替换文件合并到替换文件时发生的错误。 因此,如果指定此标志并且没有 WRITE_DAC 访问权限,则函数会成功,但不会保留 ACL。 若要编译使用此值的应用程序,请将 _WIN32_WINNT 宏定义为0x0600或更高版本。 |
lpExclude
保留以供将来使用。
lpReserved
保留以供将来使用。
返回值
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。 若要获取扩展的错误信息,请调用 GetLastError。 下面是此函数的可能错误代码。
| 返回代码/值 | Description |
|---|---|
| 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,替换文件和替换文件将保留其原始文件名。 在此方案中,备份文件不存在,并且不能保证替换文件将继承已替换文件的所有属性和流。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows 10 版本 1803 |
| Header | fileapifromapp.h |
| Library | OneCore.Lib |