ReactOS 0.4.17-dev-489-g0298e10
mmfuncs.h
Go to the documentation of this file.
1/*++ NDK Version: 0098
2
3Copyright (c) Alex Ionescu. All rights reserved.
4
5Header Name:
6
7 mmfuncs.h
8
9Abstract:
10
11 Functions definitions for the Memory Manager.
12
13Author:
14
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
16
17--*/
18
19#ifndef _MMFUNCS_H
20#define _MMFUNCS_H
21
22//
23// Dependencies
24//
25#include <umtypes.h>
26#include <mmtypes.h>
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
32#ifndef NTOS_MODE_USER
33
34//
35// Section Functions
36//
48);
49
60 _In_range_(ViewShare, ViewUnmap) SECTION_INHERIT InheritDisposition,
63);
64
68 _In_ struct _EPROCESS* Process,
70);
71
72#endif
73
74//
75// Native calls
76//
81 _In_ PVOID File1MappedAsAnImage,
82 _In_ PVOID File2MappedAsFile
83);
84
89 _Inout_ PULONG_PTR NumberOfPages,
90 _Inout_ PULONG_PTR UserPfnArray
91);
92
106);
107
110NTAPI
113 _In_ PLARGE_INTEGER MinimumSize,
116);
117
122NTAPI
124 _Out_ PHANDLE SectionHandle,
131);
132
135NTAPI
137 _In_ HANDLE SectionHandle,
138 _In_ PLARGE_INTEGER NewMaximumSize
139);
140
143NTAPI
147 _In_ SIZE_T NumberOfBytesToFlush
148);
149
152NTAPI
158);
159
161NTAPI
164 _Inout_ PULONG_PTR NumberOfPages,
165 _Inout_ PULONG_PTR UserPfnArray
166);
167
172NTAPI
178);
179
181NTAPI
187 _In_ PVOID *UserAddressArray,
188 _Out_ PULONG_PTR EntriesInUserAddressArray,
189 _Out_ PULONG Granularity
190);
191
194NTAPI
198 _Inout_ PSIZE_T NumberOfBytesToLock,
199 _In_ ULONG MapType
200);
201
203NTAPI
205 _In_ PVOID VirtualAddresses,
206 _In_ ULONG_PTR NumberOfPages,
207 _Inout_ PULONG_PTR UserPfnArray
208);
209
211NTAPI
213 _In_ PVOID *VirtualAddresses,
214 _In_ ULONG_PTR NumberOfPages,
215 _Inout_ PULONG_PTR UserPfnArray
216);
217
220NTAPI
222 _In_ HANDLE SectionHandle,
229 _In_range_(ViewShare, ViewUnmap) SECTION_INHERIT InheritDisposition,
232);
233
236NTAPI
238 _Out_ PHANDLE SectionHandle,
241);
242
245NTAPI
249 _In_ SIZE_T *NumberOfBytesToProtect,
250 _In_ ULONG NewAccessProtection,
251 _Out_ PULONG OldAccessProtection
252);
253
256NTAPI
258 _In_ HANDLE SectionHandle,
259 _In_ SECTION_INFORMATION_CLASS SectionInformationClass,
260 _Out_ PVOID SectionInformation,
263);
264
267NTAPI
271 _In_ MEMORY_INFORMATION_CLASS VirtualMemoryInformationClass,
272 _Out_ PVOID VirtualMemoryInformation,
275);
276
279NTAPI
284 _In_ SIZE_T NumberOfBytesToRead,
285 _Out_opt_ PSIZE_T NumberOfBytesRead
286);
287
289NTAPI
294);
295
298NTAPI
302 _Inout_ PSIZE_T NumberOfBytesToUnlock,
303 _In_ ULONG MapType
304);
305
308NTAPI
312);
313
316NTAPI
321 _In_ SIZE_T NumberOfBytesToWrite,
322 _Out_opt_ PSIZE_T NumberOfBytesWritten
323);
324
327NTAPI
329 _In_ PVOID File1MappedAsAnImage,
330 _In_ PVOID File2MappedAsFile
331);
332
338NTAPI
339ZwAllocateVirtualMemory(
346);
347
350NTAPI
353 _In_ PLARGE_INTEGER MinimumSize,
356);
357
361NTAPI
362ZwCreateSection(
363 _Out_ PHANDLE SectionHandle,
370);
371
374NTAPI
376 _In_ HANDLE SectionHandle,
377 _In_ PLARGE_INTEGER NewMaximumSize
378);
379
383NTAPI
384ZwFreeVirtualMemory(
389);
390
393NTAPI
397 _Inout_ PSIZE_T NumberOfBytesToLock,
398 _In_ ULONG MapType
399);
400
404NTAPI
405ZwMapViewOfSection(
406 _In_ HANDLE SectionHandle,
416);
417
420NTAPI
422 _Out_ PHANDLE SectionHandle,
425);
426
429NTAPI
433 _In_ SIZE_T *NumberOfBytesToProtect,
434 _In_ ULONG NewAccessProtection,
435 _Out_ PULONG OldAccessProtection
436);
437
440NTAPI
442 _In_ HANDLE SectionHandle,
443 _In_ SECTION_INFORMATION_CLASS SectionInformationClass,
444 _Out_ PVOID SectionInformation,
447);
448
451NTAPI
455 _In_ MEMORY_INFORMATION_CLASS VirtualMemoryInformationClass,
456 _Out_ PVOID VirtualMemoryInformation,
459);
460
463NTAPI
468 _In_ SIZE_T NumberOfBytesToRead,
469 _Out_opt_ PSIZE_T NumberOfBytesRead
470);
471
474NTAPI
478 _Inout_ PSIZE_T NumberOfBytesToUnlock,
479 _In_ ULONG MapType
480);
481
485NTAPI
486ZwUnmapViewOfSection(
489);
490
493NTAPI
498 _In_ SIZE_T NumberOfBytesToWrite,
499 _Out_opt_ PSIZE_T NumberOfBytesWritten
500);
501
502#ifdef __cplusplus
503} // extern "C"
504#endif
505
506#endif // _MMFUNCS_H
LONG NTSTATUS
Definition: precomp.h:26
#define NTSYSAPI
Definition: ntoskrnl.h:12
Definition: bufpool.h:45
Definition: File.h:16
#define __drv_freesMem(kind)
Definition: driverspecs.h:272
#define _IRQL_requires_max_(irql)
Definition: driverspecs.h:230
#define __drv_allocatesMem(kind)
Definition: driverspecs.h:257
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
#define APC_LEVEL
Definition: env_spec_w32.h:695
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:223
_Must_inspect_result_ _Outptr_ PVOID * SectionObject
Definition: fsrtlfuncs.h:860
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
Definition: mxum.h:159
NTSYSCALLAPI NTSTATUS NTAPI NtUnmapViewOfSection(_In_ HANDLE ProcessHandle, _In_ PVOID BaseAddress)
NTSYSCALLAPI NTSTATUS NTAPI NtWriteVirtualMemory(_In_ HANDLE ProcessHandle, _In_ PVOID BaseAddress, _In_ PVOID Buffer, _In_ SIZE_T NumberOfBytesToWrite, _Out_opt_ PSIZE_T NumberOfBytesWritten)
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize _Pre_valid_ PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER SectionOffset
Definition: mmfuncs.h:411
NTSYSAPI NTSTATUS NTAPI ZwOpenSection(_Out_ PHANDLE SectionHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
NTSYSAPI NTSTATUS NTAPI ZwQueryVirtualMemory(_In_ HANDLE ProcessHandle, _In_ PVOID Address, _In_ MEMORY_INFORMATION_CLASS VirtualMemoryInformationClass, _Out_ PVOID VirtualMemoryInformation, _In_ SIZE_T Length, _Out_opt_ PSIZE_T ResultLength)
NTSYSAPI NTSTATUS NTAPI ZwUnlockVirtualMemory(_In_ HANDLE ProcessHandle, _Inout_ PVOID *BaseAddress, _Inout_ PSIZE_T NumberOfBytesToUnlock, _In_ ULONG MapType)
NTSYSCALLAPI NTSTATUS NTAPI NtExtendSection(_In_ HANDLE SectionHandle, _In_ PLARGE_INTEGER NewMaximumSize)
NTSYSCALLAPI NTSTATUS NTAPI NtAreMappedFilesTheSame(_In_ PVOID File1MappedAsAnImage, _In_ PVOID File2MappedAsFile)
NTSYSAPI NTSTATUS NTAPI ZwQuerySection(_In_ HANDLE SectionHandle, _In_ SECTION_INFORMATION_CLASS SectionInformationClass, _Out_ PVOID SectionInformation, _In_ SIZE_T Length, _Out_opt_ PSIZE_T ResultLength)
NTSYSAPI NTSTATUS NTAPI ZwCreatePagingFile(_In_ PUNICODE_STRING FileName, _In_ PLARGE_INTEGER MinimumSize, _In_ PLARGE_INTEGER MaximumSize, _In_ ULONG Reserved)
NTSTATUS NTAPI NtFreeUserPhysicalPages(_In_ HANDLE ProcessHandle, _Inout_ PULONG_PTR NumberOfPages, _Inout_ PULONG_PTR UserPfnArray)
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize _Pre_valid_ PVOID _In_ ULONG_PTR ZeroBits
Definition: mmfuncs.h:409
NTSTATUS NTAPI MmMapViewOfSection(_In_ PVOID SectionObject, _In_ PEPROCESS Process, _Outptr_result_bytebuffer_(*ViewSize) _Pre_opt_valid_ PVOID *BaseAddress, _In_ ULONG_PTR ZeroBits, _In_ SIZE_T CommitSize, _Inout_opt_ PLARGE_INTEGER SectionOffset, _Inout_ PSIZE_T ViewSize, _In_range_(ViewShare, ViewUnmap) SECTION_INHERIT InheritDisposition, _In_ ULONG AllocationType, _In_ ULONG Protect)
Definition: section.c:4031
NTSYSAPI NTSTATUS NTAPI ZwReadVirtualMemory(_In_ HANDLE ProcessHandle, _In_ PVOID BaseAddress, _Out_ PVOID Buffer, _In_ SIZE_T NumberOfBytesToRead, _Out_opt_ PSIZE_T NumberOfBytesRead)
NTSTATUS NTAPI NtGetWriteWatch(_In_ HANDLE ProcessHandle, _In_ ULONG Flags, _In_ PVOID BaseAddress, _In_ SIZE_T RegionSize, _In_ PVOID *UserAddressArray, _Out_ PULONG_PTR EntriesInUserAddressArray, _Out_ PULONG Granularity)
NTSYSCALLAPI NTSTATUS NTAPI NtProtectVirtualMemory(_In_ HANDLE ProcessHandle, _In_ PVOID *BaseAddress, _In_ SIZE_T *NumberOfBytesToProtect, _In_ ULONG NewAccessProtection, _Out_ PULONG OldAccessProtection)
NTSYSCALLAPI NTSTATUS NTAPI NtFlushVirtualMemory(_In_ HANDLE ProcessHandle, _Inout_ PVOID *BaseAddress, _Inout_ PSIZE_T RegionSize, _Out_ PIO_STATUS_BLOCK IoStatus)
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER MaximumSize
Definition: mmfuncs.h:366
_Must_inspect_result_ __kernel_entry NTSYSCALLAPI NTSTATUS NTAPI NtCreateSection(_Out_ PHANDLE SectionHandle, _In_ ACCESS_MASK DesiredAccess, _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes, _In_opt_ PLARGE_INTEGER MaximumSize, _In_ ULONG SectionPageProtection, _In_ ULONG AllocationAttributes, _In_opt_ HANDLE FileHandle)
NTSTATUS NTAPI NtResetWriteWatch(_In_ HANDLE ProcessHandle, _In_ PVOID BaseAddress, _In_ SIZE_T RegionSize)
NTSTATUS NTAPI NtMapUserPhysicalPages(_In_ PVOID VirtualAddresses, _In_ ULONG_PTR NumberOfPages, _Inout_ PULONG_PTR UserPfnArray)
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_opt_ HANDLE FileHandle
Definition: mmfuncs.h:370
NTSTATUS NTAPI NtAllocateUserPhysicalPages(_In_ HANDLE ProcessHandle, _Inout_ PULONG_PTR NumberOfPages, _Inout_ PULONG_PTR UserPfnArray)
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER _In_ ULONG SectionPageProtection
Definition: mmfuncs.h:367
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize _Pre_valid_ PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T _In_ ULONG _In_ ULONG Win32Protect
Definition: mmfuncs.h:416
NTSYSCALLAPI NTSTATUS NTAPI NtReadVirtualMemory(_In_ HANDLE ProcessHandle, _In_ PVOID BaseAddress, _Out_ PVOID Buffer, _In_ SIZE_T NumberOfBytesToRead, _Out_opt_ PSIZE_T NumberOfBytesRead)
_In_ HANDLE ProcessHandle
Definition: mmfuncs.h:407
NTSYSAPI NTSTATUS NTAPI ZwLockVirtualMemory(_In_ HANDLE ProcessHandle, _Inout_ PVOID *BaseAddress, _Inout_ PSIZE_T NumberOfBytesToLock, _In_ ULONG MapType)
NTSYSCALLAPI NTSTATUS NTAPI NtCreatePagingFile(_In_ PUNICODE_STRING FileName, _In_ PLARGE_INTEGER MinimumSize, _In_ PLARGE_INTEGER MaximumSize, _In_ ULONG Reserved)
Definition: pagefile.c:366
NTSYSCALLAPI NTSTATUS NTAPI NtMapViewOfSection(_In_ HANDLE SectionHandle, _In_ HANDLE ProcessHandle, _Outptr_result_bytebuffer_(*ViewSize) _Pre_valid_ PVOID *BaseAddress, _In_ ULONG_PTR ZeroBits, _In_ SIZE_T CommitSize, _Inout_opt_ PLARGE_INTEGER SectionOffset, _Inout_ PSIZE_T ViewSize, _In_range_(ViewShare, ViewUnmap) SECTION_INHERIT InheritDisposition, _In_ ULONG AllocationType, _In_ ULONG Win32Protect)
Definition: section.c:3271
NTSYSAPI NTSTATUS NTAPI ZwWriteVirtualMemory(_In_ HANDLE ProcessHandle, _In_ PVOID BaseAddress, _In_ PVOID Buffer, _In_ SIZE_T NumberOfBytesToWrite, _Out_opt_ PSIZE_T NumberOfBytesWritten)
NTSYSAPI NTSTATUS NTAPI ZwAreMappedFilesTheSame(_In_ PVOID File1MappedAsAnImage, _In_ PVOID File2MappedAsFile)
NTSYSCALLAPI NTSTATUS NTAPI NtFlushInstructionCache(_In_ HANDLE ProcessHandle, _In_ PVOID BaseAddress, _In_ SIZE_T NumberOfBytesToFlush)
NTSYSCALLAPI NTSTATUS NTAPI NtQueryVirtualMemory(_In_ HANDLE ProcessHandle, _In_ PVOID Address, _In_ MEMORY_INFORMATION_CLASS VirtualMemoryInformationClass, _Out_ PVOID VirtualMemoryInformation, _In_ SIZE_T Length, _Out_opt_ PSIZE_T ResultLength)
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize _Pre_valid_ PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T _In_ ULONG AllocationType
Definition: mmfuncs.h:414
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG AllocationAttributes
Definition: mmfuncs.h:368
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize _Pre_valid_ PVOID * BaseAddress
Definition: mmfuncs.h:408
NTSYSAPI NTSTATUS NTAPI ZwExtendSection(_In_ HANDLE SectionHandle, _In_ PLARGE_INTEGER NewMaximumSize)
NTSYSCALLAPI NTSTATUS NTAPI NtUnlockVirtualMemory(_In_ HANDLE ProcessHandle, _Inout_ PVOID *BaseAddress, _Inout_ PSIZE_T NumberOfBytesToUnlock, _In_ ULONG MapType)
NTSTATUS NTAPI MmUnmapViewOfSection(_In_ struct _EPROCESS *Process, _In_ PVOID BaseAddress)
NTSTATUS NTAPI NtMapUserPhysicalPagesScatter(_In_ PVOID *VirtualAddresses, _In_ ULONG_PTR NumberOfPages, _Inout_ PULONG_PTR UserPfnArray)
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize _Pre_valid_ PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T ViewSize
Definition: mmfuncs.h:412
NTSYSCALLAPI NTSTATUS NTAPI NtLockVirtualMemory(_In_ HANDLE ProcessHandle, _Inout_ PVOID *BaseAddress, _Inout_ PSIZE_T NumberOfBytesToLock, _In_ ULONG MapType)
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize _Pre_valid_ PVOID _In_ ULONG_PTR _In_ SIZE_T CommitSize
Definition: mmfuncs.h:410
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes
Definition: mmfuncs.h:365
__kernel_entry _Inout_ _Inout_ PSIZE_T RegionSize
Definition: mmfuncs.h:176
NTSYSCALLAPI NTSTATUS NTAPI NtQuerySection(_In_ HANDLE SectionHandle, _In_ SECTION_INFORMATION_CLASS SectionInformationClass, _Out_ PVOID SectionInformation, _In_ SIZE_T Length, _Out_ PSIZE_T ResultLength)
NTSYSCALLAPI NTSTATUS NTAPI NtOpenSection(_Out_ PHANDLE SectionHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes)
NTSTATUS NTAPI MmCreateSection(_Out_ PVOID *SectionObject, _In_ ACCESS_MASK DesiredAccess, _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes, _In_ PLARGE_INTEGER MaximumSize, _In_ ULONG SectionPageProtection, _In_ ULONG AllocationAttributes, _In_opt_ HANDLE FileHandle, _In_opt_ PFILE_OBJECT File)
NTSYSAPI NTSTATUS NTAPI ZwProtectVirtualMemory(_In_ HANDLE ProcessHandle, _In_ PVOID *BaseAddress, _In_ SIZE_T *NumberOfBytesToProtect, _In_ ULONG NewAccessProtection, _Out_ PULONG OldAccessProtection)
__kernel_entry _Inout_ _Inout_ PSIZE_T _In_ ULONG FreeType
Definition: mmfuncs.h:178
enum _SECTION_INFORMATION_CLASS SECTION_INFORMATION_CLASS
enum _MEMORY_INFORMATION_CLASS MEMORY_INFORMATION_CLASS
#define _Outptr_result_bytebuffer_(s)
Definition: no_sal2.h:288
#define _Out_opt_
Definition: no_sal2.h:214
#define _Inout_
Definition: no_sal2.h:162
#define _At_(t, a)
Definition: no_sal2.h:40
#define _Pre_valid_
Definition: no_sal2.h:518
#define _Outptr_result_buffer_(s)
Definition: no_sal2.h:286
#define _Inout_opt_
Definition: no_sal2.h:216
#define _Must_inspect_result_
Definition: no_sal2.h:62
#define _Pre_opt_valid_
Definition: no_sal2.h:520
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define _In_opt_
Definition: no_sal2.h:212
#define _In_range_(l, h)
Definition: no_sal2.h:368
ULONG ACCESS_MASK
Definition: nt_native.h:40
enum _SECTION_INHERIT SECTION_INHERIT
@ ViewUnmap
Definition: nt_native.h:1282
@ ViewShare
Definition: nt_native.h:1281
#define NTSYSCALLAPI
Definition: ntbasedef.h:208
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
NTSTATUS NTAPI NtFreeVirtualMemory(IN HANDLE ProcessHandle, IN PVOID *UBaseAddress, IN PSIZE_T URegionSize, IN ULONG FreeType)
Definition: virtual.c:5192
NTSTATUS NTAPI NtAllocateVirtualMemory(IN HANDLE ProcessHandle, IN OUT PVOID *UBaseAddress, IN ULONG_PTR ZeroBits, IN OUT PSIZE_T URegionSize, IN ULONG AllocationType, IN ULONG Protect)
Definition: virtual.c:4457
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
static WCHAR Address[46]
Definition: ping.c:68
#define __kernel_entry
Definition: specstrings.h:355
ULONG_PTR * PSIZE_T
Definition: typedefs.h:80
uint32_t * PULONG_PTR
Definition: typedefs.h:65
uint32_t * PULONG
Definition: typedefs.h:59
#define NTAPI
Definition: typedefs.h:36
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint32_t ULONG_PTR
Definition: typedefs.h:65
uint32_t ULONG
Definition: typedefs.h:59
static int Protect(const char **args)
Definition: vfdcmd.c:2132
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
Definition: wdfdevice.h:3782
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2664
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
* PFILE_OBJECT
Definition: iotypes.h:1998