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 |
---|---|
|
IRP dibatalkan. STATUS_CANCELLED adalah kode kesalahan. |
|
IRP diposting ke antrean kerja. STATUS_PENDING adalah kode sukses. |
|
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 |