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
PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE
[PUNLOCK_ROUTINE] (.. /ntifs/nc-ntifs-punlock_routine.md