Fungsi FltProcessFileLock (fltkernel.h)

Proses rutin FltProcessFileLock dan menyelesaikan operasi penguncian file.

Sintaks

FLT_PREOP_CALLBACK_STATUS FLTAPI FltProcessFileLock(
  [in]           PFILE_LOCK         FileLock,
  [in]           PFLT_CALLBACK_DATA CallbackData,
  [in, optional] PVOID              Context
);

Parameter

[in] FileLock

Arahkan ke struktur FILE_LOCK untuk file. Struktur ini harus diinisialisasi oleh panggilan sebelumnya ke FltAllocateFileLock atau FltInitializeFileLock.

[in] CallbackData

Arahkan ke struktur data panggilan balik (FLT_CALLBACK_DATA) untuk operasi IRP_MJ_LOCK_CONTROL .

[in, optional] Context

Penunjuk konteks yang akan digunakan saat menyelesaikan operasi. Penunjuk konteks ini diteruskan ke rutinitas panggilan balik CompleteLockCallbackDataRoutine dan UnlockRoutine yang didaftarkan driver minifilter dalam panggilan sebelumnya ke FltAllocateFileLock. Parameter ini bersifat opsional dan dapat berupa NULL.

Nilai kembali

FltProcessFileLock mengembalikan salah satu hal berikut ini.

Menampilkan kode Deskripsi
FLT_PREOP_COMPLETE Filter Manager dilakukan dengan CallbackData, yang sekarang dapat diselesaikan.
FLT_PREOP_DISALLOW_FASTIO CallbackData mewakili operasi I/O yang cepat, dan driver minifilter di tumpukan telah melarang I/O cepat yang akan digunakan untuk operasi ini. Manajer Filter tidak mengirim operasi ke driver minifilter apa pun di bawah yang melarang operasi. Dalam hal ini, Manajer Filter hanya memanggil rutinitas panggilan balik pascaoperasi (dan callback CompleteLockCallbackDataRoutine ) dari driver minifilter di atas driver minifilter yang melarang operasi I/O cepat.
FLT_PREOP_PENDING Operasi penguncian telah tertunda.

Keterangan

FltProcessFileLock memproses operasi kunci file (IRP_MJ_LOCK_CONTROL). Operasi penguncian dapat menjadi operasi berbasis I/O atau IRP yang cepat.

Untuk operasi buka kunci, Manajer Filter memanggil rutinitas panggilan balik UnlockRoutine yang didaftarkan pemanggil untuk struktur FILE_LOCK dalam panggilan sebelumnya ke FltAllocateFileLock.

Ketika operasi penguncian selesai, Manajer Filter memanggil rutinitas panggilan balik penyelesaian CompleteLockCallbackDataRoutine (PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE) yang didaftarkan pemanggil untuk struktur FILE_LOCK dalam panggilan sebelumnya ke FltAllocateFileLock.

Ketika parameter CallbackData yang diteruskan ke FltProcessFileLock mewakili operasi I/O cepat, panggilan balik yang ditentukan dalam parameter CompleteLockCallbackDataRoutine dari rutinitas FltAllocateFileLock tidak dipanggil. Hanya ketika operasi I/O di CallbackData adalah IRP, dan CompleteLockCallbackDataRoutine bukan NULL, apakah rutinitas panggilan balik akan dipanggil.

Untuk menentukan apakah CallbackData mewakili operasi I/O cepat, gunakan makro FLT_IS_FASTIO_OPERATION .

Untuk mengalokasikan dan menginisialisasi struktur kunci file baru, panggil FltAllocateFileLock.

Untuk membebaskan struktur FILE_LOCK yang diinisialisasi, panggil FltFreeFileLock.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP dengan SP2
Server minimum yang didukung Windows Server 2003 dengan SP1
Target Platform Universal
Header fltkernel.h (termasuk Fltkernel.h)
Pustaka FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Lihat juga

FILE_LOCK

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FltAllocateFileLock

FltCheckLockForReadAccess

FltCheckLockForWriteAccess

FltFreeFileLock

FltInitializeFileLock

FltUninitializeFileLock

FsRtlProcessFileLock

IRP_MJ_LOCK_CONTROL

PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE

[PUNLOCK_ROUTINE] (.. /ntifs/nc-ntifs-punlock_routine.md