Fungsi FsRtlOplockFsctrl (ntifs.h)

FsRtlOplockFsctrl melakukan berbagai operasi kunci oportunistik (oplock) atas nama sistem file atau driver filter.

Sintaks

NTSTATUS FsRtlOplockFsctrl(
  [in] POPLOCK Oplock,
  [in] PIRP    Irp,
  [in] ULONG   OpenCount
);

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.

Nilai kembali

FsRtlOplockFsctrl 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 FsRtlOplockFsctrl untuk melakukan berbagai operasi oplock untuk operasi I/O kontrol sistem buat atau file. Minifilter harus memanggil FltOplockFsctrl alih-alih FsRtlOplockFsctrl.

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, FsRtlOplockFsctrl dapat digunakan dengan salah satu kode FSCTL berikut, yang diatur dalam IrpSp-Parameters.FileSystemControl.FsControlCode>:

Untuk informasi terperinci tentang FSCTL ini dan tentang kunci oportunistik secara umum, lihat dokumentasi Microsoft Windows SDK.

Jika IRP adalah permintaan IRP_MJ_CREATE , FsRtlOplockFsctrl 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, FsRtlOplockFsctrl 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
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_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltOplockFsctrl

FsRtlCheckOplock

FsRtlCurrentBatchOplock

FsRtlInitializeOplock

FsRtlOplockIsFastIoPossible

FsRtlUninitializeOplock

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL