Fungsi FltOplockBreakToNoneEx (fltkernel.h)
Rutinitas FltOplockBreakToNoneEx menghancurkan semua kunci oportunistik (oplock) segera tanpa memperhatikan kunci oplock apa pun.
Sintaks
FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockBreakToNoneEx(
[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 FltOplockBreakToNoneEx. Parameter Bendera memiliki opsi berikut:
OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)
Memungkinkan pembobolan oplock untuk melanjutkan tanpa memblokir atau menunggu operasi yang menyebabkan oplock rusak. Biasanya, bendera ini hanya digunakan jika operasi I/O yang diwakili oleh data panggilan balik yang ditunjuk parameter CallbackData adalah operasi IRP_MJ_CREATE.
[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
Penunjuk ke rutinitas panggilan balik yang disediakan penelepon. Jika jeda oplock 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 pemecahan 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 FltOplockBreakToNoneEx.
[in, optional] PrePostCallbackDataRoutine
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
(*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 FltOplockBreakToNoneEx.
Nilai kembali
FltOplockBreakToNoneEx mengembalikan salah satu kode FLT_PREOP_CALLBACK_STATUS berikut:
Menampilkan kode | Deskripsi |
---|---|
|
FltOplockBreakToNoneEx mengalami kegagalan alokasi kumpulan, atau panggilan ke fungsi FsRtlOplockBreakToNoneEx mengembalikan kesalahan. FltOplockBreakToNoneEx 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. |
|
Pemutusan oplock dimulai, yang menyebabkan Manajer Filter memposting operasi I/O ke antrean kerja. Operasi I/O diwakili oleh data panggilan balik yang ditunjuk oleh parameter CallbackData . |
|
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 , pemutusan 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 FltOplockBreakToNoneEx 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk