Bagikan melalui


Fungsi FltOplockBreakH (fltkernel.h)

Rutinitas FltOplockBreakH memutus CACHE_HANDLE_LEVEL kunci oportunistik (oplock).

Sintaks

FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockBreakH(
  [in]           POPLOCK                                 Oplock,
  [in]           PFLT_CALLBACK_DATA                      CallbackData,
  [in]           ULONG                                   Flags,
  [in, optional] PVOID                                   Context,
  [in, optional] PFLTOPLOCK_WAIT_COMPLETE_ROUTINE        WaitCompletionRoutine,
  [in, optional] PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE PrePostCallbackDataRoutine
);

Parameter

[in] Oplock

Penunjuk oplock buram untuk file. Pointer ini harus diinisialisasi oleh panggilan sebelumnya ke FltInitializeOplock.

[in] CallbackData

Penunjuk ke struktur data panggilan balik (FLT_CALLBACK_DATA) untuk operasi I/O.

[in] Flags

Bitmask untuk operasi I/O file terkait. Driver minifilter mengatur bit untuk menentukan perilaku FltOplockBreakH. Parameter Bendera memiliki opsi berikut:

OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)

Memungkinkan pembobolan oplock untuk melanjutkan tanpa memblokir atau menunggu operasi yang menyebabkan jeda oplock.

OPLOCK_FLAG_IGNORE_OPLOCK_KEYS (0x00000008)

Memungkinkan 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 WaitCompletionRoutine dan PrePostCallbackDataRoutine .

[in, optional] WaitCompletionRoutine

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
(*PFLTOPLOCK_WAIT_COMPLETE_ROUTINE) (
    __in PFLT_CALLBACK_DATA CallbackData,
 __in_opt PVOID Context
    );

Rutinitas ini memiliki parameter berikut:

CallbackData

Penunjuk ke struktur data panggilan balik untuk operasi I/O.

Konteks

Penunjuk informasi konteks yang diteruskan dalam parameter Konteks ke FltOplockBreakH.

[in, optional] PrePostCallbackDataRoutine

Penunjuk ke rutinitas panggilan balik yang disediakan penelepon untuk dipanggil jika operasi I/O harus ditunda. Rutinitas dipanggil sebelum paket oplock menunggu IRP. Parameter ini bersifat opsional dan dapat berupa NULL.

Rutinitas ini dinyatakan sebagai berikut:

typedef VOID
(*PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE) (
    __in PFLT_CALLBACK_DATA CallbackData,
 __in_opt PVOID Context
      );

Rutinitas ini memiliki parameter berikut:

CallbackData

Penunjuk ke struktur data panggilan balik untuk operasi I/O.

Konteks

Penunjuk informasi konteks yang diteruskan dalam parameter Konteks ke FltOplockBreakH.

Nilai kembali

FltOplockBreakH mengembalikan salah satu kode FLT_PREOP_CALLBACK_STATUS berikut:

Menampilkan kode Deskripsi
FLT_PREOP_COMPLETE
FltOplockBreakH mengalami kegagalan alokasi kumpulan, atau panggilan ke fungsi FsRtlOplockBreakH mengembalikan kesalahan. FltOplockBreakH akan mengatur kode kesalahan di anggota Status struktur IO_STATUS_BLOCK . Struktur IO_STATUS_BLOCK ditentukan dalam anggota IoStatus dari struktur data panggilan balik FLT_CALLBACK_DATA . Parameter CallbackData menunjuk ke FLT_CALLBACK_DATA ini.
FLT_PREOP_PENDING
Hentian oplock dimulai, yang menyebabkan Manajer Filter memposting operasi I/O ke antrean kerja. Operasi I/O diwakili oleh data panggilan balik yang ditunjukkan parameter CallbackData .
FLT_PREOP_SUCCESS_WITH_CALLBACK
Data panggilan balik yang ditunjuk parameter CallbackData tidak tertunda, dan operasi I/O segera dilakukan. Ketahuilah bahwa jika penelepon yang ditentukan OPLOCK_FLAG_COMPLETE_IF_OPLOCKED dalam parameter Bendera , jeda oplock mungkin benar-benar sedang berlangsung meskipun operasi I/O tidak tertunda. Untuk menentukan apakah ini situasinya, pemanggil harus memeriksa STATUS_OPLOCK_BREAK_IN_PROGRESS di anggota Status struktur IO_STATUS_BLOCK . Struktur IO_STATUS_BLOCK ditentukan dalam anggota IoStatus dari struktur data panggilan balik FLT_CALLBACK_DATA .

Keterangan

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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Rutinitas FltOplockBreakH tersedia dimulai dengan Windows 7.
Target Platform Universal
Header fltkernel.h (termasuk Fltkernel.h)
Pustaka FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Lihat juga

FLT_CALLBACK_DATA

FltInitializeOplock

FsRtlOplockBreakH

IO_STATUS_BLOCK