Fungsi FltIsOperationSynchronous (fltkernel.h)
Rutinitas FltIsOperationSynchronous menentukan apakah struktur data panggilan balik tertentu (FLT_CALLBACK_DATA) mewakili operasi I/O sinkron atau asinkron.
Sintaks
BOOLEAN FLTAPI FltIsOperationSynchronous(
[in] PFLT_CALLBACK_DATA CallbackData
);
Parameter
[in] CallbackData
Arahkan ke struktur data panggilan balik untuk operasi (FLT_CALLBACK_DATA).
Nilai kembali
FltIsOperationSynchronous mengembalikan TRUE jika operasi sinkron, dan FALSE jika operasinya asinkron.
Keterangan
FltIsOperationSynchronous menentukan apakah struktur data panggilan balik tertentu (FLT_CALLBACK_DATA) mewakili operasi I/O sinkron atau asinkron, sesuai dengan kondisi berikut:
Jika operasi bukan operasi I/O berbasis IRP, operasi tersebut sinkron. Untuk menentukan apakah operasi berbasis IRP, gunakan makro FLT_IS_IRP_OPERATION .
Jika operasi adalah operasi I/O halaman asinkron, operasinya tidak sinkron, bahkan jika salah satu kondisi lain dalam daftar ini benar.
Jika operasi adalah operasi I/O halaman sinkron, operasi tersebut sinkron.
Jika objek file untuk operasi dibuka untuk I/O sinkron, operasinya sinkron.
Jika bendera IRP_SYNCHRONOUS_API diatur dalam IRP untuk operasi, operasi tersebut sinkron. Bendera ini diatur untuk operasi, seperti IRP_MJ_QUERY_INFORMATION dan IRP_MJ_SET_INFORMATION, yang selalu sinkron, bahkan ketika dilakukan pada objek file yang dibuka untuk I/O asinkron.
Jika tidak ada kondisi di atas yang benar, operasi tersebut tidak sinkron.
Catatan
FltIsOperationSynchronous juga mengembalikan TRUE jika struktur data panggilan balik mewakili operasi IRP_MJ_DEVICE_CONTROL, IRP_MJ_INTERNAL_DEVICE_CONTROL, atau IRP_MJ_FILE_SYSTEM_CONTROL dengan kode kontrol I/O (IOCTL) atau kode kontrol sistem file (FSCTL) yang ditentukan dengan METHOD_BUFFERED, bahkan jika objek file dibuka untuk I/O asinkron. Permintaan seperti itu kemungkinan akan dibuat sinkron oleh sistem file, tetapi ini belum tentu benar dalam semua kasus.
Ketika FltIsOperationSynchronous mengembalikan TRUE, ini tidak menunjukkan bahwa operasi I/O disinkronkan. Artinya, nilai TRUE tidak menunjukkan bahwa driver minifilter mengembalikan FLT_PREOP_SYNCHRONIZE dalam rutinitas panggilan balik praoperasi (PFLT_POST_OPERATION_CALLBACK) untuk operasi ini. Sebaliknya, FltIsOperationSynchronous mengembalikan TRUE untuk menunjukkan bahwa operasi I/O sinkron dari perspektif manajer I/O.
FltIsOperationSynchronous dapat dipanggil untuk semua kelas operasi: I/O cepat, panggilan balik filter sistem file (FSFilter), dan operasi berbasis IRP.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Header | fltkernel.h (termasuk Fltkernel.h) |
Pustaka | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | Tingkat apa pun |
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