Bagikan melalui


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

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

IoIsOperationSynchronous