The underlying functionality made available via FltFlushBuffers2 API has been in the system since at least Windows 7.
Your minifilter can generate its own CallbackData structure and issue its own FLUSH api. It would like something like this:
status = FltAllocateCallbackData( YourInstance, FileObjectToFlush, &cbd);
cbd->Iopb->MajorFunction = IRP_MJ_FLUSH_BUFFERS;
cbd->Iopb->MinorFUnction = IRP_MN_FLUSH_AND_PURGE;
cbd->Iopb->IrpFlags = IRP_SYNCHRONOUS_API;
FltPerformSynchronousIO(cbd);
I have not tried executing this code but this should work.
If you already have a handle created via FltCreateFile (or one of its variants), if you call ZwFlushBuffersFileEx using that handle, the flush request will be properly targeted to filters below you and wi