MoveFileWithProgressW

ファイルまたはディレクトリ(子を含む)を移動する。進捗通知を受け取るコールバック関数を指定できる。(Unicode)

MoveFileWithProgressW lpExistingFileName, lpNewFileName, lpProgressRoutine, lpData, dwFlags

lpExistingFileName : [wstr] ローカルコンピュータ上の既存ファイルまたはディレクトリの名前。dwFlags に MOVEFILE_DELAY_UNTIL_REBOOT が指定されている場合、遅延操作はネットワーク利用可能前に実行されるため、リモート共有上のファイルであってはならない。この関数の ANSI 版では、名前は MAX_PATH 文字に制限される。この上限を 32,767 ワイド文字まで拡張するには、この関数の Unicode 版を呼び、パスの先頭に "\\?\" を付加する。詳細は「ファイルの命名」を参照。ヒント: Windows 10 バージョン 1607 以降では、この関数の Unicode 版 (MoveFileWithProgressW) について、"\\?\" を付加せずに MAX_PATH 制限を解除するオプトイン機能がある。詳細は「ファイル、パス、名前空間の命名」の「最大パス長制限」の節を参照。
lpNewFileName : [wstr] ローカルコンピュータ上のファイルまたはディレクトリの新しい名前。ファイルを移動する場合、lpNewFileName は別のファイルシステムやボリューム上であってもよい。lpNewFileName が別のドライブ上にある場合、dwFlags に MOVEFILE_COPY_ALLOWED フラグを設定しなければならない。ディレクトリを移動する場合、lpExistingFileName と lpNewFileName は同じドライブ上になければならない。dwFlags に MOVEFILE_DELAY_UNTIL_REBOOT が指定され lpNewFileName が NULL の場合、MoveFileWithProgress はシステム再起動時に削除する対象として lpExistingFileName を登録する。関数が削除操作に関する情報をレジストリに保存できなければ失敗する。lpExistingFileName がディレクトリを参照する場合、再起動時にシステムはディレクトリが空の場合にのみ削除する。この関数の ANSI 版では、名前は MAX_PATH 文字に制限される。この上限を 32,767 ワイド文字まで拡張するには、この関数の Unicode 版を呼び、パスの先頭に "\\?\" を付加する。詳細は「ファイルの命名」を参照。ヒント: Windows 10 バージョン 1607 以降では、この関数の Unicode 版 (MoveFileWithProgressW) について、"\\?\" を付加せずに MAX_PATH 制限を解除するオプトイン機能がある。詳細は「ファイル、パス、名前空間の命名」の「最大パス長制限」の節を参照。
lpProgressRoutine : [int] ファイルの一部が移動されるたびに呼び出される CopyProgressRoutine コールバック関数へのポインタ。操作の進捗を表示するユーザーインターフェイスを提供する場合に有用である。この引数は NULL でもよい。
lpData : [intptr] CopyProgressRoutine コールバック関数に渡す引数。この引数は NULL でもよい。
dwFlags : [int] 

(プラグイン / モジュール : kernel32.dll)

解説

ファイルまたはディレクトリ(子を含む)を移動する。進捗通知を受け取るコールバック関数を指定できる。(Unicode)

[戻り値]
関数が成功した場合、戻り値は 0 以外である。関数が失敗した場合、戻り値は 0 である。拡張エラー情報を取得するには
GetLastError を呼ぶ。ボリュームをまたいでファイルを移動中、ユーザーが操作をキャンセルして lpProgressRoutine
が PROGRESS_CANCEL を返した場合、MoveFileWithProgress は 0 を返し、GetLastError は
ERROR_REQUEST_ABORTED
を返す。既存ファイルはそのまま残される。ボリュームをまたいでファイルを移動中、ユーザーが操作を停止して lpProgressRoutine
が PROGRESS_STOP を返した場合、MoveFileWithProgress は 0 を返し、GetLastError は
ERROR_REQUEST_ABORTED を返す。既存ファイルはそのまま残される。

[備考]
MoveFileWithProgress
関数はリンク追跡サービスと連携して動作するので、リンクの参照元が移動されても追跡できる。ファイルを削除またはリネームするには、そのファイルに対する
delete 権限、または親ディレクトリに対する delete child
権限が必要である。削除と子の削除を除くすべてのアクセスを持つディレクトリを用意し、新規ファイルの ACL
が継承されるよう設定すれば、作成したファイルを削除できない状態で作ることが可能である。ただし、その状態でもファイルを作成でき、作成時に要求したすべてのアクセスを返されたハンドルで取得する。ファイル作成時に
delete 権限を要求すれば、そのハンドルでファイルを削除またはリネームできるが、他のハンドルからはできない。Windows 8 および
Windows Server 2012 では、この関数は次のテクノロジによってサポートされる。
(以下省略)

情報

プラグイン / モジュールkernel32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs