Fungsi ReOpenFile (winbase.h)
Membuka kembali objek sistem file yang ditentukan dengan hak akses, mode berbagi, dan bendera yang berbeda.
Sintaks
HANDLE ReOpenFile(
[in] HANDLE hOriginalFile,
[in] DWORD dwDesiredAccess,
[in] DWORD dwShareMode,
[in] DWORD dwFlagsAndAttributes
);
Parameter
[in] hOriginalFile
Handel ke objek yang akan dibuka kembali. Objek harus dibuat oleh fungsi CreateFile .
[in] dwDesiredAccess
Akses yang diperlukan ke objek . Untuk daftar nilai, lihat Keamanan File dan Hak Akses. Anda tidak dapat meminta mode akses yang berkonflik dengan mode berbagi yang ditentukan dalam permintaan terbuka sebelumnya yang handelnya masih terbuka.
Jika parameter ini nol (0), aplikasi dapat mengkueri atribut perangkat tanpa mengakses perangkat. Ini berguna jika aplikasi ingin menentukan ukuran disk drive floppy dan format yang didukungnya tanpa memerlukan floppy di drive.
[in] dwShareMode
Mode berbagi objek. Anda tidak dapat meminta mode berbagi yang berkonflik dengan mode akses yang ditentukan dalam permintaan terbuka sebelumnya yang handelnya masih terbuka.
Jika parameter ini nol (0) dan CreateFile berhasil, objek tidak dapat dibagikan dan tidak dapat dibuka lagi sampai handel ditutup.
Untuk mengaktifkan proses lain untuk berbagi objek saat proses Anda membukanya, gunakan kombinasi satu atau beberapa nilai berikut untuk menentukan jenis akses yang dapat mereka minta saat membuka objek. Opsi berbagi ini tetap berlaku hingga Anda menutup handel ke objek.
[in] dwFlagsAndAttributes
Bendera file. Parameter ini bisa menjadi satu atau beberapa nilai berikut.
Nilai | Makna |
---|---|
|
Menunjukkan bahwa file sedang dibuka atau dibuat untuk operasi pencadangan atau pemulihan. Sistem memastikan bahwa proses panggilan mengambil alih pemeriksaan keamanan file, asalkan memiliki hak SE_BACKUP_NAME dan SE_RESTORE_NAME . Untuk informasi selengkapnya, lihat Mengubah Hak Istimewa dalam Token.
Anda juga dapat mengatur bendera ini untuk mendapatkan handel ke direktori. Jika ditunjukkan, handel direktori dapat diteruskan ke beberapa fungsi sebagai pengganti handel file. |
|
Menunjukkan bahwa sistem operasi adalah menghapus file segera setelah semua handelnya ditutup, bukan hanya handel yang ditentukan tetapi juga handel terbuka atau duplikat lainnya.
Permintaan terbuka berikutnya untuk file gagal, kecuali FILE_SHARE_DELETE digunakan. |
|
Menginstruksikan sistem untuk membuka file tanpa buffering atau penembolokan menengah. Ketika dikombinasikan dengan FILE_FLAG_OVERLAPPED, bendera memberikan performa asinkron maksimum, karena I/O tidak bergantung pada operasi sinkron manajer memori. Namun, beberapa operasi I/O membutuhkan waktu lebih lama, karena data tidak disimpan di cache.
Aplikasi harus memenuhi persyaratan khusus saat bekerja dengan file yang dibuka dengan FILE_FLAG_NO_BUFFERING:
Aplikasi dapat menentukan ukuran sektor volume dengan memanggil fungsi GetDiskFreeSpace . |
|
Menunjukkan bahwa data file diminta, tetapi harus terus berada di penyimpanan jarak jauh. Ini tidak boleh diangkut kembali ke penyimpanan lokal. Bendera ini ditujukan untuk digunakan oleh sistem penyimpanan jarak jauh. |
|
Ketika bendera ini digunakan, pemrosesan titik pemilah ulang normal tidak terjadi, dan ReOpenFile mencoba membuka titik pemilah ulang. Ketika file dibuka, handel file dikembalikan, apakah filter yang mengontrol titik pemilah ulang beroperasi atau tidak. Bendera ini tidak dapat digunakan dengan bendera CREATE_ALWAYS . Jika file bukan titik pemilah ulang, maka bendera ini diabaikan. |
|
Menginstruksikan sistem untuk menginisialisasi objek, sehingga operasi yang membutuhkan waktu yang signifikan untuk memproses pengembalian ERROR_IO_PENDING. Setelah operasi selesai, peristiwa yang ditentukan diatur ke status yang disinyalkan.
Saat Anda menentukan FILE_FLAG_OVERLAPPED, fungsi baca dan tulis file harus menentukan struktur yang TUMPANG TINDIH . Artinya, ketika FILE_FLAG_OVERLAPPED ditentukan, aplikasi harus melakukan pembacaan dan penulisan yang tumpang tindih. Ketika FILE_FLAG_OVERLAPPED ditentukan, sistem tidak mempertahankan penunjuk file. Posisi file harus diteruskan sebagai bagian dari parameter lpOverlapped (menunjuk ke struktur YANG TUMPANG TINDIH ) ke fungsi baca dan tulis file. Bendera ini juga memungkinkan lebih dari satu operasi dilakukan secara bersamaan dengan handel (operasi baca dan tulis simultan, misalnya). |
|
Menunjukkan bahwa file akan diakses sesuai dengan aturan POSIX. Ini termasuk mengizinkan beberapa file dengan nama, hanya berbeda jika, untuk sistem file yang mendukung penamaan tersebut. Berhati-hatilah saat menggunakan opsi ini karena file yang dibuat dengan bendera ini mungkin tidak dapat diakses oleh aplikasi yang ditulis untuk MS-DOS atau Windows 16-bit. |
|
Menunjukkan bahwa file diakses secara acak. Sistem dapat menggunakan ini sebagai petunjuk untuk mengoptimalkan penembolokan file. |
|
Menunjukkan bahwa file akan diakses secara berurutan dari awal hingga akhir. Sistem dapat menggunakan ini sebagai petunjuk untuk mengoptimalkan penembolokan file. Jika aplikasi memindahkan penunjuk file untuk akses acak, penembolokan optimal mungkin tidak terjadi; namun, operasi yang benar masih dijamin.
Menentukan bendera ini dapat meningkatkan performa untuk aplikasi yang membaca file besar menggunakan akses berurutan. Perolehan performa bisa lebih terlihat untuk aplikasi yang membaca file besar sebagian besar secara berurutan, tetapi kadang-kadang melewati rentang kecil byte. |
|
Menginstruksikan sistem untuk menulis melalui cache perantara apa pun dan langsung masuk ke disk. Sistem masih dapat menyimpan operasi tulis, tetapi tidak dapat dengan malas membersihkannya. |
Jika handel mewakili sisi klien dari pipa bernama, parameter dwFlags juga dapat berisi informasi Kualitas Keamanan Layanan. Untuk informasi selengkapnya, lihat Tingkat Peniruan. Ketika aplikasi panggilan menentukan bendera SECURITY_SQOS_PRESENT , parameter dwFlags dapat berisi satu atau beberapa nilai berikut.
Nilai kembali
Jika fungsi berhasil, nilai yang dikembalikan adalah handel terbuka ke file yang ditentukan.
Jika fungsi gagal, nilai yang dikembalikan INVALID_HANDLE_VALUE. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Parameter dwFlags tidak boleh berisi bendera atribut file apa pun (FILE_ATTRIBUTE_*). Ini hanya dapat ditentukan ketika file dibuat.
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 Vista [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winbase.h (termasuk Windows.h) |
Pustaka | Kernel32.lib |
DLL | Kernel32.dll |