<Return[MN]><Top>

MoveFileEx

Declare Function Api_MoveFileEx& Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName$, ByVal lpNewFileName$, ByVal dwFlags&)

Declare Function MoveFileEx Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long) As Long

既存のファイルまたはディレクトリを移動する。

パラメータ
lpExistingFileName
    ローカルコンピュータ内の既存のファイル名またはディレクトリ名を保持している、NULL で終わる文字列へのポインタを指定する。
    dwflags パラメータで MOVEFILE_DELAY_UNTIL_REBOOT を指定した場合、lpExistingFileName パラメータでは、読み取り専用の

    属性が割り当てられているファイルを指定できない。
    Windows NT/2000:この関数の ANSI 版では、名前は最大 MAX_PATH 文字に制限されている。

    この制限をほぼ 32,000 ワイド文字へ拡張するには、この関数の Unicode 版を呼び出し、パスの前に "\\?\" という接頭辞を追加する。
lpNewFileName
    lpExistingFileName パラメータで指定した、ローカルコンピュータ上のファイルまたはディレクトリに割り当てるべき新しい名前を保持してい

    る、NULL で終わる文字列へのポインタを指定する。
    ファイルを移動する場合は、他のファイルシステムや他のドライブを指定してもかまわない。

    ただし、他のドライブを指定する場合、dwFlags パラメータで MOVEFILE_COPY_ALLOWED フラグを指定しなければならない。
    ディレクトリを移動する場合、他のドライブを指定できない。
    dwFlags パラメータで MOVEFILE_DELAY_UNTIL_REBOOT フラグを指定した場合、lpNewFileName パラメータで NULL を指定でき

    る。

    この場合、MoveFileEx 関数は、次にシステムを再起動する際に lpExistingFileName で指定したファイルを削除するよう登録を行う。

    lpExistingFileName パラメータでディレクトリを指定した場合、再起動時にそのディレクトリが空である場合に限って、システムはそのディレ

    クトリを削除する。
dwFlags
    移動方法を指示するフラグを指定する。次の値のいずれかまたは任意の組み合わせを指定する。

    値                                                             

意味                                                                                                           

    MOVEFILE_COPY_ALLOWED

 

 

 

他のボリュームへファイルを移動するよう指示された場合、この関数は、CopyFile 関数と

DeleteFile 関数を使って、その動作をシミュレートする。
このフラグを、MOVEFILE_DELAY_UNTIL_REBOOT フラグと共に指定することはできない。

    MOVEFILE_COPY_ALLOWED

将来の使用に備えて予約されている。

    MOVEFILE_DELAY_UNTIL_REBOOT

 

 

 

 

 

 

この関数は、オペレーティングシステムを再起動するまでファイルを移動しない。

システムは、AUTOCHK(Windows NT/2000 に付属していて、Chkdsk に相当し、起動時に実行できる)を実行した直後、かつページングファイルを作成する前にファイルを移動する。その後、この値が指定されている場合は、この関数は前回のスタートアップに使ったページングファイルを削除できる。
このフラグを指定できるのは、Administrators グループに所属するユーザーのコンテキスト、または LocalSystem アカウントのコンテキストだけである。
このフラグを、MOVEFILE_COPY_ALLOWED フラグと共に指定することはできない。

    MOVEFILE_FAIL_IF_NOT_TRACKABLE

 

 

Windows 2000:移動元ファイルがリンクソースの場合、このファイルは失敗する。

そして、移動後は、そのファイルのリンクトラッキングを行えない。FAT ファイルシステムでフォーマットされたボリュームを移動先として指定すると、このような問題が発生することがある。

    MOVEFILE_REPLACE_EXISTING

 

 

 

lpNewFileName パラメータで指定されたファイル名が既に存在していた場合、その内容を

lpExistingFileName パラメータで指定されたファイルに置き換える。
lpNewFileName と lpExistingFileName どちらかのパラメータでディレクトリを指定した場合

は、この値を利用できない。

    MOVEFILE_WRITE_THROUGH

 

 

 

ファイルがディスク上で実際に移動するまで、制御を返さない。
このフラグを指定すると、コピーと削除の操作からなる移動操作をディスクへフラッシュした(実際 に書き込んだ)後、この関数から制御が返ることが保証される。コピー操作が終わった後、フラッシュが実施される。 このフラグは、MOVEFILE_DELAY_UNTIL_REBOOT フラグが指定されていると機能しない。


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

解説
    dwFlags パラメータで MOVEFILE_DELAY_UNTIL_REBOOT フラグを指定すると、MoveFileEx 関数は、再起動時に名前を変更するフ

    ァイルの位置を、レジストリの次の値に格納する。