Fungsi SetFilePointerEx (fileapi.h)
Memindahkan penunjuk file dari file yang ditentukan.
Sintaks
BOOL SetFilePointerEx(
[in] HANDLE hFile,
[in] LARGE_INTEGER liDistanceToMove,
[out, optional] PLARGE_INTEGER lpNewFilePointer,
[in] DWORD dwMoveMethod
);
Parameter
[in] hFile
Handel ke file. Handel file harus dibuat dengan hak akses GENERIC_READ atau GENERIC_WRITE . Untuk informasi selengkapnya, lihat Keamanan File dan Hak Akses.
[in] liDistanceToMove
Jumlah byte untuk memindahkan penunjuk file. Nilai positif memindahkan penunjuk ke depan dalam file dan nilai negatif memindahkan penunjuk file ke belakang.
[out, optional] lpNewFilePointer
Penunjuk ke variabel untuk menerima penunjuk file baru. Jika parameter ini NULL, penunjuk file baru tidak dikembalikan.
[in] dwMoveMethod
Titik awal untuk pemindahan penunjuk file. Parameter ini bisa menjadi salah satu nilai berikut.
Nilai kembali
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Penunjuk file yang dikembalikan oleh fungsi ini tidak digunakan untuk operasi baca dan tulis yang tumpang tindih. Untuk menentukan offset untuk operasi yang tumpang tindih, gunakan anggota Offset dan OffsetHigh dari struktur YANG TUMPANG TINDIH .
Anda tidak dapat menggunakan fungsi SetFilePointerEx dengan handel ke perangkat nonseeking seperti pipa atau perangkat komunikasi. Untuk menentukan jenis file untuk hFile, gunakan fungsi GetFileType .
Berhati-hatilah saat mengatur penunjuk file dalam aplikasi multithreaded. Anda harus menyinkronkan akses ke sumber daya bersama. Misalnya, aplikasi yang utasnya berbagi handel file, memperbarui penunjuk file, dan membaca dari file harus melindungi urutan ini dengan menggunakan objek bagian penting atau objek mutex. Untuk informasi selengkapnya tentang objek ini, lihat Objek Bagian Penting dan Objek Mutex.
Jika handel hFile dibuka dengan set bendera FILE_FLAG_NO_BUFFERING , aplikasi hanya dapat memindahkan penunjuk file ke posisi yang selaras dengan sektor. Posisi yang selaras dengan sektor adalah posisi yang merupakan kelipatan bilangan bulur dari ukuran sektor volume. Aplikasi dapat memperoleh ukuran sektor volume dengan memanggil fungsi GetDiskFreeSpace . Jika aplikasi memanggil SetFilePointerEx dengan nilai jarak ke pemindahan yang menghasilkan posisi yang tidak selaras dengan sektor dan handel yang dibuka dengan FILE_FLAG_NO_BUFFERING, fungsi gagal, dan GetLastError mengembalikan ERROR_INVALID_PARAMETER. Untuk informasi tambahan, lihat Buffering File.
Perhatikan bahwa ini bukan kesalahan untuk mengatur penunjuk file ke posisi di luar akhir file. Ukuran file tidak meningkat sampai Anda memanggil fungsi SetEndOfFile, WriteFile, atau WriteFileEx . Operasi tulis meningkatkan ukuran file ke posisi penunjuk file ditambah ukuran buffer yang ditulis, yang menghasilkan byte intervensi menjadi nol diinisialisasi.
Anda dapat menggunakan SetFilePointerEx untuk menentukan panjang file. Untuk melakukan ini, gunakan FILE_END untuk dwMoveMethod dan cari lokasi nol. Offset file yang dikembalikan adalah panjang file. Namun, praktik ini dapat memiliki efek samping yang tidak diinginkan, seperti kegagalan menyimpan penunjuk file saat ini sehingga program dapat kembali ke lokasi tersebut. Lebih sederhana dan lebih aman untuk menggunakan fungsi GetFileSizeEx sebagai gantinya.
Anda juga dapat menggunakan SetFilePointerEx untuk mengkueri posisi penunjuk file saat ini. Untuk melakukan ini, tentukan metode pemindahan FILE_CURRENT dan jarak nol.
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 Scale-out File Shares (SO) | Ya |
Sistem File Volume Bersama Kluster (CsvFS) | Ya |
Sistem File Tangguh (ReFS) | Ya |
Persyaratan
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 | fileapi.h (sertakan Windows.h) |
Pustaka | Kernel32.lib |
DLL | Kernel32.dll |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk