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
27 #ifndef NTOS_MODE_USER
35 OUT PVOID
*SectionObject
,
36 IN ACCESS_MASK DesiredAccess
,
37 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
38 IN PLARGE_INTEGER MaximumSize
,
39 IN ULONG SectionPageProtection
,
40 IN ULONG AllocationAttributes
,
41 IN HANDLE FileHandle OPTIONAL
,
42 IN PFILE_OBJECT File OPTIONAL
48 IN PVOID SectionObject
,
50 IN OUT PVOID
*BaseAddress
,
51 IN ULONG_PTR ZeroBits
,
53 IN OUT PLARGE_INTEGER SectionOffset OPTIONAL
,
54 IN OUT PSIZE_T ViewSize
,
55 IN SECTION_INHERIT InheritDisposition
,
56 IN ULONG AllocationType
,
63 struct _EPROCESS
* Process
,
75 NtAreMappedFilesTheSame(
76 IN PVOID File1MappedAsAnImage
,
77 IN PVOID File2MappedAsFile
82 NtAllocateUserPhysicalPages(
83 IN HANDLE ProcessHandle
,
84 IN OUT PULONG_PTR NumberOfPages
,
85 IN OUT PULONG_PTR UserPfnArray
91 NtAllocateVirtualMemory(
92 IN HANDLE ProcessHandle
,
93 IN OUT PVOID
*BaseAddress
,
94 IN ULONG_PTR ZeroBits
,
95 IN OUT PSIZE_T RegionSize
,
96 IN ULONG AllocationType
,
104 IN PUNICODE_STRING FileName
,
105 IN PLARGE_INTEGER InitialSize
,
106 IN PLARGE_INTEGER MaxiumSize
,
114 OUT PHANDLE SectionHandle
,
115 IN ACCESS_MASK DesiredAccess
,
116 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
117 IN PLARGE_INTEGER MaximumSize OPTIONAL
,
118 IN ULONG SectionPageProtection OPTIONAL
,
119 IN ULONG AllocationAttributes
,
120 IN HANDLE FileHandle OPTIONAL
127 IN HANDLE SectionHandle
,
128 IN PLARGE_INTEGER NewMaximumSize
134 NtFlushVirtualMemory(
135 IN HANDLE ProcessHandle
,
136 IN OUT PVOID
*BaseAddress
,
137 IN OUT PSIZE_T RegionSize
,
138 OUT PIO_STATUS_BLOCK IoStatus
143 NtFreeUserPhysicalPages(
144 IN HANDLE ProcessHandle
,
145 IN OUT PULONG_PTR NumberOfPages
,
146 IN OUT PULONG_PTR UserPfnArray
153 IN HANDLE ProcessHandle
,
154 IN PVOID
*BaseAddress
,
155 IN PSIZE_T RegionSize
,
163 IN HANDLE ProcessHandle
,
165 IN PVOID BaseAddress
,
166 IN SIZE_T RegionSize
,
167 IN PVOID
*UserAddressArray
,
168 OUT PULONG_PTR EntriesInUserAddressArray
,
169 OUT PULONG Granularity
176 IN HANDLE ProcessHandle
,
177 IN OUT PVOID
*BaseAddress
,
178 IN OUT PSIZE_T NumberOfBytesToLock
,
184 NtMapUserPhysicalPages(
185 IN PVOID VirtualAddresses
,
186 IN ULONG_PTR NumberOfPages
,
187 IN OUT PULONG_PTR UserPfnArray
192 NtMapUserPhysicalPagesScatter(
193 IN PVOID
*VirtualAddresses
,
194 IN ULONG_PTR NumberOfPages
,
195 IN OUT PULONG_PTR UserPfnArray
202 IN HANDLE SectionHandle
,
203 IN HANDLE ProcessHandle
,
204 IN OUT PVOID
*BaseAddress
,
205 IN ULONG_PTR ZeroBits
,
206 IN SIZE_T CommitSize
,
207 IN OUT PLARGE_INTEGER SectionOffset OPTIONAL
,
208 IN OUT PSIZE_T ViewSize
,
209 IN SECTION_INHERIT InheritDisposition
,
210 IN ULONG AllocationType
,
211 IN ULONG AccessProtection
218 OUT PHANDLE SectionHandle
,
219 IN ACCESS_MASK DesiredAccess
,
220 IN POBJECT_ATTRIBUTES ObjectAttributes
226 NtProtectVirtualMemory(
227 IN HANDLE ProcessHandle
,
228 IN PVOID
*BaseAddress
,
229 IN SIZE_T
*NumberOfBytesToProtect
,
230 IN ULONG NewAccessProtection
,
231 OUT PULONG OldAccessProtection
238 IN HANDLE SectionHandle
,
239 IN SECTION_INFORMATION_CLASS SectionInformationClass
,
240 OUT PVOID SectionInformation
,
242 OUT PSIZE_T ResultLength
248 NtQueryVirtualMemory(
249 IN HANDLE ProcessHandle
,
251 IN MEMORY_INFORMATION_CLASS VirtualMemoryInformationClass
,
252 OUT PVOID VirtualMemoryInformation
,
254 OUT PSIZE_T ResultLength
261 IN HANDLE ProcessHandle
,
262 IN PVOID BaseAddress
,
264 IN SIZE_T NumberOfBytesToRead
,
265 OUT PSIZE_T NumberOfBytesRead
271 IN HANDLE ProcessHandle
,
272 IN PVOID BaseAddress
,
279 NtUnlockVirtualMemory(
280 IN HANDLE ProcessHandle
,
281 IN OUT PVOID
*BaseAddress
,
282 IN OUT PSIZE_T NumberOfBytesToUnlock
,
289 NtUnmapViewOfSection(
290 IN HANDLE ProcessHandle
,
297 NtWriteVirtualMemory(
298 IN HANDLE ProcessHandle
,
299 IN PVOID BaseAddress
,
301 IN SIZE_T NumberOfBytesToWrite
,
302 OUT PSIZE_T NumberOfBytesWritten
308 ZwAreMappedFilesTheSame(
309 IN PVOID File1MappedAsAnImage
,
310 IN PVOID File2MappedAsFile
316 ZwAllocateVirtualMemory(
317 IN HANDLE ProcessHandle
,
318 IN OUT PVOID
*BaseAddress
,
319 IN ULONG_PTR ZeroBits
,
320 IN OUT PSIZE_T RegionSize
,
321 IN ULONG AllocationType
,
329 IN PUNICODE_STRING FileName
,
330 IN PLARGE_INTEGER InitialSize
,
331 IN PLARGE_INTEGER MaxiumSize
,
339 OUT PHANDLE SectionHandle
,
340 IN ACCESS_MASK DesiredAccess
,
341 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
342 IN PLARGE_INTEGER MaximumSize OPTIONAL
,
343 IN ULONG SectionPageProtection OPTIONAL
,
344 IN ULONG AllocationAttributes
,
345 IN HANDLE FileHandle OPTIONAL
352 IN HANDLE SectionHandle
,
353 IN PLARGE_INTEGER NewMaximumSize
360 IN HANDLE ProcessHandle
,
361 IN PVOID
*BaseAddress
,
362 IN PSIZE_T RegionSize
,
370 IN HANDLE ProcessHandle
,
371 IN OUT PVOID
*BaseAddress
,
372 IN OUT PSIZE_T NumberOfBytesToLock
,
380 IN HANDLE SectionHandle
,
381 IN HANDLE ProcessHandle
,
382 IN OUT PVOID
*BaseAddress
,
383 IN ULONG_PTR ZeroBits
,
384 IN SIZE_T CommitSize
,
385 IN OUT PLARGE_INTEGER SectionOffset OPTIONAL
,
386 IN OUT PSIZE_T ViewSize
,
387 IN SECTION_INHERIT InheritDisposition
,
388 IN ULONG AllocationType
,
389 IN ULONG AccessProtection
396 OUT PHANDLE SectionHandle
,
397 IN ACCESS_MASK DesiredAccess
,
398 IN POBJECT_ATTRIBUTES ObjectAttributes
404 ZwProtectVirtualMemory(
405 IN HANDLE ProcessHandle
,
406 IN PVOID
*BaseAddress
,
407 IN SIZE_T
*NumberOfBytesToProtect
,
408 IN ULONG NewAccessProtection
,
409 OUT PULONG OldAccessProtection
416 IN HANDLE SectionHandle
,
417 IN SECTION_INFORMATION_CLASS SectionInformationClass
,
418 OUT PVOID SectionInformation
,
420 OUT PSIZE_T ResultLength
426 ZwQueryVirtualMemory(
427 IN HANDLE ProcessHandle
,
429 IN MEMORY_INFORMATION_CLASS VirtualMemoryInformationClass
,
430 OUT PVOID VirtualMemoryInformation
,
432 OUT PSIZE_T ResultLength
439 IN HANDLE ProcessHandle
,
440 IN PVOID BaseAddress
,
442 IN SIZE_T NumberOfBytesToRead
,
443 OUT PSIZE_T NumberOfBytesRead
449 ZwUnlockVirtualMemory(
450 IN HANDLE ProcessHandle
,
451 IN OUT PVOID
*BaseAddress
,
452 IN OUT PSIZE_T NumberOfBytesToUnlock
,
459 ZwUnmapViewOfSection(
460 IN HANDLE ProcessHandle
,
467 ZwWriteVirtualMemory(
468 IN HANDLE ProcessHandle
,
469 IN PVOID BaseAddress
,
471 IN SIZE_T NumberOfBytesToWrite
,
472 OUT PSIZE_T NumberOfBytesWritten