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>:

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

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltOplockFsctrl

FsRtlInitializeOplock

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL