Fungsi OpenFile (winbase.h)

Membuat, membuka, membuka kembali, atau menghapus file.

Catatan Fungsi ini memiliki kemampuan terbatas dan tidak disarankan. Untuk pengembangan aplikasi baru, gunakan fungsi CreateFile .
 

Sintaks

HFILE OpenFile(
  [in]  LPCSTR     lpFileName,
  [out] LPOFSTRUCT lpReOpenBuff,
  [in]  UINT       uStyle
);

Parameter

[in] lpFileName

Nama file.

String harus terdiri dari karakter dari set karakter Windows 8-bit. Fungsi OpenFile tidak mendukung nama file Unicode atau membuka pipa bernama.

[out] lpReOpenBuff

Penunjuk ke struktur OFSTRUCT yang menerima informasi tentang file saat pertama kali dibuka.

Struktur dapat digunakan dalam panggilan berikutnya ke fungsi OpenFile untuk melihat file terbuka.

Struktur OFSTRUCT berisi anggota string jalur dengan panjang yang terbatas pada OFS_MAXPATHNAME karakter, yaitu 128 karakter. Karena itu, Anda tidak dapat menggunakan fungsi OpenFile untuk membuka file dengan panjang jalur yang melebihi 128 karakter. Fungsi CreateFile tidak memiliki batasan panjang jalur ini.

[in] uStyle

Tindakan yang akan diambil.

Parameter ini bisa menjadi satu atau beberapa nilai berikut.

Nilai Makna
OF_CANCEL
0x00000800
Diabaikan.

Untuk menghasilkan kotak dialog yang berisi tombol Batal, gunakan OF_PROMPT.

OF_CREATE
0x00001000
Membuat file baru.

Jika ada, file dipotong menjadi nol (0) panjang.

OF_DELETE
0x00000200
Menghapus file.
OF_EXIST
0x00004000
Membuka file lalu menutupnya.

Gunakan ini untuk menguji keberadaan file.

OF_PARSE
0x00000100
Mengisi struktur OFSTRUCT , tetapi tidak melakukan hal lain.
OF_PROMPT
0x00002000
Menampilkan kotak dialog jika file yang diminta tidak ada.

Kotak dialog memberi tahu pengguna bahwa sistem tidak dapat menemukan file, dan berisi tombol Coba Lagi dan Batal . Tombol Batal mengarahkanOpenFile untuk mengembalikan pesan kesalahan file yang tidak ditemukan.

OF_READ
0x00000000
Membuka file untuk dibaca saja.
OF_READWRITE
0x00000002
Membuka file dengan izin baca/tulis.
OF_REOPEN
0x00008000
Membuka file dengan menggunakan informasi dalam buffer buka kembali.
OF_SHARE_COMPAT
0x00000000
Untuk sistem file berbasis MS-DOS, membuka file dengan mode kompatibilitas, memungkinkan proses apa pun pada komputer tertentu untuk membuka file berapa kali.

Upaya lain untuk membuka file dengan mode berbagi lainnya gagal. Bendera ini dipetakan ke bendera FILE_SHARE_READ|FILE_SHARE_WRITE fungsi CreateFile .

OF_SHARE_DENY_NONE
0x00000040
Membuka file tanpa menolak akses baca atau tulis ke proses lain.

Pada sistem file berbasis MS-DOS, jika file telah dibuka dalam mode kompatibilitas oleh proses lain, fungsi gagal.

Bendera ini dipetakan ke bendera FILE_SHARE_READ|FILE_SHARE_WRITE fungsi CreateFile .

OF_SHARE_DENY_READ
0x00000030
Membuka file dan menolak akses baca ke proses lain.

Pada sistem file berbasis MS-DOS, jika file telah dibuka dalam mode kompatibilitas, atau untuk akses baca oleh proses lain, fungsi gagal.

Bendera ini dipetakan ke bendera FILE_SHARE_WRITE fungsi CreateFile .

OF_SHARE_DENY_WRITE
0x00000020
Membuka file dan menolak akses tulis ke proses lain.

Pada sistem file berbasis MS-DOS, jika file telah dibuka dalam mode kompatibilitas, atau untuk akses tulis oleh proses lain, fungsi gagal.

Bendera ini dipetakan ke bendera FILE_SHARE_READ fungsi CreateFile .

OF_SHARE_EXCLUSIVE
0x00000010
Membuka file dengan mode eksklusif, dan menolak akses baca/tulis ke proses lain. Jika file telah dibuka dalam mode lain untuk akses baca/tulis, bahkan oleh proses saat ini, fungsi gagal.
OF_VERIFY
Memverifikasi bahwa tanggal dan waktu file sama seperti saat dibuka sebelumnya.

Ini berguna sebagai pemeriksaan tambahan untuk file baca-saja.

OF_WRITE
0x00000001
Membuka file hanya untuk akses tulis.

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan menentukan handel file yang akan digunakan saat melakukan I/O file. Untuk menutup file, panggil fungsi CloseHandle menggunakan handel ini.

Jika fungsi gagal, nilai yang dikembalikan adalah HFILE_ERROR. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Jika parameter lpFileName menentukan nama file dan ekstensi saja, fungsi ini mencari file yang cocok di direktori berikut dan urutan yang diperlihatkan:

  1. Direktori tempat aplikasi dimuat.
  2. Direktori saat ini.
  3. Direktori sistem Windows.

    Gunakan fungsi GetSystemDirectory untuk mendapatkan jalur direktori ini.

  4. Direktori sistem Windows 16-bit.

    Tidak ada fungsi yang mengambil jalur direktori ini, tetapi dicari.

  5. Direktori Windows.

    Gunakan fungsi GetWindowsDirectory untuk mendapatkan jalur direktori ini.

  6. Direktori yang tercantum dalam variabel lingkungan PATH.
Parameter lpFileName tidak boleh berisi karakter kartubebas.

Fungsi OpenFile tidak mendukung bendera OF_SEARCH yang didukung fungsi Windows OpenFile 16-bit. Bendera OF_SEARCH mengarahkan sistem untuk mencari file yang cocok bahkan ketika nama file menyertakan jalur lengkap. Gunakan fungsi SearchPath untuk mencari file.

Pelanggaran berbagi terjadi jika upaya dilakukan untuk membuka file atau direktori untuk penghapusan pada komputer jarak jauh ketika nilai parameter uStyle adalah bendera akses OF_DELETE OR'ed dengan bendera akses lainnya, dan file atau direktori jarak jauh belum dibuka dengan akses berbagi FILE_SHARE_DELETE . Untuk menghindari pelanggaran berbagi dalam skenario ini, buka file atau direktori jarak jauh dengan akses OF_DELETE saja, atau panggil DeleteFile tanpa terlebih dahulu membuka file atau direktori untuk penghapusan.

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
 

CsvF akan melakukan IO yang dialihkan untuk file terkompresi.

Persyaratan

   
Klien minimum yang didukung Windows XP [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

Lihat juga

CreateFile

Fungsi Manajemen File

GetSystemDirectory

GetWindowsDirectory

OFSTRUCT

SearchPath