Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Memindahkan file atau direktori, termasuk turunannya. Anda dapat menyediakan fungsi panggilan balik yang menerima pemberitahuan kemajuan.
Untuk melakukan operasi ini sebagai operasi yang ditransaksikan, gunakan fungsi moveFileTransacted
Sintaksis
BOOL MoveFileWithProgressW(
[in] LPCWSTR lpExistingFileName,
[in, optional] LPCWSTR lpNewFileName,
[in, optional] LPPROGRESS_ROUTINE lpProgressRoutine,
[in, optional] LPVOID lpData,
[in] DWORD dwFlags
);
Parameter
[in] lpExistingFileName
Nama file atau direktori yang ada pada komputer lokal.
Jika dwFlags menentukan MOVEFILE_DELAY_UNTIL_REBOOT, file tidak dapat ada pada berbagi jarak jauh karena operasi tertunda dilakukan sebelum jaringan tersedia.
Secara default, nama dibatasi untuk MAX_PATH karakter. Untuk memperpanjang batas ini menjadi 32.767 karakter lebar, tambahkan awal "\\?\" ke jalur. Untuk informasi selengkapnya, lihat Penamaan File, Jalur, dan Namespace.
Ujung
Dimulai dengan Windows 10, Versi 1607, Anda dapat memilih untuk menghapus batasan MAX_PATH tanpa prepending "\\?\". Lihat bagian "Batasan Panjang Jalur Maksimum" Penamaan File, Jalur, dan Namespace untuk detailnya.
[in, optional] lpNewFileName
Nama baru file atau direktori pada komputer lokal.
Saat memindahkan file, lpNewFileName dapat berada di sistem atau volume file yang berbeda. Jika lpNewFileName berada di drive lain, Anda harus mengatur bendera MOVEFILE_COPY_ALLOWED di dwFlags.
Saat memindahkan direktori, lpExistingFileName dan lpNewFileName harus berada di drive yang sama.
Jika dwFlags menentukan MOVEFILE_DELAY_UNTIL_REBOOT dan lpNewFileNameNULL, MoveFileWithProgress mendaftar lpExistingFileName akan dihapus saat sistem dimulai ulang. Fungsi gagal jika tidak dapat mengakses registri untuk menyimpan informasi tentang operasi penghapusan. Jika lpExistingFileName mengacu pada direktori, sistem akan menghapus direktori saat dihidupkan ulang hanya jika direktori kosong.
Secara default, nama dibatasi untuk MAX_PATH karakter. Untuk memperpanjang batas ini menjadi 32.767 karakter lebar, tambahkan awal "\\?\" ke jalur. Untuk informasi selengkapnya, lihat Penamaan File, Jalur, dan Namespace.
Ujung
Dimulai dengan Windows 10, Versi 1607, Anda dapat memilih untuk menghapus batasan MAX_PATH tanpa prepending "\\?\". Lihat bagian "Batasan Panjang Jalur Maksimum" Penamaan File, Jalur, dan Namespace untuk detailnya.
[in, optional] lpProgressRoutine
Penunjuk ke fungsi panggilan balik CopyProgressRoutine yang dipanggil setiap kali bagian lain dari file telah dipindahkan. Fungsi panggilan balik dapat berguna jika Anda menyediakan antarmuka pengguna yang menampilkan kemajuan operasi. Parameter ini dapat null.
[in, optional] lpData
Argumen yang akan diteruskan ke fungsi panggilan balik CopyProgressRoutine. Parameter ini dapat null.
[in] dwFlags
Opsi pemindahan. Parameter ini bisa berupa satu atau beberapa nilai berikut.
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError.
Saat memindahkan file di seluruh volume, jika lpProgressRoutine mengembalikan PROGRESS_CANCEL karena pengguna membatalkan operasi, MoveFileWithProgress akan mengembalikan nol dan GetLastError akan mengembalikan ERROR_REQUEST_ABORTED. File yang ada dibiarkan utuh.
Saat memindahkan file di seluruh volume, jika lpProgressRoutine mengembalikan PROGRESS_STOP karena pengguna menghentikan operasi, MoveFileWithProgress akan mengembalikan nol dan GetLastError akan mengembalikan ERROR_REQUEST_ABORTED. File yang ada dibiarkan utuh.
Komentar
Fungsi MoveFileWithProgress mengoordinasikan operasinya dengan layanan pelacakan tautan, sehingga sumber tautan dapat dilacak saat dipindahkan.
Untuk menghapus atau mengganti nama file, Anda harus memiliki izin penghapusan pada file atau menghapus izin anak di direktori induk. Jika Anda menyiapkan direktori dengan semua akses kecuali menghapus dan menghapus anak dan ACL file baru diwariskan, maka Anda harus dapat membuat file tanpa dapat menghapusnya. Namun, Anda kemudian dapat membuat file, dan Anda akan mendapatkan semua akses yang Anda minta pada handel yang dikembalikan kepada Anda pada saat Anda membuat file. Jika Anda meminta izin penghapusan pada saat Anda membuat file, Anda dapat menghapus atau mengganti nama file dengan handel tersebut tetapi tidak dengan yang lain.
Di Windows 8 dan Windows Server 2012, fungsi ini didukung oleh teknologi berikut.
| Teknologi | Didukung |
|---|---|
| Protokol Server Message Block (SMB) 3.0 | Ya |
| Failover Transparan (TFO) SMB 3.0 | Ya |
| SMB 3.0 dengan Scale-out File Shares (SO) | Ya |
| Sistem File Volume Bersama Kluster (CsvFS) | Ya |
| Sistem File Tangguh (ReFS) | Ya |
CsvF akan melakukan IO yang dialihkan untuk file terkompresi.
Nota
Header winbase.h mendefinisikan MoveFileWithProgress sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
| Syarat | Nilai |
|---|---|
| klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
| server minimum yang didukung |
Windows Server 2003 [hanya aplikasi desktop] |
| Platform Target |
Windows |
| Header |
winbase.h (termasuk Windows.h) |
| Pustaka |
Kernel32.lib |
| DLL |
Kernel32.dll |
Lihat juga
MoveFileEx