Fungsi FltCancelFileOpen (fltkernel.h)
Driver minifilter dapat menggunakan rutinitas FltCancelFileOpen untuk menutup file yang baru dibuka atau dibuat.
Sintaks
VOID FLTAPI FltCancelFileOpen(
[in] PFLT_INSTANCE Instance,
[in] PFILE_OBJECT FileObject
);
Parameter
[in] Instance
Penunjuk instans buram untuk pemanggil. Parameter ini diperlukan dan tidak boleh NULL.
[in] FileObject
Penunjuk objek file untuk file. Parameter ini diperlukan dan tidak boleh NULL.
Nilai kembali
Tidak ada
Keterangan
Jika driver minifilter menentukan bahwa operasi buka file atau buat file (IRP_MJ_CREATE) harus gagal setelah sistem file menyelesaikan operasi dengan nilai NTSTATUS yang sukses seperti STATUS_SUCCESS, driver minifilter dapat memanggil FltCancelFileOpen dari rutinitas panggilan balik pasca-buat untuk menutup file.
Perhatikan bahwa FltCancelFileOpen tidak membatalkan modifikasi apa pun pada file. Misalnya, FltCancelFileOpen tidak menghapus file yang baru dibuat atau memulihkan file yang ditimpa atau digantikan ke keadaan sebelumnya.
FltCancelFileOpen harus dipanggil sebelum handel dibuat untuk file. Pemanggil dapat memeriksa anggota Bendera dari struktur FILE_OBJECT yang dirujuk oleh parameter FileObject . Jika bendera FO_HANDLE_CREATED diatur, ini berarti bahwa satu atau beberapa handel telah dibuat untuk file, sehingga tidak aman untuk memanggil FltCancelFileOpen.
FltCancelFileOpen mengatur bendera FO_FILE_OPEN_CANCELLED di anggota Bendera objek file yang ditunjuk fileObject . Bendera ini menunjukkan bahwa operasi pembuatan telah dibatalkan, dan permintaan tutup (IRP_MJ_CLOSE) akan dikeluarkan untuk objek file ini.
Setelah operasi pembuatan dibatalkan, operasi tidak dapat diterbitkan kembali. Untuk informasi selengkapnya, lihat FltReissueSynchronousIo.
FltCancelFileOpen hanya dapat dipanggil dari rutinitas panggilan balik pasca-buat driver minifilter. Memanggil FltCancelFileOpen dari rutinitas panggilan balik pascaoperasi (PFLT_POST_OPERATION_CALLBACK) untuk jenis operasi I/O lainnya, atau memanggilnya dari rutinitas panggilan balik praoperasi (PFLT_PRE_OPERATION_CALLBACK), adalah kesalahan pemrograman.
Penelepon FltCancelFileOpen harus berjalan di IRQL PASSIVE_LEVEL. Namun, aman bagi driver minifilter untuk memanggil rutinitas ini dari rutinitas panggilan balik pasca-buat, karena rutinitas panggilan balik pasca-buat dijamin akan dipanggil di IRQL PASSIVE_LEVEL, dalam konteks utas yang berasal dari permintaan IRP_MJ_CREATE.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | fltkernel.h (termasuk Fltkernel.h) |
Pustaka | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | PASSIVE_LEVEL (lihat bagian Keterangan) |