1 つのファイルを別のファイルに置き換え、元のファイルのバックアップ コピーを作成するオプションで置き換えます。 この関数の動作は 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 制限から除外する方法の詳細については、「ファイル、パス 、および名前空間の名前付け 」の「パスの最大長制限」セクションを参照してください。
この関数は、すべての属性と ACL を保持できるように、 SYNCHRONIZE、 GENERIC_READ、 GENERIC_WRITE、 DELETE、 および WRITE_DAC アクセス権を使用してこのファイルを開こうとします。 これが失敗した場合、関数は SYNCHRONIZE、 GENERIC_READ、 DELETE、および WRITE_DAC アクセス権を使用してファイルを開こうとします。 共有モードは指定されません。
lpBackupFileName
lpReplacedFileName ファイルのバックアップ コピーとして機能するファイルの名前。 このパラメーターが NULL の場合、バックアップ ファイルは作成されません。 バックアップ ファイルの実装の詳細については、「解説」セクションを参照してください。
前もって "\\?\" を指定せずに MAX_PATH 制限から除外する方法の詳細については、「ファイル、パス 、および名前空間の名前付け 」の「パスの最大長制限」セクションを参照してください。
dwReplaceFlags
置換オプション。 このパラメーターには、次の値のうち 1 つ以上を指定できます。
| 価値 | 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
将来の使用のために予約済み。
戻り値
関数が成功した場合、戻り値は 0 以外です。
関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、 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など、他のエラーが返された場合、置き換えられたファイルと置換されたファイルは元のファイル名を保持します。 このシナリオでは、バックアップ ファイルは存在せず、置き換えられたファイルのすべての属性とストリームが置換ファイルによって継承されるとは限りません。
Requirements
| Requirement | 価値 |
|---|---|
| サポートされる最小クライアント | Windows 10 バージョン 1803 |
| Header | fileapifromapp.h |
| Library | OneCore.Lib |