Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Membuat atau membuka file atau perangkat I/O. Perangkat I/O yang paling umum digunakan adalah sebagai berikut: file, aliran file, direktori, disk fisik, volume, buffer konsol, tape drive, sumber daya komunikasi, mailslot, dan pipa. Fungsi mengembalikan handel yang dapat digunakan untuk mengakses file atau perangkat untuk berbagai jenis I/O tergantung pada file atau perangkat dan bendera dan atribut yang ditentukan.
Saat dipanggil dari aplikasi paket terkotakpasir, CreateFile3 disederhanakan. Anda hanya dapat membuka file atau direktori di dalam direktori ApplicationData.LocalFolder atau Package.InstalledLocation . Anda tidak dapat membuka pipa atau mailslots bernama atau membuat file terenkripsi (FILE_ATTRIBUTE_ENCRYPTED).
Nota
Kami merujuk ke folder lokal aplikasi dan lokasi paket yang diinstal, bukan paket tambahan dalam grafik paket, seperti paket sumber daya. CreateFile3 tidak mendukung pembukaan file dalam paket tambahan dalam grafik paket. Untuk melakukan operasi ini sebagai operasi yang ditransaksikan, yang menghasilkan handel yang dapat digunakan untuk I/O yang ditransaksikan, gunakan fungsi CreateFileTransacted .
Sintaksis
HANDLE CreateFile3(
LPCWSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
DWORD dwCreationDisposition,
LPCREATEFILE3_EXTENDED_PARAMETERS pCreateExParams
);
Parameter-parameternya
lpFileName
Nama file atau perangkat yang akan dibuat atau dibuka.
Untuk informasi tentang nama perangkat khusus, lihat Menentukan Nama Perangkat MS-DOS.
Untuk membuat aliran file, tentukan nama file, titik dua, lalu nama aliran. Untuk informasi selengkapnya, lihat Aliran File.
Petunjuk / Saran
Anda dapat ikut serta untuk menghapus batasan MAX_PATH tanpa menambahkan sebelumnya "\?". Lihat bagian "Batasan Panjang Jalur Maksimum" dari Penamaan File, Jalur, dan Namespace untuk detailnya.
dwDesiredAccess
Akses yang diminta ke file atau perangkat, yang dapat diringkas sebagai baca, tulis, keduanya atau bukan nol.
Nilai yang paling umum digunakan adalah GENERIC_READ, GENERIC_WRITE, atau keduanya (GENERIC_READ | GENERIC_WRITE
). Untuk informasi selengkapnya, lihat Hak Akses Generik, Keamanan File dan Hak Akses, Konstanta Hak Akses File, dan ACCESS_MASK.
Jika parameter ini nol, aplikasi dapat mengkueri metadata tertentu seperti atribut file, direktori, atau perangkat tanpa mengakses file atau perangkat tersebut, bahkan jika akses GENERIC_READ akan ditolak.
Anda tidak dapat meminta mode akses yang bertentangan dengan mode berbagi yang ditentukan oleh parameter dwShareMode dalam permintaan terbuka yang sudah memiliki handel terbuka.
Untuk informasi selengkapnya, lihat bagian Keterangan dari topik ini dan Membuat dan Membuka File.
dwShareMode
Mode berbagi file atau perangkat yang diminta, yang dapat dibaca, ditulis, keduanya, hapus, semua ini, atau tidak ada (lihat tabel berikut). Permintaan akses ke atribut atau atribut yang diperluas tidak terpengaruh oleh bendera ini.
Jika parameter ini nol dan CreateFile3 berhasil, file atau perangkat tidak dapat dibagikan dan tidak dapat dibuka lagi hingga handel ke file atau perangkat ditutup. Untuk informasi selengkapnya, lihat bagian Keterangan.
Anda tidak dapat meminta mode berbagi yang bertentangan dengan mode akses yang ditentukan dalam permintaan yang ada yang memiliki handel terbuka. CreateFile3 akan gagal dan fungsi GetLastError akan mengembalikan ERROR_SHARING_VIOLATION.
Untuk mengaktifkan proses berbagi file atau perangkat saat proses lain membuka file atau perangkat, gunakan kombinasi yang kompatibel dari satu atau beberapa nilai berikut. Untuk informasi selengkapnya tentang kombinasi parameter ini yang valid dengan parameter dwDesiredAccess , lihat Membuat dan Membuka File.
Nota
Opsi berbagi untuk setiap handel terbuka tetap berlaku hingga handel tersebut ditutup, terlepas dari konteks proses.
Nilai | Makna |
---|---|
00x00000000 |
Mencegah proses lain membuka file atau perangkat jika meminta akses hapus, baca, atau tulis. Akses eksklusif ke file atau direktori hanya diberikan jika aplikasi memiliki akses tulis ke file. |
FILE_SHARE_DELETE0x00000004 |
Memungkinkan operasi terbuka berikutnya pada file atau perangkat untuk meminta akses penghapusan. Jika tidak, proses lain tidak dapat membuka file atau perangkat jika meminta akses penghapusan. Jika bendera ini tidak ditentukan, tetapi file atau perangkat telah dibuka untuk akses penghapusan, fungsi gagal. Nota: Menghapus akses memungkinkan operasi hapus dan ganti nama. |
FILE_SHARE_READ0x00000001 |
Memungkinkan operasi terbuka berikutnya pada file atau perangkat untuk meminta akses baca. Jika tidak, proses lain tidak dapat membuka file atau perangkat jika mereka meminta akses baca. Jika bendera ini tidak ditentukan, tetapi file atau perangkat telah dibuka untuk akses baca, fungsi gagal. Jika file atau direktori sedang dibuka dan bendera ini tidak ditentukan, dan pemanggil tidak memiliki akses tulis ke file atau direktori, fungsi gagal. |
FILE_SHARE_WRITE0x00000002 |
Memungkinkan operasi terbuka berikutnya pada file atau perangkat untuk meminta akses tulis. Jika tidak, proses lain tidak dapat membuka file atau perangkat jika meminta akses tulis. Jika bendera ini tidak ditentukan, tetapi file atau perangkat telah dibuka untuk akses tulis atau memiliki pemetaan file dengan akses tulis, fungsi gagal. |
dwCreationDisposition
Tindakan yang harus diambil pada file atau perangkat yang ada atau tidak ada.
Untuk perangkat selain file, parameter ini biasanya diatur ke OPEN_EXISTING.
Untuk informasi selengkapnya, lihat bagian Keterangan.
Parameter ini harus merupakan salah satu nilai berikut, yang tidak dapat digabungkan:
Nilai | Makna |
---|---|
CREATE_ALWAYS2 |
Selalu buat file baru. Jika file yang ditentukan ada dan dapat ditulis, fungsi memotong file, fungsi berhasil, dan kode kesalahan terakhir diatur ke ERROR_ALREADY_EXISTS (183). Jika file yang ditentukan tidak ada dan merupakan jalur yang valid, file baru dibuat, fungsi berhasil, dan kode kesalahan terakhir diatur ke nol. Untuk informasi selengkapnya, lihat bagian Keterangan dari topik ini. |
CREATE_NEW1 |
Membuat file baru, hanya jika belum ada. Jika file yang ditentukan ada, fungsi gagal dan kode kesalahan terakhir diatur ke ERROR_FILE_EXISTS (80). Jika file yang ditentukan tidak ada dan merupakan jalur yang valid ke lokasi bisa-tulis, file baru akan dibuat. |
OPEN_ALWAYS4 |
Selalu membuka file. Jika file yang ditentukan ada, fungsi berhasil dan kode kesalahan terakhir diatur ke ERROR_ALREADY_EXISTS (183). Jika file yang ditentukan tidak ada dan merupakan jalur yang valid ke lokasi bisa-tulis, fungsi membuat file dan kode kesalahan terakhir diatur ke nol. |
OPEN_EXISTING3 |
Membuka file atau perangkat, hanya jika ada. Jika file atau perangkat yang ditentukan tidak ada, fungsi gagal dan kode kesalahan terakhir diatur ke ERROR_FILE_NOT_FOUND (2). Untuk informasi selengkapnya tentang perangkat, lihat bagian Komentar . |
TRUNCATE_EXISTING5 |
Membuka file dan memotongnya sehingga ukurannya nol byte, hanya jika ada. Jika file yang ditentukan tidak ada, fungsi gagal dan kode kesalahan terakhir diatur ke ERROR_FILE_NOT_FOUND (2). Proses panggilan harus membuka file dengan bit GENERIC_WRITE diatur sebagai bagian dari parameter dwDesiredAccess . |
pCreateExParams
Penunjuk ke struktur CREATEFILE3_EXTENDED_PARAMETERS opsional.
Mengembalikan nilai
Jika fungsi berhasil, nilai pengembalian adalah handel terbuka ke file, perangkat, pipa bernama, atau slot email yang ditentukan.
Jika fungsi gagal, nilai yang dikembalikan adalah INVALID_HANDLE_VALUE. Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError. Kemungkinan kesalahan termasuk yang berikut ini:
Mengembalikan kode | Deskripsi |
---|---|
ERROR_PATH_REDIRECTED | lpFileName dialihkan oleh titik pemisahan ulang dan/atau tautan simbolis. |
Komentar
CreateFile3 berulah dengan cara yang sama persis seperti CreateFile2 dengan satu pengecualian; operasi akan gagal jika lpFileName dialihkan melalui titik pemisahan ulang atau tautan simbolis. Perilaku ini dapat dinonaktifkan dengan bendera baru yang dapat ditambahkan ke dwFileFlags.
Untuk mengkompilasi aplikasi yang menggunakan fungsi CreateFile3 , tentukan makro _WIN32_WINNT sebagai 0x0602
atau yang lebih baru. Untuk informasi selengkapnya, lihat Menggunakan Header Windows.
CreateFile3 mendukung interaksi file dan sebagian besar jenis perangkat dan mekanisme I/O lainnya yang tersedia untuk pengembang Windows. Bagian ini mencoba untuk mencakup berbagai masalah yang mungkin dialami pengembang saat menggunakan CreateFile3 dalam konteks yang berbeda dan dengan jenis I/O yang berbeda. Teks mencoba menggunakan file kata hanya ketika merujuk khusus ke data yang disimpan dalam file aktual pada sistem file. Namun, beberapa penggunaan file mungkin merujuk lebih umum ke objek I/O yang mendukung mekanisme seperti file. Penggunaan liberal file istilah ini sangat lazim dalam nama konstanta dan nama parameter karena alasan historis yang disebutkan sebelumnya.
Ketika aplikasi selesai menggunakan handel objek yang dikembalikan oleh CreateFile3, gunakan fungsi CloseHandle untuk menutup handel. Ini tidak hanya membebaskan sumber daya sistem, tetapi dapat memiliki pengaruh yang lebih luas pada hal-hal seperti berbagi file atau perangkat dan menerapkan data ke disk. Spesifik dicatat dalam topik ini sebagaimana mewajibkan.
Beberapa sistem file, seperti sistem file NTFS, mendukung kompresi atau enkripsi untuk file dan direktori individual. Pada volume yang memiliki sistem file yang dipasang dengan dukungan ini, file baru mewarisi atribut kompresi dan enkripsi direktorinya.
Anda tidak dapat menggunakan CreateFile3 untuk mengontrol kompresi, dekompresi, atau dekripsi pada file atau direktori. Untuk informasi selengkapnya, lihat Membuat dan Membuka File, Kompresi dan Dekompresi File, dan Enkripsi File.
Jika anggota lpSecurityAttributes dari struktur CREATEFILE3_EXTENDED_PARAMETERS yang diteruskan dalam parameter pCreateExParams adalah NULL
, handel yang dikembalikan oleh CreateFile3 tidak dapat diwariskan oleh proses turunan apa pun yang mungkin dibuat aplikasi Anda. Informasi berikut mengenai anggota ini juga berlaku:
- Jika variabel anggota bInheritHandle bukan
FALSE
, yang merupakan nilai bukan nol, maka handel dapat diwariskan. Oleh karena itu sangat penting anggota struktur ini diinisialisasi dengan benar jika Anda tidak berniat menangani agar dapat diwariskanFALSE
. - Daftar kontrol akses (ACL) dalam deskriptor keamanan default untuk file atau direktori diwarisi dari direktori induknya.
- Sistem file target harus mendukung keamanan pada file dan direktori agar anggota lpSecurityDescriptor memiliki efek pada mereka, yang dapat ditentukan dengan menggunakan GetVolumeInformation.
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 | Tidak. |
SMB 3.0 dengan Scale-out File Shares (SO) | Tidak. |
Sistem File Volume Bersama Kluster (CsvFS) | Ya |
Sistem File Tangguh (ReFS) | Ya |
Perilaku Tautan Simbolis
Jika panggilan ke fungsi ini membuat file, tidak ada perubahan perilaku. Selain itu, pertimbangkan informasi berikut mengenai bendera FILE_FLAG_OPEN_REPARSE_POINT untuk anggota dwFileFlags dari struktur CREATEFILE3_EXTENDED_PARAMETERS yang diteruskan dalam parameter pCreateExParams :
- Jika FILE_FLAG_OPEN_REPARSE_POINT ditentukan:
- Jika file yang ada dibuka dan merupakan tautan simbolis, handel yang dikembalikan adalah handel ke tautan simbolis.
- Jika TRUNCATE_EXISTING atau FILE_FLAG_DELETE_ON_CLOSE ditentukan, file yang terpengaruh adalah tautan simbolis.
- Jika FILE_FLAG_OPEN_REPARSE_POINT tidak ditentukan:
- Jika file yang ada dibuka dan merupakan tautan simbolis, handel yang dikembalikan adalah handel ke target.
- Jika CREATE_ALWAYS, TRUNCATE_EXISTING, atau FILE_FLAG_DELETE_ON_CLOSE ditentukan, file yang terpengaruh adalah target.
Arsip
Jika Anda mengganti nama atau menghapus file lalu memulihkannya segera setelahnya, sistem mencari cache untuk informasi file yang akan dipulihkan. Informasi cache mencakup pasangan nama pendek/panjang dan waktu pembuatannya.
Jika Anda memanggil CreateFile3 pada file yang menunggu penghapusan sebagai akibat dari panggilan sebelumnya ke DeleteFile atau DeleteFile2, fungsi gagal. Sistem operasi menunda penghapusan file hingga semua handel ke file ditutup. GetLastError mengembalikan ERROR_ACCESS_DENIED.
Parameter dwDesiredAccess bisa nol, memungkinkan aplikasi untuk mengkueri atribut file tanpa mengakses file jika aplikasi berjalan dengan pengaturan keamanan yang memadai. Ini berguna untuk menguji keberadaan file tanpa membukanya untuk akses baca dan/atau tulis, atau untuk mendapatkan statistik lain tentang file atau direktori. Lihat Mendapatkan dan Mengatur Informasi File dan GetFileInformationByHandle.
Ketika aplikasi membuat file di seluruh jaringan, lebih baik digunakan GENERIC_READ | GENERIC_WRITE
untuk dwDesiredAccess daripada menggunakan GENERIC_WRITE saja. Kode yang dihasilkan lebih cepat, karena pengalih dapat menggunakan manajer cache dan mengirim lebih sedikit SMB dengan lebih banyak data. Kombinasi ini juga menghindari masalah saat menulis ke file di seluruh jaringan terkadang dapat mengembalikan ERROR_ACCESS_DENIED.
Untuk informasi selengkapnya, lihat Membuat dan Membuka File.
Aliran File
Pada sistem file NTFS, Anda dapat menggunakan CreateFile3 untuk membuat aliran terpisah dalam file. Untuk informasi selengkapnya, lihat Aliran File.
Direktori
Aplikasi tidak dapat membuat direktori dengan menggunakan CreateFile3, oleh karena itu hanya nilai OPEN_EXISTING yang valid untuk dwCreationDisposition untuk kasus penggunaan ini. Untuk membuat direktori, aplikasi harus memanggil CreateDirectory, CreateDirectoryEx, atau CreateDirectory2.
Untuk membuka direktori menggunakan CreateFile3, tentukan bendera FILE_FLAG_BACKUP_SEMANTICS sebagai bagian dari anggota dwFileFlags dari struktur CREATEFILE3_EXTENDED_PARAMETERS yang diteruskan dalam parameter pCreateExParams . Pemeriksaan keamanan yang sesuai masih berlaku ketika bendera ini digunakan tanpa hak istimewa SE_BACKUP_NAME dan SE_RESTORE_NAME .
Saat menggunakan CreateFile3 untuk membuka direktori selama defragmentasi volume sistem file FAT atau FAT32, jangan tentukan hak akses MAXIMUM_ALLOWED . Akses ke direktori ditolak jika ini dilakukan. Tentukan akses GENERIC_READ tepat sebagai gantinya.
Untuk informasi selengkapnya, lihat Tentang Manajemen Direktori.
Disk fisik dan Volume
Akses langsung ke disk atau ke volume dibatasi.
Anda dapat menggunakan fungsi CreateFile3 untuk membuka drive disk fisik atau volume, yang mengembalikan handel perangkat penyimpanan akses langsung (DASD) yang dapat digunakan dengan fungsi DeviceIoControl . Ini memungkinkan Anda mengakses disk atau volume secara langsung, misalnya metadata disk seperti tabel partisi. Namun, jenis akses ini juga mengekspos drive disk atau volume terhadap potensi kehilangan data, karena penulisan yang salah ke disk menggunakan mekanisme ini dapat membuat kontennya tidak dapat diakses oleh sistem operasi. Untuk memastikan integritas data, pastikan untuk terbiasa dengan DeviceIoControl dan bagaimana API lain berprilaku berbeda dengan handel akses langsung dibandingkan dengan handel sistem file.
Persyaratan berikut harus dipenuhi agar panggilan tersebut berhasil:
- Pemanggil harus memiliki hak administratif. Untuk informasi selengkapnya, lihat Berjalan dengan Hak Istimewa Khusus.
- Parameter dwCreationDisposition harus memiliki bendera OPEN_EXISTING .
- Saat membuka volume atau disket, parameter dwShareMode harus memiliki bendera FILE_SHARE_WRITE .
Nota
Parameter dwDesiredAccess bisa nol, memungkinkan aplikasi untuk mengkueri atribut perangkat tanpa mengakses perangkat. Ini berguna bagi aplikasi untuk menentukan ukuran drive disket dan format yang didukungnya tanpa memerlukan disket di drive, misalnya. Ini juga dapat digunakan untuk membaca statistik tanpa memerlukan izin baca/tulis data tingkat lebih tinggi.
Saat membuka drive fisik x:, string lpFileName harus berupa formulir berikut: "\.\PhysicalDriveX".
Nomor hard disk dimulai dari nol. Tabel berikut menunjukkan beberapa contoh string drive fisik.
string | Makna |
---|---|
"\.\PhysicalDrive0" | Membuka drive fisik pertama. |
"\.\PhysicalDrive2" | Membuka drive fisik ketiga. |
Untuk mendapatkan pengidentifikasi drive fisik untuk volume, buka handel ke volume dan panggil fungsi DeviceIoControl dengan IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS. Kode kontrol ini mengembalikan nomor disk dan offset untuk masing-masing volume satu atau beberapa tingkat; volume dapat mencakup beberapa disk fisik.
Untuk contoh membuka drive fisik, lihat Memanggil DeviceIoControl.
Saat membuka volume atau drive media yang dapat dilepas (misalnya, drive disket atau drive jempol memori flash), string lpFileName harus berupa bentuk berikut: "\\.\X:". Jangan gunakan garis miring terbelakang (\), yang menunjukkan direktori akar drive.
Tabel berikut ini memperlihatkan beberapa contoh string drive:
string | Makna |
---|---|
"\.\A:" | Membuka disk disket drive A. |
"\.\C:" | Membuka volume C: . |
"\.\C:" | Membuka sistem file volume C: . |
Anda juga dapat membuka volume dengan merujuk ke nama volumenya. Untuk informasi selengkapnya, lihat Penamaan Volume.
Volume berisi satu atau beberapa sistem file yang dipasang. Handel volume dapat dibuka sebagai non-cached atas kebijakan sistem file tertentu, bahkan ketika opsi yang tidak di-cache tidak ditentukan dalam CreateFile3. Anda harus berasumsi bahwa semua sistem file Microsoft membuka handel volume sebagai non-cache. Pembatasan I/O yang tidak di-cache untuk file juga berlaku untuk volume.
Sistem file mungkin atau mungkin tidak memerlukan perataan buffer meskipun data tidak di-cache. Namun, jika opsi non-cache ditentukan saat membuka volume, perataan buffer diberlakukan terlepas dari sistem file pada volume. Disarankan pada semua sistem file yang Anda buka handel volumenya sebagai non-cache, dan ikuti pembatasan I/O yang tidak di-cache.
Nota
Untuk membaca atau menulis ke beberapa sektor terakhir volume, Anda harus memanggil DeviceIoControl dan menentukan FSCTL_ALLOW_EXTENDED_DASD_IO. Ini menandakan driver sistem file untuk tidak melakukan pemeriksaan batas I/O pada panggilan baca atau tulis partisi. Sebaliknya, pemeriksaan batas dilakukan oleh driver perangkat.
Perangkat Pengubah
Kode kontrol IOCTL_CHANGER_* untuk DeviceIoControl menerima handel ke perangkat pengubah. Untuk membuka perangkat pengubah, gunakan nama file formulir berikut: "\.\Changerx" di mana x adalah angka yang menunjukkan perangkat mana yang akan dibuka, dimulai dengan nol. Untuk membuka perangkat pengubah nol dalam aplikasi yang ditulis dalam C atau C++, gunakan nama file berikut: "\\.\Changer0".
Tape Drive
Anda dapat membuka drive pita dengan menggunakan nama file formulir berikut: "\.\TAPEx" di mana x adalah angka yang menunjukkan drive mana yang akan dibuka, dimulai dengan tape drive nol. Untuk membuka tape drive zero dalam aplikasi yang ditulis dalam C atau C++, gunakan nama file berikut: "\\.\TAPE0".
Untuk informasi selengkapnya, lihat Backup.
Sumber Daya Komunikasi
Fungsi CreateFile3 dapat membuat handel ke sumber daya komunikasi, seperti port serial COM1. Untuk sumber daya komunikasi, parameter dwCreationDisposition harus OPEN_EXISTING, parameter dwShareMode harus nol (akses eksklusif), dan parameter hTemplateFile harus NULL
. Akses baca, tulis, atau baca/tulis dapat ditentukan, dan handel dapat dibuka untuk I/O yang tumpang tindih.
Untuk menentukan nomor port COM yang lebih besar dari 9, gunakan sintaks berikut: "\.\COM10". Sintaks ini berfungsi untuk semua nomor port dan perangkat keras yang memungkinkan nomor port COM ditentukan.
Untuk informasi selengkapnya tentang komunikasi, lihat Komunikasi.
Konsol
Fungsi CreateFile3 dapat membuat handel ke input konsol (CONIN$). Jika proses memiliki handel terbuka untuk itu sebagai akibat dari warisan atau duplikasi, proses ini juga dapat membuat handel ke buffer layar aktif (CONOUT$). Proses panggilan harus dilampirkan ke konsol yang diwariskan atau yang dialokasikan oleh fungsi AllocConsole .
Untuk handel konsol, atur parameter CreateFile3 sebagai berikut:
Parameter-parameternya | Nilai |
---|---|
lpFileName | Gunakan nilai CONIN$ untuk menentukan input konsol. Gunakan nilai CONOUT$ untuk menentukan output konsol. CONIN$ mendapatkan handel ke buffer input konsol, bahkan jika fungsi SetStdHandle mengalihkan handel input standar. Untuk mendapatkan handel input standar, gunakan fungsi GetStdHandle . CONOUT$ mendapatkan handel ke buffer layar aktif, bahkan jika SetStdHandle mengalihkan handel output standar. Untuk mendapatkan handel output standar, gunakan GetStdHandle. |
dwDesiredAccess |
GENERIC_READ \| GENERIC_WRITE lebih disukai, tetapi salah satu dapat membatasi akses. |
dwShareMode | Saat membuka CONIN$, tentukan FILE_SHARE_READ. Saat membuka CONOUT$, tentukan FILE_SHARE_WRITE. Jika proses panggilan mewarisi konsol, atau jika proses anak harus dapat mengakses konsol, parameter ini harus FILE_SHARE_READ \| FILE_SHARE_WRITE . |
dwCreationDisposition | Anda harus menentukan OPEN_EXISTING saat menggunakan CreateFile3 untuk membuka konsol. |
Atur anggota struktur CREATEFILE3_EXTENDED_PARAMETERS yang diteruskan dalam parameter pCreateExParams sebagai berikut:
Anggota | Nilai |
---|---|
lpSecurityAttributes | Jika Anda ingin konsol diwariskan, anggota bInheritHandle dari struktur SECURITY_ATTRIBUTES harus TRUE . |
dwFileAttributes dwFileFlags dwSecurityQosFlags hTemplateFile |
Diabaikan. |
Tabel berikut ini memperlihatkan berbagai pengaturan dwDesiredAccess dan lpFileName:
lpFileName | dwDesiredAccess | Hasil |
---|---|---|
"CON" | GENERIC_READ | Membuka konsol untuk input. |
"CON" | GENERIC_WRITE | Membuka konsol untuk output. |
"CON" | GENERIC_READ \| GENERIC_WRITE |
Menyebabkan CreateFile3 gagal; GetLastError mengembalikan ERROR_FILE_NOT_FOUND. |
Mailslots
Jika CreateFile3 membuka akhir klien dari mailslot, fungsi mengembalikan INVALID_HANDLE_VALUE jika klien mailslot mencoba membuka mailslot lokal sebelum server mailslot membuatnya dengan fungsi CreateMailSlot .
Untuk informasi selengkapnya, lihat Mailslots .
Pipa
Jika CreateFile3 membuka akhir klien dari pipa bernama, fungsi menggunakan instans pipa bernama apa pun yang berada dalam status mendengarkan. Proses pembukaan dapat menduplikasi handel sebanyak yang diperlukan, tetapi setelah dibuka, instans pipa bernama tidak dapat dibuka oleh klien lain. Akses yang ditentukan ketika pipa dibuka harus kompatibel dengan akses yang ditentukan dalam parameter dwOpenMode dari fungsi CreateNamedPipe .
Jika fungsi CreateNamedPipe tidak berhasil dipanggil pada server sebelum operasi ini, pipa tidak akan ada dan CreateFile3 akan gagal dengan ERROR_FILE_NOT_FOUND.
Jika ada setidaknya satu instans pipa aktif tetapi tidak ada pipa pendengar yang tersedia di server, yang berarti semua instans pipa saat ini terhubung, CreateFile3 gagal dengan ERROR_PIPE_BUSY.
Untuk informasi selengkapnya, lihat Pipes.
Persyaratan
Persyaratan | Nilai |
---|---|
klien minimum yang didukung | Windows 11 24H2 [aplikasi desktop | Aplikasi UWP] |
server minimum yang didukung | Windows Server 2025 [aplikasi desktop | Aplikasi UWP] |
Tajuk | fileapi.h (termasuk Windows.h) |
Perpustakaan | Kernel32.lib |
DLL | Kernel32.dll |