Fungsi MoveFileExA (winbase.h)
Memindahkan file atau direktori yang ada, termasuk turunannya, dengan berbagai opsi pemindahan.
Fungsi
Untuk melakukan operasi ini sebagai operasi yang ditransaksikan, gunakan fungsi moveFileTransacted
Sintaksis
BOOL MoveFileExA(
[in] LPCSTR lpExistingFileName,
[in, optional] LPCSTR lpNewFileName,
[in] DWORD dwFlags
);
Parameter
[in] lpExistingFileName
Nama file atau direktori saat ini 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, tujuan dapat berada di sistem atau volume file yang berbeda. Jika tujuan berada di drive lain, Anda harus mengatur bendera MOVEFILE_COPY_ALLOWED di dwFlags.
Saat memindahkan direktori, tujuan harus berada di drive yang sama.
Jika
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] dwFlags
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 (0). Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError.
Komentar
Jika parameter
Nilai registri ini berjenis REG_MULTI_SZ. Setiap operasi ganti nama menyimpan salah satu string yang dihentikan NULL berikut, tergantung pada apakah penggantian nama adalah penghapusan atau tidak:
- szSrcFile \0\0
- szSrcFile\0szDstFile\0
MoveFileEx(szSrcFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
MoveFileEx(szSrcFile, szDstFile, MOVEFILE_DELAY_UNTIL_REBOOT);
Karena operasi pemindahan dan penghapusan aktual yang ditentukan dengan bendera MOVEFILE_DELAY_UNTIL_REBOOT terjadi setelah aplikasi panggilan berhenti berjalan, nilai pengembalian tidak dapat mencerminkan keberhasilan atau kegagalan dalam memindahkan atau menghapus file. Sebaliknya, itu mencerminkan keberhasilan atau kegagalan dalam menempatkan entri yang sesuai ke dalam registri.
Sistem menghapus direktori yang ditandai untuk dihapus dengan bendera MOVEFILE_DELAY_UNTIL_REBOOT hanya jika kosong. Untuk memastikan penghapusan direktori, pindahkan atau hapus semua file dari direktori sebelum mencoba menghapusnya. File mungkin ada di direktori pada waktu boot, tetapi harus dihapus atau dipindahkan sebelum sistem dapat menghapus direktori.
Operasi pemindahan dan penghapusan dilakukan pada waktu boot dalam urutan yang sama yang ditentukan dalam aplikasi panggilan. Untuk menghapus direktori yang memiliki file di dalamnya pada waktu boot, pertama-tama hapus file.
Jika file dipindahkan ke seluruh volume, MoveFileEx tidak memindahkan deskriptor keamanan dengan file. File diberi deskriptor keamanan default di direktori tujuan.
Fungsi MoveFileEx
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 mendapatkan semua akses yang Anda minta pada handel yang dikembalikan kepada Anda pada saat Anda membuat file. Jika Anda meminta izin penghapusan pada saat membuat file, Anda dapat menghapus atau mengganti nama file dengan handel tersebut tetapi tidak dengan handel lain. Untuk informasi selengkapnya, lihat Keamanan File dan Hak Akses.
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 |
Contoh
Misalnya, lihat Membuat dan Menggunakan File Sementara.
Persyaratan
Syarat | Nilai |
---|---|
klien minimum yang didukung | Windows XP [aplikasi desktop | Aplikasi UWP] |
server minimum yang didukung |
Windows Server 2003 [aplikasi desktop | Aplikasi UWP] |
Platform Target |
Windows |
Header |
winbase.h (termasuk Windows.h) |
Pustaka |
Kernel32.lib |
DLL |
Kernel32.dll |
Lihat juga
Keamanan File dan Hak Akses