Fungsi FsRtlOplockBreakH (ntifs.h)

Rutinitas FsRtlOplockBreakH memecah CACHE_HANDLE_LEVEL kunci oportunistik (oplock).

Sintaks

NTSTATUS FsRtlOplockBreakH(
  [in]           POPLOCK                       Oplock,
  [in]           PIRP                          Irp,
  [in]           ULONG                         Flags,
  [in, optional] PVOID                         Context,
  [in, optional] POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
  [in, optional] POPLOCK_FS_PREPOST_IRP        PostIrpRoutine
);

Parameter

[in] Oplock

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

[in] Irp

Penunjuk ke IRP untuk operasi I/O.

[in] Flags

Bitmask untuk operasi I/O file terkait. Sistem file atau driver filter mengatur bit untuk menentukan perilaku FsRtlOplockBreakH. Parameter Bendera memiliki opsi berikut:

OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)

Menentukan untuk mengizinkan jeda oplock untuk melanjutkan tanpa memblokir atau menunggu operasi yang menyebabkan jeda oplock.

OPLOCK_FLAG_IGNORE_OPLOCK_KEYS (0x00000008)

Didukung di Windows 7 dan versi yang lebih baru.

Menentukan untuk mengizinkan CACHE_HANDLE_LEVEL jeda oplock untuk melanjutkan terlepas dari kunci oplock.

[in, optional] Context

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

[in, optional] CompletionRoutine

Pointer ke rutinitas panggilan balik yang disediakan penelepon. Jika pembobolan oplock sedang berlangsung, rutinitas ini dipanggil ketika jeda selesai. Parameter ini bersifat opsional dan dapat berupa NULL. Jika NULL, penelepon dimasukkan ke dalam status tunggu sampai pemisah oplock 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 FsRtlOplockBreakH.

Irp

Penunjuk ke IRP untuk operasi I/O.

[in, optional] PostIrpRoutine

Penunjuk ke rutinitas panggilan balik yang disediakan penelepon untuk dipanggil jika operasi I/O akan ditunda. Rutinitas dipanggil sebelum paket oplock menunggu IRP. 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 FsRtlOplockBreakH.

Irp

Penunjuk ke IRP untuk operasi I/O.

Nilai kembali

FsRtlOplockBreakH mengembalikan STATUS_SUCCESS atau kode NTSTATUS yang sesuai, seperti salah satu hal berikut ini:

Menampilkan kode Deskripsi
STATUS_CANCELLED
IRP dibatalkan. STATUS_CANCELLED adalah kode kesalahan.
STATUS_PENDING
IRP diposting ke antrean kerja. STATUS_PENDING adalah kode sukses.
STATUS_CANNOT_BREAK_OPLOCK
Pemutusan kunci oportunistik (oplock) tidak dapat dicapai. IRP adalah permintaan IRP_MJ_CREATE. FILE_OPEN_REQUIRING_OPLOCK ditentukan dalam parameter opsi buat untuk operasi, dan ada oplock yang diberikan. STATUS_CANNOT_BREAK_OPLOCK adalah kode kesalahan.

Keterangan

Ketika operasi harus merusak CACHE_HANDLE_LEVEL oplock, operasi memanggil FsRtlOplockBreakH.

Jika pemanggil menentukan bendera OPLOCK_FLAG_IGNORE_OPLOCK_KEYS dalam parameter Bendera , FsRtlOplockBreakH memutus semua oplock CACHE_HANDLE_LEVEL, terlepas dari kunci oplock. Perilaku default FsRtlOplockBreakH adalah memutus oplock yang kuncinya tidak cocok dengan kunci pada objek file pemanggil.

Minifilter harus memanggil FltOplockBreakH alih-alih FsRtlOplockBreakH.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Rutinitas FsRtlOplockBreakH 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

FltOplockBreakH

FsRtlInitializeOplock