MiIssueSynchronousFlush

VOID __stdcall MiIssueSynchronousFlush(
        FILE_OBJECT *FileObject,
        MDL *Mdl,
        UINT64 StartingOffset,
        UINT8 IrpSpFlags,
        PVOID IoAttributionContext,
        IO_STATUS_BLOCK *IoStatus){
  IO_STATUS_BLOCK *v9; 
  NTSTATUS v10; 
  IRP *Timeout; 
  struct _KEVENT Event; 
  LARGE_INTEGER StartingOffseta; 
  StartingOffseta.QuadPart = StartingOffset;
  Event.Header.SignalState = 0;
  Event.Header.WaitListHead.Blink = &Event.Header.WaitListHead;
  Event.Header.LockNV = 393216;
  Event.Header.WaitListHead.Flink = &Event.Header.WaitListHead;
  KeResetEvent(&Event, (UINT64)Mdl, StartingOffset, IrpSpFlags, Timeout);
  v9 = IoStatus;
  v10 = IoSynchronousPageWriteEx(FileObject, Mdl, &StartingOffseta, &Event, IrpSpFlags, IoAttributionContext, IoStatus);
  if( v10 < 0 )
    v9->Status = v10;
  else
    KeWaitForSingleObject(&Event, WrPageOut, 0, 0, 0i64);
}

Referenced by:

MiFlushSectionInternal