Fungsi FsRtlOplockFsctrlEx (ntifs.h)
Rutinitas FsRtlOplockFsctrlEx melakukan berbagai operasi kunci oportunistik (oplock) atas nama sistem file atau driver filter.
Sintaks
NTSTATUS FsRtlOplockFsctrlEx(
[in] POPLOCK Oplock,
[in] PIRP Irp,
[in] ULONG OpenCount,
[in] ULONG Flags
);
Parameter
[in] Oplock
Penunjuk oplock buram untuk file. Pointer ini harus diinisialisasi oleh panggilan sebelumnya ke FsRtlInitializeOplock.
[in] Irp
Arahkan ke IRP untuk operasi I/O. Parameter ini diperlukan dan tidak boleh NULL.
[in] OpenCount
Jumlah handel pengguna untuk file, jika oplock eksklusif diminta. Mengatur nilai bukan nol untuk permintaan oplock tingkat 2, R, atau RH menunjukkan bahwa ada kunci rentang byte pada file. Untuk informasi tentang jenis oplock, lihat Gambaran Umum Oplock.
[in] Flags
Bitmask untuk operasi oplock terkait. Sistem file atau driver filter mengatur bit untuk menentukan perilaku FsRtlOplockFsctrlEx. Parameter ini memiliki opsi berikut:
Bendera | Makna |
---|---|
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) | Sistem file memverifikasi bahwa semua kunci oplock pada handel yang saat ini terbuka cocok. Dengan menentukan bendera ini, Anda mengizinkan paket oplock untuk memberikan oplock level RW atau RWH ketika ada lebih dari satu handel terbuka ke file. Untuk informasi selengkapnya tentang jenis oplock, lihat Gambaran Umum Oplock. |
Nilai kembali
FsRtlOplockFsctrlEx mengembalikan salah satu nilai NTSTATUS berikut:
Menampilkan kode | Deskripsi |
---|---|
STATUS_SUCCESS | Untuk permintaan IRP_MJ_CREATE, STATUS_SUCCESS menunjukkan bahwa oplock filter yang diminta diberikan. Untuk operasi FSCTL, arti STATUS_SUCCESS tergantung pada kode FSCTL. Untuk informasi selengkapnya, lihat halaman referensi untuk kode FSCTL yang tercantum di bagian Keterangan berikut. |
STATUS_CANCELLED | Operasi I/O dibatalkan. STATUS_CANCELLED adalah kode kesalahan. |
STATUS_INVALID_PARAMETER | Kode FSCTL untuk operasi I/O bukan salah satu nilai valid yang tercantum di bagian Keterangan berikut. STATUS_INVALID_PARAMETER adalah kode kesalahan. |
STATUS_OPLOCK_NOT_GRANTED | Oplock tidak dapat diberikan. STATUS_OPLOCK_NOT_GRANTED adalah kode kesalahan. |
STATUS_PENDING | Hanya digunakan untuk operasi FSCTL. Arti STATUS_PENDING tergantung pada kode FSCTL. Untuk informasi selengkapnya, lihat halaman referensi untuk kode FSCTL yang tercantum di bagian Keterangan berikut. STATUS_PENDING adalah kode sukses. |
STATUS_CANNOT_BREAK_OPLOCK | Oplock baru tidak dapat diberikan. IRP adalah permintaan IRP_MJ_CREATE dan FILE_OPEN_REQUIRING_OPLOCK ditentukan dalam parameter opsi buat untuk operasi. STATUS_CANNOT_BREAK_OPLOCK adalah kode sukses. |
Keterangan
Sistem file dan driver filter warisan memanggil FsRtlOplockFsctrlEx untuk melakukan berbagai operasi oplock untuk operasi I/O kontrol sistem buat atau file. Minifilter harus memanggil FltOplockFsctrlEx alih-alih FsRtlOplockFsctrlEx.
IRP yang ditujukkan oleh parameter Irp harus merupakan IRP yang valid untuk operasi IRP_MJ_FILE_SYSTEM_CONTROL atau IRP_MJ_CREATE .
Jika IRP adalah permintaan IRP_MJ_FILE_SYSTEM_CONTROL, FsRtlOplockFsctrlEx dapat digunakan dengan salah satu kode FSCTL berikut, yang diatur dalam IrpSp-Parameters.FileSystemControl.FsControlCode>:
- FSCTL_OPBATCH_ACK_CLOSE_PENDING
- FSCTL_OPLOCK_BREAK_ACK_NO_2
- FSCTL_OPLOCK_BREAK_ACKNOWLEDGE
- FSCTL_OPLOCK_BREAK_NOTIFY
- FSCTL_REQUEST_BATCH_OPLOCK
- FSCTL_REQUEST_FILTER_OPLOCK
- FSCTL_REQUEST_OPLOCK_LEVEL_1
- FSCTL_REQUEST_OPLOCK_LEVEL_2
- FSCTL_REQUEST_OPLOCK
Untuk informasi selengkapnya tentang FSCTL ini dan tentang kunci oportunistik secara umum, lihat dokumentasi Microsoft Windows SDK.
Jika IRP adalah permintaan IRP_MJ_CREATE, FsRtlOplockFsctrlEx dapat digunakan untuk meminta oplock filter yang tertunda jika semua kondisi berikut ini benar:
- Nilai parameter OpenCount harus 1.
- Nilai parameter DesiredAccess untuk permintaan IRP_MJ_CREATE harus FILE_READ_ATTRIBUTES.
- Nilai parameter ShareAccess untuk permintaan IRP_MJ_CREATE harus FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE.
Jika permintaan untuk oplock filter yang tertunda diberikan, FsRtlOplockFsctrlEx mengembalikan STATUS_SUCCESS. Untuk informasi selengkapnya tentang membuat parameter, lihat entri referensi untuk IRP_MJ_CREATE.
Filter dan sistem file yang memanggil fungsi ini harus menyinkronkan panggilan ke dalam paket oplock yang disediakan sistem. Lihat Sinkronisasi Oplock untuk informasi selengkapnya.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Rutinitas FsRtlOplockFsctrlEx tersedia dimulai dengan Windows 7. |
Target Platform | Universal |
Header | ntifs.h (termasuk Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
Lihat juga
FSCTL_OPBATCH_ACK_CLOSE_PENDING