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_READDELETESYNCHRONIZE アクセス権で開かれます。 共有モードは 、FILE_SHARE_DELETE | FILE_SHARE_WRITE | FILE_SHARE_READ

呼び出し元は、置き換えるファイルへの書き込みアクセス権を持っている必要があります。 詳細については、「 ファイル のセキュリティとアクセス権」を参照してください。

lpReplacementFileName

lpReplacedFileName ファイルを置き換えるファイルの名前。

前もって "\\?\" を指定せずに MAX_PATH 制限をオプトアウトする方法については、「 名前付けファイル、パス、および名前空間 」の「パスの最大長制限」セクションを参照してください。

関数は、すべての属性と ACL を保持できるように、 SYNCHRONIZEGENERIC_READGENERIC_WRITEDELETEWRITE_DAC アクセス権を使用してこのファイルを開こうとします。 これが失敗した場合、関数は SYNCHRONIZE、GENERIC_READ、DELETEWRITE_DAC アクセス権を使用してファイル開こうとします。 共有モードは指定されません。

lpBackupFileName

lpReplacedFileName ファイルのバックアップ コピーとして機能するファイルの名前。 このパラメーターが NULL の場合、バックアップ ファイルは作成されません。 バックアップ ファイルの実装の詳細については、「解説」セクションを参照してください。

前もって "\\?\" を指定せずに MAX_PATH 制限をオプトアウトする方法については、「 名前付けファイル、パス、および名前空間 」の「パスの最大長制限」セクションを参照してください。

dwReplaceFlags

置換オプション。 このパラメーターには、次の 1 つ以上の値を指定できます。

意味
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などの他のエラーが返された場合、置換されたファイルと置換されたファイルは元のファイル名を保持します。 このシナリオでは、バックアップ ファイルは存在せず、置き換えられたファイルのすべての属性とストリームが置換ファイルによって継承されるとは限りません。

要件

   
サポートされている最小のクライアント Windows 10 バージョン 1803
Header fileapifromapp.h