MoveFileTransactedW

既存のファイルまたはディレクトリ(子を含む)を、トランザクション操作として移動する。(Unicode)

MoveFileTransactedW lpExistingFileName, lpNewFileName, lpProgressRoutine, lpData, dwFlags, hTransaction

lpExistingFileName : [wstr] ローカルコンピュータ上の既存ファイルまたはディレクトリの現在の名前。この関数の ANSI 版では、名前は MAX_PATH 文字に制限される。この上限を 32,767 ワイド文字まで拡張するには、この関数の Unicode 版を呼び、パスの先頭に "\\?\" を付加する。詳細は「ファイルの命名」を参照。
lpNewFileName : [wstr] ファイルまたはディレクトリの新しい名前。新しい名前は既に存在していてはならない。新しいファイルは別のファイルシステムやドライブにあってもよい。新しいディレクトリは同じドライブ上になければならない。この関数の ANSI 版では、名前は MAX_PATH 文字に制限される。この上限を 32,767 ワイド文字まで拡張するには、この関数の Unicode 版を呼び、パスの先頭に "\\?\" を付加する。詳細は「ファイルの命名」を参照。
lpProgressRoutine : [int] ファイルの一部が移動されるたびに呼び出される CopyProgressRoutine コールバック関数へのポインタ。操作の進捗を表示するユーザーインターフェイスを提供する場合に有用である。この引数は NULL でもよい。
lpData : [intptr] CopyProgressRoutine コールバック関数に渡す引数。この引数は NULL でもよい。
dwFlags : [int] 
hTransaction : [intptr] トランザクションのハンドル。このハンドルは CreateTransaction 関数が返す。

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

解説

既存のファイルまたはディレクトリ(子を含む)を、トランザクション操作として移動する。(Unicode)

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

[備考]
dwFlags 引数に MOVEFILE_DELAY_UNTIL_REBOOT が指定されている場合、MoveFileTransacted
はレジストリにアクセスできないと失敗する。関数は、再起動時にリネーム対象となるファイルの位置を、トランザクションとして次のレジストリ値に保存する:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
Manager\PendingFileRenameOperations
このレジストリ値は REG_MULTI_SZ 型である。各リネーム操作は、削除かどうかに応じて、次のいずれかの null
終端文字列を保存する: szDstFile\0\0 szSrcFile\0szDstFile\0 文字列 szDstFile\0\0
は、ファイル szDstFile を再起動時に削除することを示す。文字列 szSrcFile\0szDstFile\0
は、szSrcFile を再起動時に szDstFile にリネームすることを示す。注: 厳密には \0\0 は REG_MULTI_SZ
ノードでは許可されていないが、これはファイルが null
名にリネームされるものとみなされるため可能である。システムはこれらのレジストリエントリを用いて、発行された順と同じ順序で再起動時に操作を完了する。MOVEFILE_DELAY_UNTIL_REBOOT
フラグの使用方法の詳細は MoveFileWithProgress
を参照。ファイルがボリュームをまたいで移動される場合、MoveFileTransacted
はセキュリティ記述子をファイルとともに移動しない。ファイルには移動先ディレクトリの既定のセキュリティ記述子が割り当てられる。MOVEFILE_FAIL_IF_NOT_TRACKABLE
フラグを指定すると、この関数は常に失敗する。トラッキングは TxF ではサポートされていない。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