Thanks again!!
I provide a full FLT_CALLBACK_DATA structure to FltPerformSynchronousIo, so I can easily set "CallbackData->Iopb->IrpFlags = IRP_PAGING_IO". However, I can't really tell if the flag reaches the file system driver.
Though, it seems likely since FltReadFile has the documented flag "FLTFL_IO_OPERATION_PAGING". So I would assume that setting "IrpFlags = IRP_PAGING_IO" for FltPerformSynchronousIo will probably also work.
Not sure I understand the "MDL for Irp" thing you mentioned? FltReadFile doesn't allow me to specify an MDL, it instead wants to have a direct system buffer pointer. For FltPerformSynchronousIo, I'm currently setting "CallbackData->Iopb->Parameters.Read.ReadBuffer = SomeSystemBuffer", to make it similar to my FltReadFile call. Do you think using a direct system buffer pointer instead of an MDL could be problematic?