<Return[R]><Top>

ReplaceFile

Declare Function Api_ReplaceFile& Lib "kernel32" Alias "ReplaceFile" (ByVal lpReplacedFileName$, ByVal lpReplacementFileName$, ByVal lpBackupFileName$, ByVal dwReplaceFlags&, lpExclude As Any, lpReserved As Any)

Declare Function ReplaceFile Lib "kernel32" (ByVal lpReplacedFileName As String, ByVal lpReplacementFileName As String, ByVal lpBackupFileName As String, ByVal dwReplaceFlags As Long, lpExclude As Any, lpReserved As Any) As Long

ファイルを別のファイルに置換する。このとき、オプションで元のファイルのバックアップコピーを作成することができる。置換ファイルは、元のファイルの名前とアイデンティティを引き継ぐ。実行結果は、すべてのデータがファイルに保存されるか、元のファイルが変更されないかのいずれかになる。 (参照:http://support.microsoft.com/kb/274487/ja

パラメータ
lpReplacedFileName
    lpReplacementFileName ファイルで置換するファイルの名前を表す、NULL で終わる文字列へのポインタを指定する。
lpReplacementFileName
    lpReplacedFileName ファイルを置換するファイルの名前を表す、NULL で終わる文字列へのポインタを指定する。
lpBackupFileName
    lpReplacedFileName ファイルのバックアップコピー名を表す、NULL で終わる文字列へのポインタを指定する。

    このパラメータに NULL 値を指定すると、バックアップファイルは作成されない。
dwReplaceFlags
    ファイルの置換方法を決定するフラグセットを指定する。このパラメータには、次の値を組み合わせて指定する。

    値                                                                 

意味                                                                                                        

    REPLACEFILE_WRITE_THROUGH

 

関数が戻る前に、置換されたファイルからコピーされた情報が確実にディスクにフラッシュ

される。

    REPLACEFILE_IGNORE_MERGE_ERRORS

置換されたファイルと置換ファイルの情報を併合するときに発生するエラーを無視する。

lpExclude
    将来使うために予約されている。
lpReserved
    将来使うために予約されている。
 

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

    GetLastError 関数からは、この関数に固有な次のいずれかのエラーコードが返る。

    エラーコード                                                              

意味                                                                                            

    ERROR_UNABLE_TO_REMOVE_REPLACED

 

置換されたファイルを削除できなかった。置換されるファイルと置換ファイルの名前は、元のまま変更されていない。

    ERROR_UNABLE_TO_MOVE_REPLACEMENT

 

置換ファイルの名前を変更できなかった。LpBackupFileName パラメータが指定されている場合は、置換されたファイルと置換ファイルの名前は元のまま変更されていない。LpBackupFileName パラメータが指定されていない場合は、置換されたファイルは削除され、置換ファイルが元の名前のまま残っている。

    ERROR_UNABLE_TO_MOVE_REPLACEMENT_2

 

 

 

置換ファイルの名前を変更できなかった。置換ファイルは元の名前のまま残って

いる。また、置換されたファイルは、lpBackupFileName パラメータで指定された名前で残っている。このエラーは lpBackupFileName パラメータが NULL でないときだけに発生する。

    ERROR_INVALID_PARAMETER などのエラーが返される場合は、置換されるファイルと置換ファイルは元の名前のまま変更されない。

解説
    ReplaceFile 関数は、複数の手順を 1 つの関数としてまとめたものである。

    アプリケーションでは、新規ファイルへのデータの保存、元のファイル名の一時的な変更、元のファイル名を使うための名前変更、元のファ

    イルの削除などの操作を、別個の関数を複数呼び出して処理するかわりに、ReplaceFile 関数のみで処理することができる。また、

    ReplaceFile 関数を使うと、新規ファイルのデータをコピーするだけでなく、次のような元のファイルの属性も保存することができる。
    ・作成日時
    ・短いファイル名
    ・オブジェクト識別子
    ・ACL
    ・暗号化
    ・圧縮
    ・置換ファイルにない名前付きストリーム
    たとえば、置換ファイルが暗号化されており、置換されるファイルが暗号化されていない場合は、関数の実行結果として得られるファイルは

    暗号化されない。
    バックアップファイル、置換されるファイル、および置換ファイルは、すべて同じボリューム上になければならない。