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