Fungsi SetCurrentDirectory (winbase.h)
Mengubah direktori saat ini untuk proses saat ini.
Sintaks
BOOL SetCurrentDirectory(
[in] LPCTSTR lpPathName
);
Parameter
[in] lpPathName
Jalur ke direktori baru saat ini. Parameter ini dapat menentukan jalur relatif atau jalur lengkap. Dalam kedua kasus, jalur lengkap direktori yang ditentukan dihitung dan disimpan sebagai direktori saat ini.
Untuk informasi selengkapnya, lihat Menamai file, jalur, dan namespace layanan.
Secara default, nama terbatas pada MAX_PATH karakter.
Tip
Dimulai dengan Windows 10, Versi 1607, Anda dapat memilih untuk menghapus batasan MAX_PATH. Untuk detailnya, lihat bagian Batasan panjang jalur maksimumdari Penamaan file, jalur, dan namespace.
Penting
Mengatur direktori saat ini lebih lama dari MAX_PATH menyebabkan CreateProcessW gagal.
Karakter akhir sebelum karakter null harus berupa garis miring terbalik ('\'). Jika Anda tidak menentukan garis miring terbalik, maka garis miring tersebut akan ditambahkan untuk Anda. Oleh karena itu, tentukan >karakter MAX_PATH-2 untuk jalur kecuali Anda menyertakan garis miring terbelakang; dalam hal ini, tentukan karakter MAX_PATH-1 untuk jalur tersebut.
Mengembalikan nilai
Jika fungsi berhasil, maka nilai yang dikembalikan bukan nol.
Jika fungsi gagal, maka nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Setiap proses memiliki satu direktori saat ini yang terdiri dari dua bagian:
- Pendesain disk yang merupakan huruf kandar diikuti dengan titik dua, atau nama server dan nama berbagi (\\servername\sharename)
- Direktori pada pendesain disk
Direktori saat ini dibagikan oleh semua utas proses: Jika satu utas mengubah direktori saat ini, itu mempengaruhi semua utas dalam proses.
Aplikasi multithreaded dan kode pustaka bersama harus menghindari panggilan fungsi SetCurrentDirectory karena risiko memengaruhi perhitungan jalur relatif yang dilakukan oleh utas lain. Sebaliknya
aplikasi multithreaded dan kode pustaka bersama harus menghindari penggunaan jalur relatif sehingga tidak terpengaruh oleh perubahan pada direktori saat ini yang dilakukan oleh utas lain.
Catatan
Direktori saat ini untuk proses dikunci saat proses sedang dijalankan. Hal ini mencegah direktori dihapus, dipindahkan, atau diganti namanya.
Di Windows 8 dan Windows Server 2012, fungsi ini didukung oleh teknologi berikut.
Teknologi | Didukung |
---|---|
Protokol Server Message Block (SMB) 3.0 | Ya |
SMB 3.0 Transparent Failover (TFO) | Ya |
SMB 3.0 dengan Berbagi File Peluasan Skala (SO) | Ya |
Sistem File Volume Bersama Kluster (CsvFS) | Ya |
Sistem File Tangguh (ReFS) | Ya |
Contoh
Misalnya, lihat Mengubah direktori saat ini.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2003 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | winbase.h (termasuk Windows.h) |
Pustaka | Kernel32.lib |
DLL | Kernel32.dll |