#include "mi.h"
Go to the source code of this file.
Functions | |
PSUBSECTION | MiGetSystemCacheSubsection (IN PVOID BaseAddress, IN PEPROCESS Process, OUT PMMPTE *ProtoPte) |
VOID | MiFlushDirtyBitsToPfn (IN PMMPTE PointerPte, IN PMMPTE LastPte, IN PEPROCESS Process, IN BOOLEAN SystemCache) |
ULONG FASTCALL | MiCheckProtoPtePageState (IN PMMPTE PrototypePte, IN ULONG PfnLockHeld) |
NTSTATUS | NtFlushVirtualMemory (IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN OUT PSIZE_T RegionSize, OUT PIO_STATUS_BLOCK IoStatus) |
VOID | MiFlushAcquire (IN PCONTROL_AREA ControlArea) |
VOID | MiFlushRelease (IN PCONTROL_AREA ControlArea) |
NTSTATUS | MmFlushVirtualMemory (IN PEPROCESS Process, IN OUT PVOID *BaseAddress, IN OUT PSIZE_T RegionSize, OUT PIO_STATUS_BLOCK IoStatus) |
NTSTATUS | MmFlushSection (IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN PLARGE_INTEGER Offset, IN SIZE_T RegionSize, OUT PIO_STATUS_BLOCK IoStatus, IN ULONG AcquireFile) |
LONGLONG | MiStartingOffset (IN PSUBSECTION Subsection, IN PMMPTE PteAddress) |
LARGE_INTEGER | MiEndingOffset (IN PSUBSECTION Subsection) |
NTSTATUS | MiFlushSectionInternal (IN PMMPTE StartingPte, IN PMMPTE FinalPte, IN PSUBSECTION FirstSubsection, IN PSUBSECTION LastSubsection, IN ULONG Synchronize, IN LOGICAL WriteInProgressOk, OUT PIO_STATUS_BLOCK IoStatus) |
BOOLEAN | MmPurgeSection (IN PSECTION_OBJECT_POINTERS SectionObjectPointer, IN PLARGE_INTEGER Offset, IN SIZE_T RegionSize, IN ULONG IgnoreCacheViews) |
BOOLEAN | MmFlushImageSection (IN PSECTION_OBJECT_POINTERS SectionPointer, IN MMFLUSH_TYPE FlushType) |
Variables | |
POBJECT_TYPE | IoFileObjectType |
|
Definition at line 2427 of file flushsec.c. References ActiveAndValid, FALSE, MI_GET_PAGE_FRAME_FROM_PTE, MI_GET_PAGE_FRAME_FROM_TRANSITION_PTE, MI_PFN_ELEMENT, MiCheckPdeForPagedPool(), MiGetPdeAddress, MiGetPteAddress, MiMakeSystemAddressValidPfn(), PrototypePte, TRUE, _MMPTE::u, _MMPFN::u2, and _MMPFN::u3.
|
|
Definition at line 965 of file flushsec.c. References Mi4KStartFromSubsection, MM4K_SHIFT, and MMSECTOR_SHIFT. Referenced by MiCanFileBeTruncatedInternal(), MiCleanSection(), MiFlushSectionInternal(), and MiResolveMappedFileFault().
|
|
Definition at line 223 of file flushsec.c. References ASSERT, LOCK_PFN, and UNLOCK_PFN. Referenced by MmFlushVirtualMemory(), and NtAllocateVirtualMemory().
|
|
Definition at line 2281 of file flushsec.c. References FALSE, KeFlushSingleTb(), LOCK_PFN, MI_IS_PTE_DIRTY, MI_PFN_ELEMENT, MI_SET_PTE_CLEAN, MiDoesPdeExistAndMakeValid(), MiDoesPpeExistAndMakeValid, MiGetPteAddress, MiGetVirtualAddressMappedByPte, MiIsPteOnPdeBoundary, PAGE_SIZE, TRUE, _MMPTE::u, _MMPFN::u3, UNLOCK_PFN, and VOID(). Referenced by MmFlushVirtualMemory().
|
|
Definition at line 258 of file flushsec.c. References ASSERT, LOCK_PFN, MiCheckControlArea(), and NULL. Referenced by MmFlushVirtualMemory(), and NtAllocateVirtualMemory().
|
|
Definition at line 1014 of file flushsec.c. References ASSERT, _MDL::ByteCount, DbgPrint, FALSE, _CONTROL_AREA::FilePointer, _CONTROL_AREA::FlushInProgressCount, IoSynchronousPageWrite(), KeClearEvent, KeDelayExecutionThread(), KeEnterCriticalRegion, KeInitializeEvent, KeLeaveCriticalRegion, KePulseEvent(), KernelMode, KeWaitForSingleObject(), LOCK_PFN, _MDL::MappedSystemVa, MDL_MAPPED_TO_SYSTEM_VA, MDL_PAGES_LOCKED, _MDL::MdlFlags, MI_ADD_LOCKED_PAGE_CHARGE, MI_ADD_LOCKED_PAGE_CHARGE_FOR_MODIFIED_PAGE, MI_GET_PAGE_FRAME_FROM_PTE, MI_GET_PAGE_FRAME_FROM_TRANSITION_PTE, MI_INITIALIZE_ZERO_MDL, MI_PFN_ELEMENT, MI_REMOVE_LOCKED_PAGE_CHARGE, MiCheckProtoPtePageState(), MiDecrementReferenceCount(), MiEndingOffset(), MiIoRetryLevel, MiIsPteOnPdeBoundary, MiMakeSystemAddressValidPfn(), MiStartingOffset(), MiUnlinkPageFromList(), Mm30Milliseconds, MM_DBG_FLUSH_SECTION, MM_MAXIMUM_DISK_IO_SIZE, MmCollidedFlushEvent, MmIsRetryIoStatus, MmModifiedWriteClusterSize, MmOneSecond, MmUnmapLockedPages(), _SUBSECTION::NextSubsection, NT_SUCCESS, NTSTATUS(), NULL, _CONTROL_AREA::NumberOfPfnReferences, _MMPFN::OriginalPte, PAGE_SHIFT, PAGE_SIZE, _MMPFN::PteAddress, _SUBSECTION::PtesInSubsection, _MDL::Size, _MDL::StartVa, Status, STATUS_MAPPED_WRITER_COLLISION, _SUBSECTION::SubsectionBase, TRUE, _CONTROL_AREA::u, _MMPTE::u, _MMPFN::u3, UNLOCK_PFN, UNLOCK_PFN_AND_THEN_WAIT, and WrPageOut. Referenced by MiRemoveUnusedSegments(), MmFlushSection(), and MmFlushVirtualMemory().
|
|
Definition at line 2402 of file flushsec.c. References LOCK_PFN, MiGetPteAddress, MiGetSubsectionAndProtoFromPte(), and UNLOCK_PFN. Referenced by MmFlushVirtualMemory().
|
|
Definition at line 916 of file flushsec.c. References Mi4KStartFromSubsection, MI_STARTING_OFFSET, MM4K_SHIFT, and PAGE_SHIFT. Referenced by MiCleanSection(), MiFlushSectionInternal(), MiGatherMappedPages(), MiResolveMappedFileFault(), and MmShutdownSystem().
|
|
Definition at line 2094 of file flushsec.c. References ASSERT, CheckImageSection, FALSE, LOCK_PFN, MiCheckControlArea(), MiCheckControlAreaStatus(), MiCleanSection(), MiHydra, MMFLUSH_TYPE, MmFlushForDelete, NULL, _CONTROL_AREA::NumberOfMappedViews, _LARGE_CONTROL_AREA::NumberOfSectionReferences, _CONTROL_AREA::NumberOfUserReferences, TRUE, _LARGE_CONTROL_AREA::u, _CONTROL_AREA::u, and UNLOCK_PFN. Referenced by MiCanFileBeTruncatedInternal(), and UdfPurgeVolume().
|
|
Definition at line 668 of file flushsec.c. References ASSERT, BYTE_OFFSET, FALSE, _CONTROL_AREA::FilePointer, _ETHREAD::ForwardClusterOnly, FsRtlAcquireFileForCcFlush(), FsRtlReleaseFileForCcFlush(), KeDelayExecutionThread(), KernelMode, LOCK_PFN, MiCheckControlArea(), MiFlushSectionInternal(), MmShortTime, _SUBSECTION::NextSubsection, NTSTATUS(), NULL, _CONTROL_AREA::NumberOfMappedViews, _CONTROL_AREA::NumberOfPfnReferences, Offset, PAGE_SHIFT, PsGetCurrentThread, _SUBSECTION::PtesInSubsection, _SUBSECTION::SubsectionBase, TRUE, _CONTROL_AREA::u, and UNLOCK_PFN. Referenced by CcFlushCache(), CcMapAndCopy(), CcMdlWriteComplete2(), CcPurgeAndClearCacheSection(), CcSetFileSizes(), CcUnpinRepinnedBcb(), and MiFlushDataSection().
|
|
Definition at line 297 of file flushsec.c. References ASSERT, _MMVAD::ControlArea, _MMVAD::EndingVpn, FALSE, _CONTROL_AREA::FilePointer, FsRtlAcquireFileForCcFlush(), FsRtlReleaseFileForCcFlush(), KeAttachProcess(), KeDelayExecutionThread(), KeDetachProcess(), KernelMode, LOCK_WS, LOCK_WS_AND_ADDRESS_SPACE, MI_IS_SESSION_ADDRESS, MI_IS_SYSTEM_CACHE_ADDRESS, MI_VA_TO_VPN, MI_VPN_TO_VA_ENDING, MiDoesPdeExistAndMakeValid(), MiDoesPpeExistAndMakeValid, MiFlushAcquire(), MiFlushDirtyBitsToPfn(), MiFlushRelease(), MiFlushSectionInternal(), MiGetPdeAddress, MiGetPpeAddress, MiGetProtoPteAddress, MiGetPteAddress, MiGetSystemCacheSubsection(), MiGetVirtualAddressMappedByPte, MiIsPteOnPdeBoundary, MiLocateAddress(), MiLocateSubsection(), MmShortTime, _SUBSECTION::NextSubsection, NTSTATUS(), NULL, PAGE_ALIGN, PAGE_SIZE, PAGED_CODE, PsGetCurrentProcess, _SUBSECTION::PtesInSubsection, Status, _SUBSECTION::SubsectionBase, TRUE, _MMVAD::u, UNLOCK_WS, and UNLOCK_WS_AND_ADDRESS_SPACE. Referenced by NtFlushVirtualMemory().
|
|
Definition at line 1548 of file flushsec.c. References ASSERT, BYTE_OFFSET, DbgPrint, DISPATCH_LEVEL, FALSE, _FILE_OBJECT::FileName, _CONTROL_AREA::FilePointer, FreePageList, KeBugCheckEx(), KeEnterCriticalRegion, KeLeaveCriticalRegion, KernelMode, KeWaitForSingleObject(), LOCK_PFN, MI_GET_PAGE_FRAME_FROM_TRANSITION_PTE, MI_PFN_ELEMENT, MI_SET_PFN_DELETED, MI_WRITE_INVALID_PTE, MiCancelWriteOfMappedPfn(), MiCanFileBeTruncatedInternal(), MiCheckControlArea(), MiCheckProtoPtePageState(), MiDecrementShareCount(), MiInsertPageInList(), MiIsPteOnPdeBoundary, MiMakeSystemAddressValidPfn(), MiReleasePageFileSpace(), MiUnlinkPageFromList(), MM_DBG_FLUSH_SECTION, MmMappedFileIoComplete, MmPageLocationList, _CONTROL_AREA::ModifiedWriteCount, _SUBSECTION::NextSubsection, NULL, _CONTROL_AREA::NumberOfMappedViews, _CONTROL_AREA::NumberOfPfnReferences, _CONTROL_AREA::NumberOfSystemCacheViews, Offset, _MMPFN::OriginalPte, PAGE_SHIFT, PAGE_SIZE, _MMPFN::PteAddress, _MMPFN::PteFrame, _SUBSECTION::PtesInSubsection, _SUBSECTION::SubsectionBase, TRUE, _MMPTE::u, _CONTROL_AREA::u, _MMPFN::u3, UNLOCK_PFN, UNLOCK_PFN_AND_THEN_WAIT, and WrPageOut. Referenced by CcPurgeCacheSection().
|
|
Definition at line 55 of file flushsec.c. References EXCEPTION_EXECUTE_HANDLER, KernelMode, KPROCESSOR_MODE, MmFlushVirtualMemory(), NT_SUCCESS, NTSTATUS(), NULL, ObDereferenceObject, ObReferenceObjectByHandle(), PAGE_ALIGN, PAGED_CODE, ProbeForWriteIoStatus, ProbeForWritePointer, ProbeForWriteUlong_ptr, PsProcessType, and Status.
|
|
Definition at line 52 of file flushsec.c. |