Makro FsRtlCheckOplock (rxprocs.h)

Rutinitas FsRtlCheckOplock menyinkronkan IRP untuk operasi I/O file dengan status kunci oportunistik (oplock) file saat ini.

Sintaks

void FsRtlCheckOplock(
   A1,
   A2,
   A3,
   A4,
   A5
);

Parameter

A1

Penunjuk kunci oportunistik buram untuk file. Pointer ini harus diinisialisasi oleh panggilan sebelumnya ke FsRtlInitializeOplock.

A2

Penunjuk ke IRP untuk operasi I/O.

A3

Penunjuk ke informasi konteks yang ditentukan penelepon untuk diteruskan ke rutinitas panggilan balik yang ditunjukkan oleh parameter CompletionRoutine dan PostIrpRoutine .

A4

Penunjuk ke rutinitas panggilan balik yang disediakan penelepon. Jika pemutusan kunci oportunistik sedang berlangsung, rutinitas ini dipanggil ketika istirahat selesai. Parameter ini bersifat opsional dan dapat berupa NULL. Jika NULL, penelepon dimasukkan ke dalam status tunggu sampai pemutusan kunci oportunistik selesai.

Rutinitas ini dinyatakan sebagai berikut:

typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
      IN PVOID Context,
      IN PIRP Irp
      );

Rutinitas ini memiliki parameter berikut:

Konteks

Penunjuk informasi konteks yang diteruskan dalam parameter Konteks ke FsRtlCheckOplock.

Irp

Penunjuk ke IRP untuk operasi I/O.

A5

Penunjuk ke rutinitas panggilan balik yang disediakan penelepon untuk dipanggil jika operasi I/O diposting ke antrean kerja. Parameter ini bersifat opsional dan dapat berupa NULL.

Rutinitas ini dinyatakan sebagai berikut:

typedef VOID
(*POPLOCK_FS_PREPOST_IRP) (
      IN PVOID Context,
      IN PIRP Irp
      );

Konteks

Penunjuk informasi konteks yang diteruskan dalam parameter Konteks ke FsRtlCheckOplock.

Irp

Penunjuk ke IRP untuk operasi I/O.

Nilai kembali

Tidak ada

Keterangan

FsRtlCheckOplock menyinkronkan IRP untuk operasi I/O dengan status kunci oportunistik file saat ini sesuai dengan kondisi berikut:

  • Jika operasi I/O akan menyebabkan kunci oportunistik rusak, pemutusan kunci oportunistik dimulai.
  • Jika operasi I/O tidak dapat dilanjutkan sampai pemutusan kunci oportunistik selesai, FsRtlCheckOplock mengembalikan STATUS_PENDING dan memanggil rutinitas panggilan balik yang ditunjuk parameter PostIrpRoutine .
Jika sistem file atau driver filter menggunakan kunci oportunistik, sistem file harus memanggil FsRtlCheckOplock dari rutinitas pengiriman apa pun untuk operasi I/O yang dapat menyebabkan pemutusan kunci oportunistik. Aturan ini berlaku untuk jenis operasi I/O berikut, karena operasi ini dapat menyebabkan pemutusan kunci oportunistik:

IRP_MJ_CLEANUP

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL

IRP_MJ_FLUSH_BUFFERS

IRP_MJ_LOCK_CONTROL

IRP_MJ_READ

IRP_MJ_SET_INFORMATION

IRP_MJ_WRITE

Untuk informasi mendetail tentang kunci oportunistik, lihat dokumentasi Microsoft Windows SDK.

Minifilter harus memanggil FltCheckOplock alih-alih FsRtlCheckOplock.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Rutinitas ini tersedia di Microsoft Windows 2000 dan versi yang lebih baru dari sistem operasi Windows.
Target Platform Universal
Header rxprocs.h (termasuk FltKernel.h, 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

FltCheckOplock

FsRtlCurrentBatchOplock

FsRtlInitializeOplock

FsRtlOplockFsctrl

FsRtlOplockIsFastIoPossible

FsRtlUninitializeOplock