ReactOS  0.4.14-dev-604-gcfdd483
newmm.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <internal/arch/mm.h>
4 
5 /* TYPES *********************************************************************/
6 
7 #define PFN_FROM_SSE(E) ((PFN_NUMBER)((E) >> PAGE_SHIFT))
8 #define IS_SWAP_FROM_SSE(E) ((E) & 0x00000001)
9 #define MM_IS_WAIT_PTE(E) \
10  (IS_SWAP_FROM_SSE(E) && SWAPENTRY_FROM_SSE(E) == MM_WAIT_ENTRY)
11 #define MAKE_PFN_SSE(P) ((ULONG_PTR)((P) << PAGE_SHIFT))
12 #define SWAPENTRY_FROM_SSE(E) ((E) >> 1)
13 #define MAKE_SWAP_SSE(S) (((ULONG_PTR)(S) << 1) | 0x1)
14 #define DIRTY_SSE(E) ((E) | 2)
15 #define CLEAN_SSE(E) ((E) & ~2)
16 #define IS_DIRTY_SSE(E) ((E) & 2)
17 #define PAGE_FROM_SSE(E) ((E) & 0xFFFFF000)
18 #define SHARE_COUNT_FROM_SSE(E) (((E) & 0x00000FFC) >> 2)
19 #define MAX_SHARE_COUNT 0x3FF
20 #define MAKE_SSE(P, C) ((ULONG_PTR)((P) | ((C) << 2)))
21 
22 #define MM_SEGMENT_FINALIZE (0x40000000)
23 
24 #define RMAP_SEGMENT_MASK ~((ULONG_PTR)0xff)
25 #define RMAP_IS_SEGMENT(x) (((ULONG_PTR)(x) & RMAP_SEGMENT_MASK) == RMAP_SEGMENT_MASK)
26 
27 #define MIN(x,y) (((x)<(y))?(x):(y))
28 #define MAX(x,y) (((x)>(y))?(x):(y))
29 
30 /* Determine what's needed to make paged pool fit in this category.
31  * it seems that something more is required to satisfy arm3. */
32 #define BALANCER_CAN_EVICT(Consumer) \
33  (((Consumer) == MC_USER) || \
34  ((Consumer) == MC_CACHE))
35 
36 #define SEC_CACHE (0x20000000)
37 
38 #define MiWaitForPageEvent(Process,Address) do { \
39  DPRINT("MiWaitForPageEvent %p:%p #\n", Process, Address); \
40  KeWaitForSingleObject(&MmWaitPageEvent, 0, KernelMode, FALSE, NULL); \
41 } while(0)
42 
43 #define MiSetPageEvent(Process,Address) do { \
44  DPRINT("MiSetPageEvent %p:%p #\n",Process, (PVOID)(Address)); \
45  KeSetEvent(&MmWaitPageEvent, IO_NO_INCREMENT, FALSE); \
46 } while(0)
47 
48 /* We store 8 bits of location with a page association */
49 #define ENTRIES_PER_ELEMENT 256
50 
51 extern KEVENT MmWaitPageEvent;
52 
54 {
60 
62 
63 typedef NTSTATUS (NTAPI * AcquireResource)(
67 
70  struct _MEMORY_AREA *MemoryArea,
71  PVOID Address,
74 
77  struct _MEMORY_AREA *MemoryArea,
78  PVOID Address,
80 
81 typedef struct _MM_REQUIRED_RESOURCES
82 {
89  AcquireResource DoAcquisition;
93  const char *File;
94  int Line;
96 
98 NTAPI
102  PLARGE_INTEGER UMaximumSize,
106 
108 NTAPI
111  BOOLEAN *Dirty);
112 
113 NTSTATUS
114 NTAPI
117  PFN_NUMBER Page,
118  BOOLEAN Dirty);
119 
120 /* sptab.c *******************************************************************/
121 
122 VOID
123 NTAPI
125 
126 NTSTATUS
127 NTAPI
131  const char *file,
132  int line);
133 
134 ULONG_PTR
135 NTAPI
138  const char *file,
139  int line);
140 
141 #define MmSetPageEntrySectionSegment(S,O,E) _MmSetPageEntrySectionSegment(S,O,E,__FILE__,__LINE__)
142 
143 #define MmGetPageEntrySectionSegment(S,O) _MmGetPageEntrySectionSegment(S,O,__FILE__,__LINE__)
144 
148 
149 VOID
150 NTAPI
153 
154 /* Yields a lock */
156 NTAPI
159 
160 NTSTATUS
161 NTAPI
165 
166 VOID
167 NTAPI
169 
170 NTSTATUS
171 NTAPI
173 
174 /* io.c **********************************************************************/
175 
176 NTSTATUS
178 
179 NTSTATUS
180 NTAPI
183  PVOID Buffer,
184  ULONG Length,
185  BOOLEAN Paging,
187 
188 NTSTATUS
189 NTAPI
192  PVOID Buffer,
193  ULONG Length,
195  const char *file,
196  int line);
197 
198 #define MiSimpleWrite(F,O,B,L,R) _MiSimpleWrite(F,O,B,L,R,__FILE__,__LINE__)
199 
200 NTSTATUS
201 NTAPI
204  ULONG Length,
205  PFN_NUMBER Page,
206  const char *File,
207  int Line);
208 
209 #define MiWriteBackPage(F,O,L,P) _MiWriteBackPage(F,O,L,P,__FILE__,__LINE__)
210 
211 /* section.c *****************************************************************/
212 
213 NTSTATUS
214 NTAPI
217  BOOLEAN FromMdl);
218 
219 NTSTATUS
220 NTAPI
223  PMM_REQUIRED_RESOURCES RequiredResources);
224 
225 NTSTATUS
226 NTAPI
229  PMM_REQUIRED_RESOURCES RequiredResources);
230 
231 NTSTATUS
232 NTAPI
235  PMM_REQUIRED_RESOURCES RequiredResources);
236 
237 NTSTATUS
238 NTAPI
242 
243 NTSTATUS
244 NTAPI
248 
249 VOID
250 NTAPI
253 
254 _Success_(1)
256 NTSTATUS
257 NTAPI
264 
265 VOID
268  PVOID Address);
269 
270 VOID
271 NTAPI
273  const char *file,
274  int line);
275 
276 #define MmLockSectionSegment(x) _MmLockSectionSegment(x,__FILE__,__LINE__)
277 
278 VOID
279 NTAPI
281  const char *file,
282  int line);
283 
284 #define MmUnlockSectionSegment(x) _MmUnlockSectionSegment(x,__FILE__,__LINE__)
285 
286 VOID
289  PVOID Address,
290  PFN_NUMBER Page,
291  SWAPENTRY SwapEntry,
292  BOOLEAN Dirty);
293 
294 NTSTATUS
295 NTAPI
297  PLARGE_INTEGER BaseOffset,
299  BOOLEAN Dirty,
300  const char *File,
301  int Line);
302 
303 #define MiFlushMappedSection(A,O,S,D) _MiFlushMappedSection(A,O,S,D,__FILE__,__LINE__)
304 
305 VOID
306 NTAPI
308 
309 VOID
310 NTAPI
312 
313 NTSTATUS
314 NTAPI
317  IN PLARGE_INTEGER ViewOffset,
319 
320 NTSTATUS
321 NTAPI
326  ULONG Protect,
327  PLARGE_INTEGER ViewOffset,
329  const char *file,
330  int line);
331 
332 #define MiMapViewOfSegment(AddressSpace,Segment,BaseAddress,ViewSize,Protect,ViewOffset,AllocationType) \
333  _MiMapViewOfSegment(AddressSpace,Segment,BaseAddress,ViewSize,Protect,ViewOffset,AllocationType,__FILE__,__LINE__)
334 
335 NTSTATUS
336 NTAPI
339 
340 NTSTATUS
341 NTAPI
343 
344 _Success_(1)
346 NTSTATUS
347 NTAPI
354 
355 NTSTATUS
356 NTAPI
359  PVOID Address,
361 
363 BOOLEAN
365  const char *file,
366  int line)
367 {
369  //DbgPrint("(%s:%d) Try Lock Address Space %x -> %s\n", file, line, AddressSpace, Result ? "true" : "false");
370  return Result;
371 }
372 
373 #define MmTryToLockAddressSpace(x) _MmTryToLockAddressSpace(x,__FILE__,__LINE__)
374 
375 NTSTATUS
376 NTAPI
379  PMM_REQUIRED_RESOURCES RequiredResources);
380 
381 NTSTATUS
382 NTAPI
385  PMM_REQUIRED_RESOURCES RequiredResources);
386 
387 NTSTATUS
388 NTAPI
391  BOOLEAN ExtendFile);
392 
393 NTSTATUS
394 NTAPI
396  PLARGE_INTEGER BaseOffset,
398  BOOLEAN Dirty,
399  const char *File,
400  int Line);
401 
402 #define MiFlushMappedSection(A,O,S,D) _MiFlushMappedSection(A,O,S,D,__FILE__,__LINE__)
403 
404 PVOID
405 NTAPI
407  PULONG RawOffset);
408 
409 NTSTATUS
410 NTAPI
413  BOOLEAN FromMdl);
414 
415 ULONG
416 NTAPI
418  ULONG Target);
419 
420 NTSTATUS
422  ULONG Priority,
423  PULONG NrFreed);
_Must_inspect_result_ _Outptr_ PVOID * SectionObject
Definition: fsrtlfuncs.h:860
VOID(NTAPI * FREE_SECTION_PAGE_FUN)(PMM_SECTION_SEGMENT Segment, PLARGE_INTEGER Offset)
Definition: newmm.h:145
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:35
NTSTATUS NTAPI _MmSetPageEntrySectionSegment(PMM_SECTION_SEGMENT Segment, PLARGE_INTEGER Offset, ULONG_PTR Entry, const char *file, int line)
Definition: sptab.c:178
#define IN
Definition: typedefs.h:38
NTSTATUS NTAPI MmAccessFaultCacheSection(KPROCESSOR_MODE Mode, ULONG_PTR Address, BOOLEAN FromMdl)
Definition: fault.c:688
return
Definition: dirsup.c:529
NTSTATUS NTAPI _MiMapViewOfSegment(PMMSUPPORT AddressSpace, PMM_SECTION_SEGMENT Segment, PVOID *BaseAddress, SIZE_T ViewSize, ULONG Protect, PLARGE_INTEGER ViewOffset, ULONG AllocationType, const char *file, int line)
Definition: data.c:539
PVOID NTAPI MmGetSegmentRmap(PFN_NUMBER Page, PULONG RawOffset)
Definition: rmap.c:451
NTSTATUS NTAPI MiSimpleRead(PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset, PVOID Buffer, ULONG Length, BOOLEAN Paging, PIO_STATUS_BLOCK ReadStatus)
Definition: io.c:114
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG AllocationAttributes
Definition: mmfuncs.h:360
VOID NTAPI _MmLockSectionSegment(PMM_SECTION_SEGMENT Segment, const char *file, int line)
Definition: data.c:98
_In_ ULONG Mode
Definition: hubbusif.h:303
#define STATUS_MORE_PROCESSING_REQUIRED
Definition: shellext.h:68
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T _In_ SECTION_INHERIT _In_ ULONG _In_ ULONG Protect
Definition: zwfuncs.h:214
_In_ ULONG _In_ PHYSICAL_ADDRESS _Inout_ PULONG AddressSpace
Definition: iofuncs.h:2268
_At_(Required->DoAcquisition, _Post_notnull_)) NTSTATUS NTAPI MiCowCacheSectionPage(_In_ PMMSUPPORT AddressSpace
_In_ PMEMORY_AREA _In_ PVOID Address
Definition: newmm.h:260
LONG NTSTATUS
Definition: precomp.h:26
_In_ KPRIORITY Priority
Definition: kefuncs.h:516
NTSTATUS NTAPI MmFinalizeSectionPageOut(PMM_SECTION_SEGMENT Segment, PLARGE_INTEGER FileOffset, PFN_NUMBER Page, BOOLEAN Dirty)
Definition: swapout.c:165
AcquireResource DoAcquisition
Definition: newmm.h:89
#define _Post_notnull_
Definition: no_sal2.h:460
struct _CACHE_SECTION_PAGE_TABLE * PCACHE_SECTION_PAGE_TABLE
NTSTATUS NTAPI MiReadFilePage(PMMSUPPORT AddressSpace, PMEMORY_AREA MemoryArea, PMM_REQUIRED_RESOURCES RequiredResources)
Definition: reqtools.c:133
NTSTATUS MiRosTrimCache(ULONG Target, ULONG Priority, PULONG NrFreed)
Definition: swapout.c:633
NTSTATUS(NTAPI * NotPresentFaultHandler)(PMMSUPPORT AddressSpace, struct _MEMORY_AREA *MemoryArea, PVOID Address, BOOLEAN Locked, struct _MM_REQUIRED_RESOURCES *Required)
Definition: newmm.h:68
ULONG_PTR NTAPI _MmGetPageEntrySectionSegment(PMM_SECTION_SEGMENT Segment, PLARGE_INTEGER Offset, const char *file, int line)
Definition: sptab.c:237
NTSTATUS NTAPI MiSwapInPage(PMMSUPPORT AddressSpace, PMEMORY_AREA MemoryArea, PMM_REQUIRED_RESOURCES RequiredResources)
Definition: reqtools.c:220
NTSTATUS NTAPI _MiSimpleWrite(PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset, PVOID Buffer, ULONG Length, PIO_STATUS_BLOCK ReadStatus, const char *file, int line)
Definition: io.c:205
VOID NTAPI MiFreeSegmentPage(PMM_SECTION_SEGMENT Segment, PLARGE_INTEGER FileOffset)
Definition: data.c:616
uint32_t ULONG_PTR
Definition: typedefs.h:63
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER _In_ ULONG SectionPageProtection
Definition: mmfuncs.h:360
ULONG PFN_NUMBER
Definition: ke.h:8
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
_In_ ULONG _In_ ULONG Offset
Definition: ntddpcm.h:101
ULONG_PTR PageEntries[ENTRIES_PER_ELEMENT]
Definition: newmm.h:58
NTSTATUS NTAPI MiGetOnePage(PMMSUPPORT AddressSpace, PMEMORY_AREA MemoryArea, PMM_REQUIRED_RESOURCES RequiredResources)
Definition: reqtools.c:83
VOID MmFreeCacheSectionPage(PVOID Context, MEMORY_AREA *MemoryArea, PVOID Address, PFN_NUMBER Page, SWAPENTRY SwapEntry, BOOLEAN Dirty)
Definition: data.c:662
PFN_NUMBER Page[2]
Definition: newmm.h:90
_In_ PMEMORY_AREA _In_ PVOID _In_ BOOLEAN Locked
Definition: newmm.h:260
VOID NTAPI MmFinalizeSegment(PMM_SECTION_SEGMENT Segment)
Definition: data.c:271
NTSTATUS NTAPI MmpPageOutPhysicalAddress(PFN_NUMBER Page)
Definition: swapout.c:345
VOID NTAPI MmDeleteSectionAssociation(PFN_NUMBER Page)
Definition: rmap.c:484
NTSTATUS NTAPI MmUnmapCacheViewInSystemSpace(PVOID Address)
unsigned char BOOLEAN
#define FORCEINLINE
Definition: ntbasedef.h:221
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:426
Definition: parser.c:48
Definition: bufpool.h:45
VOID MmPageOutDeleteMapping(PVOID Context, PEPROCESS Process, PVOID Address)
Definition: section.c:1922
NTSTATUS NTAPI MmSetSectionAssociation(PFN_NUMBER Page, PMM_SECTION_SEGMENT Segment, PLARGE_INTEGER Offset)
Definition: sptab.c:352
_Inout_ PFILE_OBJECT FileObject
Definition: cdprocs.h:593
PMM_SECTION_SEGMENT NTAPI MmGetSectionAssociation(PFN_NUMBER Page, PLARGE_INTEGER Offset)
Definition: sptab.c:331
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
_Inout_ PVOID Segment
Definition: exfuncs.h:893
PMM_SECTION_SEGMENT Segment
Definition: newmm.h:56
NTSTATUS NTAPI _MiWriteBackPage(PFILE_OBJECT FileObject, PLARGE_INTEGER Offset, ULONG Length, PFN_NUMBER Page, const char *File, int Line)
Definition: io.c:296
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
Definition: mmfuncs.h:404
VOID NTAPI MmFreeSectionSegments(PFILE_OBJECT FileObject)
Definition: section.c:807
LARGE_INTEGER FileOffset
Definition: newmm.h:55
VOID NTAPI MmFreePageTablesSectionSegment(PMM_SECTION_SEGMENT Segment, FREE_SECTION_PAGE_FUN FreePage)
Definition: sptab.c:278
#define _Inout_
Definition: no_sal2.h:244
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
CCHAR KPROCESSOR_MODE
Definition: ketypes.h:7
_Must_inspect_result_ typedef _In_ ULONG _In_ BOOLEAN Target
Definition: iotypes.h:1068
* PFILE_OBJECT
Definition: iotypes.h:1955
FORCEINLINE BOOLEAN _MmTryToLockAddressSpace(IN PMMSUPPORT AddressSpace, const char *file, int line)
Definition: newmm.h:364
Definition: ncftp.h:79
struct _MM_REQUIRED_RESOURCES * PMM_REQUIRED_RESOURCES
struct _MM_REQUIRED_RESOURCES MM_REQUIRED_RESOURCES
NTSTATUS NTAPI MiSwapInSectionPage(PMMSUPPORT AddressSpace, PMEMORY_AREA MemoryArea, PMM_REQUIRED_RESOURCES RequiredResources)
#define VOID
Definition: acefi.h:82
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
Definition: fsrtlfuncs.h:108
_Must_inspect_result_ _In_ USHORT NewSize
Definition: fltkernel.h:975
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T _In_ SECTION_INHERIT _In_ ULONG AllocationType
Definition: mmfuncs.h:404
VOID NTAPI MiInitializeSectionPageTable(PMM_SECTION_SEGMENT Segment)
Definition: sptab.c:165
NTSTATUS NTAPI MmUnmapViewOfCacheSegment(PMMSUPPORT AddressSpace, PVOID BaseAddress)
Definition: data.c:713
#define _In_
Definition: no_sal2.h:204
typedef NTSTATUS(NTAPI *AcquireResource)(PMMSUPPORT AddressSpace
ULONG_PTR SIZE_T
Definition: typedefs.h:78
_Success_(1) _When_(return
ULONG NTAPI MiCacheEvictPages(PMM_SECTION_SEGMENT Segment, ULONG Target)
Definition: swapout.c:590
NTSTATUS MmspWaitForFileLock(PFILE_OBJECT File)
Definition: section.c:799
BOOLEAN FASTCALL KeTryToAcquireGuardedMutex(IN OUT PKGUARDED_MUTEX GuardedMutex)
Definition: gmutex.c:86
_In_ PFCB _In_ LONGLONG FileOffset
Definition: cdprocs.h:151
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB _In_ PDIRENT _In_ ULONG _In_ ULONG _In_ PUNICODE_STRING _In_ PACCESS_MASK DesiredAccess
Definition: create.c:4157
ULONG_PTR SWAPENTRY
Definition: mm.h:47
unsigned int * PULONG
Definition: retypes.h:1
#define _When_(expr, annos)
Definition: no_sal2.h:639
NTSTATUS(NTAPI * FaultHandler)(PMMSUPPORT AddressSpace, struct _MEMORY_AREA *MemoryArea, PVOID Address, struct _MM_REQUIRED_RESOURCES *Required)
Definition: newmm.h:75
_Must_inspect_result_ _Outptr_result_bytebuffer_ ViewSize PVOID * MappedBase
Definition: mmfuncs.h:493
NTSTATUS NTAPI MmCreateCacheSection(PROS_SECTION_OBJECT *SectionObject, ACCESS_MASK DesiredAccess, POBJECT_ATTRIBUTES ObjectAttributes, PLARGE_INTEGER UMaximumSize, ULONG SectionPageProtection, ULONG AllocationAttributes, PFILE_OBJECT FileObject)
Definition: data.c:308
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:219
NTSTATUS NTAPI MiWriteSwapPage(PMMSUPPORT AddressSpace, PMEMORY_AREA MemoryArea, PMM_REQUIRED_RESOURCES Resources)
SWAPENTRY SwapEntry
Definition: newmm.h:92
#define OUT
Definition: typedefs.h:39
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T ViewSize
Definition: mmfuncs.h:404
LARGE_INTEGER FileOffset
Definition: newmm.h:88
const char * File
Definition: newmm.h:93
NTSTATUS NTAPI MiCowCacheSectionPage(_In_ PMMSUPPORT AddressSpace, _In_ PMEMORY_AREA MemoryArea, _In_ PVOID Address, _In_ BOOLEAN Locked, _Inout_ PMM_REQUIRED_RESOURCES Required)
Definition: fault.c:321
unsigned int ULONG
Definition: retypes.h:1
#define const
Definition: zconf.h:230
KEVENT MmWaitPageEvent
struct _CACHE_SECTION_PAGE_TABLE CACHE_SECTION_PAGE_TABLE
static USHORT ReadStatus(PUCHAR ReadDataPort)
Definition: hardware.c:116
NTSTATUS NTAPI _MiFlushMappedSection(PVOID BaseAddress, PLARGE_INTEGER BaseOffset, PLARGE_INTEGER FileSize, BOOLEAN Dirty, const char *File, int Line)
Definition: data.c:128
NTSTATUS NTAPI MmNotPresentFaultCacheSection(KPROCESSOR_MODE Mode, ULONG_PTR Address, BOOLEAN FromMdl)
Definition: fault.c:907
Definition: File.h:15
struct _MEMORY_AREA struct _MM_REQUIRED_RESOURCES * Required
Definition: newmm.h:66
NTSTATUS NTAPI MmMapCacheViewInSystemSpaceAtOffset(IN PMM_SECTION_SEGMENT Segment, OUT PVOID *MappedBase, IN PLARGE_INTEGER ViewOffset, IN OUT PULONG ViewSize)
NTSTATUS NTAPI MiWriteFilePage(PMMSUPPORT AddressSpace, PMEMORY_AREA MemoryArea, PMM_REQUIRED_RESOURCES Resources)
Definition: reqtools.c:271
NTSTATUS NTAPI MmPageOutPageFileView(PMMSUPPORT AddressSpace, PMEMORY_AREA MemoryArea, PVOID Address, PMM_REQUIRED_RESOURCES Required)
struct _MEMORY_AREA * MemoryArea
Definition: newmm.h:65
NTSTATUS NTAPI MmExtendCacheSection(PROS_SECTION_OBJECT Section, PLARGE_INTEGER NewSize, BOOLEAN ExtendFile)
Definition: data.c:758
ULONG ACCESS_MASK
Definition: nt_native.h:40
base of all file and directory entries
Definition: entries.h:82
NTSTATUS NTAPI MmNotPresentFaultCachePage(_In_ PMMSUPPORT AddressSpace, _In_ MEMORY_AREA *MemoryArea, _In_ PVOID Address, _In_ BOOLEAN Locked, _Inout_ PMM_REQUIRED_RESOURCES Required)
Definition: fault.c:105
NTSTATUS NTAPI MiWidenSegment(PMMSUPPORT AddressSpace, PMEMORY_AREA MemoryArea, PMM_REQUIRED_RESOURCES RequiredResources)
PFN_NUMBER NTAPI MmWithdrawSectionPage(PMM_SECTION_SEGMENT Segment, PLARGE_INTEGER FileOffset, BOOLEAN *Dirty)
Definition: swapout.c:87
#define ENTRIES_PER_ELEMENT
Definition: newmm.h:49
VOID NTAPI _MmUnlockSectionSegment(PMM_SECTION_SEGMENT Segment, const char *file, int line)
Definition: data.c:107
Definition: fci.c:126