3 Copyright (c) Alex Ionescu. All rights reserved.
11 Functions definitions for the Memory Manager.
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
28 #ifndef NTOS_MODE_USER
36 OUT PVOID
*SectionObject
,
37 IN ACCESS_MASK DesiredAccess
,
38 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
39 IN PLARGE_INTEGER MaximumSize
,
40 IN ULONG SectionPageProtection
,
41 IN ULONG AllocationAttributes
,
42 IN HANDLE FileHandle OPTIONAL
,
43 IN PFILE_OBJECT File OPTIONAL
49 IN PVOID SectionObject
,
51 IN OUT PVOID
*BaseAddress
,
52 IN ULONG_PTR ZeroBits
,
54 IN OUT PLARGE_INTEGER SectionOffset OPTIONAL
,
55 IN OUT PSIZE_T ViewSize
,
56 IN SECTION_INHERIT InheritDisposition
,
57 IN ULONG AllocationType
,
64 struct _EPROCESS
* Process
,
76 NtAreMappedFilesTheSame(
77 IN PVOID File1MappedAsAnImage
,
78 IN PVOID File2MappedAsFile
83 NtAllocateUserPhysicalPages(
84 IN HANDLE ProcessHandle
,
85 IN OUT PULONG_PTR NumberOfPages
,
86 IN OUT PULONG_PTR UserPfnArray
92 NtAllocateVirtualMemory(
93 IN HANDLE ProcessHandle
,
94 IN OUT PVOID
*BaseAddress
,
95 IN ULONG_PTR ZeroBits
,
96 IN OUT PSIZE_T RegionSize
,
97 IN ULONG AllocationType
,
105 IN PUNICODE_STRING FileName
,
106 IN PLARGE_INTEGER InitialSize
,
107 IN PLARGE_INTEGER MaxiumSize
,
115 OUT PHANDLE SectionHandle
,
116 IN ACCESS_MASK DesiredAccess
,
117 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
118 IN PLARGE_INTEGER MaximumSize OPTIONAL
,
119 IN ULONG SectionPageProtection OPTIONAL
,
120 IN ULONG AllocationAttributes
,
121 IN HANDLE FileHandle OPTIONAL
128 IN HANDLE SectionHandle
,
129 IN PLARGE_INTEGER NewMaximumSize
135 NtFlushVirtualMemory(
136 IN HANDLE ProcessHandle
,
137 IN OUT PVOID
*BaseAddress
,
138 IN OUT PSIZE_T RegionSize
,
139 OUT PIO_STATUS_BLOCK IoStatus
144 NtFreeUserPhysicalPages(
145 IN HANDLE ProcessHandle
,
146 IN OUT PULONG_PTR NumberOfPages
,
147 IN OUT PULONG_PTR UserPfnArray
154 IN HANDLE ProcessHandle
,
155 IN PVOID
*BaseAddress
,
156 IN PSIZE_T RegionSize
,
164 IN HANDLE ProcessHandle
,
166 IN PVOID BaseAddress
,
167 IN SIZE_T RegionSize
,
168 IN PVOID
*UserAddressArray
,
169 OUT PULONG_PTR EntriesInUserAddressArray
,
170 OUT PULONG Granularity
177 IN HANDLE ProcessHandle
,
178 IN OUT PVOID
*BaseAddress
,
179 IN OUT PSIZE_T NumberOfBytesToLock
,
185 NtMapUserPhysicalPages(
186 IN PVOID VirtualAddresses
,
187 IN ULONG_PTR NumberOfPages
,
188 IN OUT PULONG_PTR UserPfnArray
193 NtMapUserPhysicalPagesScatter(
194 IN PVOID
*VirtualAddresses
,
195 IN ULONG_PTR NumberOfPages
,
196 IN OUT PULONG_PTR UserPfnArray
203 IN HANDLE SectionHandle
,
204 IN HANDLE ProcessHandle
,
205 IN OUT PVOID
*BaseAddress
,
206 IN ULONG_PTR ZeroBits
,
207 IN SIZE_T CommitSize
,
208 IN OUT PLARGE_INTEGER SectionOffset OPTIONAL
,
209 IN OUT PSIZE_T ViewSize
,
210 IN SECTION_INHERIT InheritDisposition
,
211 IN ULONG AllocationType
,
212 IN ULONG AccessProtection
219 OUT PHANDLE SectionHandle
,
220 IN ACCESS_MASK DesiredAccess
,
221 IN POBJECT_ATTRIBUTES ObjectAttributes
227 NtProtectVirtualMemory(
228 IN HANDLE ProcessHandle
,
229 IN PVOID
*BaseAddress
,
230 IN SIZE_T
*NumberOfBytesToProtect
,
231 IN ULONG NewAccessProtection
,
232 OUT PULONG OldAccessProtection
239 IN HANDLE SectionHandle
,
240 IN SECTION_INFORMATION_CLASS SectionInformationClass
,
241 OUT PVOID SectionInformation
,
243 OUT PSIZE_T ResultLength
249 NtQueryVirtualMemory(
250 IN HANDLE ProcessHandle
,
252 IN MEMORY_INFORMATION_CLASS VirtualMemoryInformationClass
,
253 OUT PVOID VirtualMemoryInformation
,
255 OUT PSIZE_T ResultLength
262 IN HANDLE ProcessHandle
,
263 IN PVOID BaseAddress
,
265 IN SIZE_T NumberOfBytesToRead
,
266 OUT PSIZE_T NumberOfBytesRead
272 IN HANDLE ProcessHandle
,
273 IN PVOID BaseAddress
,
280 NtUnlockVirtualMemory(
281 IN HANDLE ProcessHandle
,
282 IN OUT PVOID
*BaseAddress
,
283 IN OUT PSIZE_T NumberOfBytesToUnlock
,
290 NtUnmapViewOfSection(
291 IN HANDLE ProcessHandle
,
298 NtWriteVirtualMemory(
299 IN HANDLE ProcessHandle
,
300 IN PVOID BaseAddress
,
302 IN SIZE_T NumberOfBytesToWrite
,
303 OUT PSIZE_T NumberOfBytesWritten
309 ZwAreMappedFilesTheSame(
310 IN PVOID File1MappedAsAnImage
,
311 IN PVOID File2MappedAsFile
317 ZwAllocateVirtualMemory(
318 IN HANDLE ProcessHandle
,
319 IN OUT PVOID
*BaseAddress
,
320 IN ULONG_PTR ZeroBits
,
321 IN OUT PSIZE_T RegionSize
,
322 IN ULONG AllocationType
,
330 IN PUNICODE_STRING FileName
,
331 IN PLARGE_INTEGER InitialSize
,
332 IN PLARGE_INTEGER MaxiumSize
,
340 OUT PHANDLE SectionHandle
,
341 IN ACCESS_MASK DesiredAccess
,
342 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
343 IN PLARGE_INTEGER MaximumSize OPTIONAL
,
344 IN ULONG SectionPageProtection OPTIONAL
,
345 IN ULONG AllocationAttributes
,
346 IN HANDLE FileHandle OPTIONAL
353 IN HANDLE SectionHandle
,
354 IN PLARGE_INTEGER NewMaximumSize
361 IN HANDLE ProcessHandle
,
362 IN PVOID
*BaseAddress
,
363 IN PSIZE_T RegionSize
,
371 IN HANDLE ProcessHandle
,
372 IN OUT PVOID
*BaseAddress
,
373 IN OUT PSIZE_T NumberOfBytesToLock
,
381 IN HANDLE SectionHandle
,
382 IN HANDLE ProcessHandle
,
383 IN OUT PVOID
*BaseAddress
,
384 IN ULONG_PTR ZeroBits
,
385 IN SIZE_T CommitSize
,
386 IN OUT PLARGE_INTEGER SectionOffset OPTIONAL
,
387 IN OUT PSIZE_T ViewSize
,
388 IN SECTION_INHERIT InheritDisposition
,
389 IN ULONG AllocationType
,
390 IN ULONG AccessProtection
397 OUT PHANDLE SectionHandle
,
398 IN ACCESS_MASK DesiredAccess
,
399 IN POBJECT_ATTRIBUTES ObjectAttributes
405 ZwProtectVirtualMemory(
406 IN HANDLE ProcessHandle
,
407 IN PVOID
*BaseAddress
,
408 IN SIZE_T
*NumberOfBytesToProtect
,
409 IN ULONG NewAccessProtection
,
410 OUT PULONG OldAccessProtection
417 IN HANDLE SectionHandle
,
418 IN SECTION_INFORMATION_CLASS SectionInformationClass
,
419 OUT PVOID SectionInformation
,
421 OUT PSIZE_T ResultLength
427 ZwQueryVirtualMemory(
428 IN HANDLE ProcessHandle
,
430 IN MEMORY_INFORMATION_CLASS VirtualMemoryInformationClass
,
431 OUT PVOID VirtualMemoryInformation
,
433 OUT PSIZE_T ResultLength
440 IN HANDLE ProcessHandle
,
441 IN PVOID BaseAddress
,
443 IN SIZE_T NumberOfBytesToRead
,
444 OUT PSIZE_T NumberOfBytesRead
450 ZwUnlockVirtualMemory(
451 IN HANDLE ProcessHandle
,
452 IN OUT PVOID
*BaseAddress
,
453 IN OUT PSIZE_T NumberOfBytesToUnlock
,
460 ZwUnmapViewOfSection(
461 IN HANDLE ProcessHandle
,
468 ZwWriteVirtualMemory(
469 IN HANDLE ProcessHandle
,
470 IN PVOID BaseAddress
,
472 IN SIZE_T NumberOfBytesToWrite
,
473 OUT PSIZE_T NumberOfBytesWritten