ReactOS  r74662
mmtypes.h
Go to the documentation of this file.
1 /******************************************************************************
2  * Memory manager Types *
3  ******************************************************************************/
5 
6 #if (NTDDI_VERSION >= NTDDI_WIN2K)
7 typedef ULONG NODE_REQUIREMENT;
8 #define MM_ANY_NODE_OK 0x80000000
9 #endif
10 
11 #define MM_DONT_ZERO_ALLOCATION 0x00000001
12 #define MM_ALLOCATE_FROM_LOCAL_NODE_ONLY 0x00000002
13 #define MM_ALLOCATE_FULLY_REQUIRED 0x00000004
14 #define MM_ALLOCATE_NO_WAIT 0x00000008
15 #define MM_ALLOCATE_PREFER_CONTIGUOUS 0x00000010
16 #define MM_ALLOCATE_REQUIRE_CONTIGUOUS_CHUNKS 0x00000020
17 
18 #define MDL_MAPPED_TO_SYSTEM_VA 0x0001
19 #define MDL_PAGES_LOCKED 0x0002
20 #define MDL_SOURCE_IS_NONPAGED_POOL 0x0004
21 #define MDL_ALLOCATED_FIXED_SIZE 0x0008
22 #define MDL_PARTIAL 0x0010
23 #define MDL_PARTIAL_HAS_BEEN_MAPPED 0x0020
24 #define MDL_IO_PAGE_READ 0x0040
25 #define MDL_WRITE_OPERATION 0x0080
26 #define MDL_PARENT_MAPPED_SYSTEM_VA 0x0100
27 #define MDL_FREE_EXTRA_PTES 0x0200
28 #define MDL_DESCRIBES_AWE 0x0400
29 #define MDL_IO_SPACE 0x0800
30 #define MDL_NETWORK_HEADER 0x1000
31 #define MDL_MAPPING_CAN_FAIL 0x2000
32 #define MDL_ALLOCATED_MUST_SUCCEED 0x4000
33 #define MDL_INTERNAL 0x8000
34 
35 #define MDL_MAPPING_FLAGS (MDL_MAPPED_TO_SYSTEM_VA | \
36  MDL_PAGES_LOCKED | \
37  MDL_SOURCE_IS_NONPAGED_POOL | \
38  MDL_PARTIAL_HAS_BEEN_MAPPED | \
39  MDL_PARENT_MAPPED_SYSTEM_VA | \
40  MDL_SYSTEM_VA | \
41  MDL_IO_SPACE)
42 
43 #define FLUSH_MULTIPLE_MAXIMUM 32
44 
45 /* Section access rights */
46 #define SECTION_QUERY 0x0001
47 #define SECTION_MAP_WRITE 0x0002
48 #define SECTION_MAP_READ 0x0004
49 #define SECTION_MAP_EXECUTE 0x0008
50 #define SECTION_EXTEND_SIZE 0x0010
51 #define SECTION_MAP_EXECUTE_EXPLICIT 0x0020
52 
53 #define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY| \
54  SECTION_MAP_WRITE | \
55  SECTION_MAP_READ | \
56  SECTION_MAP_EXECUTE | \
57  SECTION_EXTEND_SIZE)
58 
59 #define SESSION_QUERY_ACCESS 0x0001
60 #define SESSION_MODIFY_ACCESS 0x0002
61 
62 #define SESSION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
63  SESSION_QUERY_ACCESS | \
64  SESSION_MODIFY_ACCESS)
65 
66 #define SEGMENT_ALL_ACCESS SECTION_ALL_ACCESS
67 
68 #define PAGE_NOACCESS 0x01
69 #define PAGE_READONLY 0x02
70 #define PAGE_READWRITE 0x04
71 #define PAGE_WRITECOPY 0x08
72 #define PAGE_EXECUTE 0x10
73 #define PAGE_EXECUTE_READ 0x20
74 #define PAGE_EXECUTE_READWRITE 0x40
75 #define PAGE_EXECUTE_WRITECOPY 0x80
76 #define PAGE_GUARD 0x100
77 #define PAGE_NOCACHE 0x200
78 #define PAGE_WRITECOMBINE 0x400
79 
80 #define MEM_COMMIT 0x1000
81 #define MEM_RESERVE 0x2000
82 #define MEM_DECOMMIT 0x4000
83 #define MEM_RELEASE 0x8000
84 #define MEM_FREE 0x10000
85 #define MEM_PRIVATE 0x20000
86 #define MEM_MAPPED 0x40000
87 #define MEM_RESET 0x80000
88 #define MEM_TOP_DOWN 0x100000
89 #define MEM_LARGE_PAGES 0x20000000
90 #define MEM_4MB_PAGES 0x80000000
91 
92 #define SEC_RESERVE 0x4000000
93 #define SEC_COMMIT 0x8000000
94 #define SEC_LARGE_PAGES 0x80000000
95 
96 /* Section map options */
97 typedef enum _SECTION_INHERIT {
98  ViewShare = 1,
101 
102 typedef ULONG PFN_COUNT;
105 
106 _Struct_size_bytes_(_Inexpressible_(sizeof(struct _MDL) +
107  (ByteOffset + ByteCount + PAGE_SIZE-1) / PAGE_SIZE * sizeof(PFN_NUMBER)))
108 typedef struct _MDL {
109  struct _MDL *Next;
110  CSHORT Size;
111  CSHORT MdlFlags;
112  struct _EPROCESS *Process;
113  PVOID MappedSystemVa;
114  PVOID StartVa;
117 } MDL, *PMDL;
118 #if (_MSC_VER >= 1600)
119 typedef _Readable_bytes_(_Inexpressible_(polymorphism)) MDL *PMDLX;
120 #else
121 typedef MDL *PMDLX;
122 #endif
123 
127 
128 typedef enum _MEMORY_CACHING_TYPE {
137 
138 typedef enum _MM_PAGE_PRIORITY {
143 
144 typedef enum _MM_SYSTEM_SIZE {
148 } MM_SYSTEMSIZE;
149 
150 #ifndef _NTSYSTEM_
153 #endif
155 
157 $if (_NTDDK_)
158 
159 typedef struct _PHYSICAL_MEMORY_RANGE {
163 
164 typedef NTSTATUS
166  _In_ PMDL DestinationMdl,
167  _In_ PMDL SourceMdl,
168  _In_ PVOID Context);
169 
170 typedef enum _MM_ROTATE_DIRECTION {
177 
179 $if (_NTIFS_)
180 typedef enum _MMFLUSH_TYPE {
181  MmFlushForDelete,
182  MmFlushForWrite
184 
185 typedef struct _READ_LIST {
188  LOGICAL IsImage;
191 
192 #if (NTDDI_VERSION >= NTDDI_WINXP)
193 
194 typedef union _MM_PREFETCH_FLAGS {
195  struct {
198  } Flags;
201 
202 #define MM_PREFETCH_FLAGS_MASK ((1 << (2*SYSTEM_PAGE_PRIORITY_BITS)) - 1)
203 
204 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
205 
206 #define HEAP_NO_SERIALIZE 0x00000001
207 #define HEAP_GROWABLE 0x00000002
208 #define HEAP_GENERATE_EXCEPTIONS 0x00000004
209 #define HEAP_ZERO_MEMORY 0x00000008
210 #define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010
211 #define HEAP_TAIL_CHECKING_ENABLED 0x00000020
212 #define HEAP_FREE_CHECKING_ENABLED 0x00000040
213 #define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080
214 
215 #define HEAP_CREATE_ALIGN_16 0x00010000
216 #define HEAP_CREATE_ENABLE_TRACING 0x00020000
217 #define HEAP_CREATE_ENABLE_EXECUTE 0x00040000
218 
219 #define HEAP_SETTABLE_USER_VALUE 0x00000100
220 #define HEAP_SETTABLE_USER_FLAG1 0x00000200
221 #define HEAP_SETTABLE_USER_FLAG2 0x00000400
222 #define HEAP_SETTABLE_USER_FLAG3 0x00000800
223 #define HEAP_SETTABLE_USER_FLAGS 0x00000E00
224 
225 #define HEAP_CLASS_0 0x00000000
226 #define HEAP_CLASS_1 0x00001000
227 #define HEAP_CLASS_2 0x00002000
228 #define HEAP_CLASS_3 0x00003000
229 #define HEAP_CLASS_4 0x00004000
230 #define HEAP_CLASS_5 0x00005000
231 #define HEAP_CLASS_6 0x00006000
232 #define HEAP_CLASS_7 0x00007000
233 #define HEAP_CLASS_8 0x00008000
234 #define HEAP_CLASS_MASK 0x0000F000
235 
236 #define HEAP_MAXIMUM_TAG 0x0FFF
237 #define HEAP_GLOBAL_TAG 0x0800
238 #define HEAP_PSEUDO_TAG_FLAG 0x8000
239 #define HEAP_TAG_SHIFT 18
240 #define HEAP_TAG_MASK (HEAP_MAXIMUM_TAG << HEAP_TAG_SHIFT)
241 
242 #define HEAP_CREATE_VALID_MASK (HEAP_NO_SERIALIZE | \
243  HEAP_GROWABLE | \
244  HEAP_GENERATE_EXCEPTIONS | \
245  HEAP_ZERO_MEMORY | \
246  HEAP_REALLOC_IN_PLACE_ONLY | \
247  HEAP_TAIL_CHECKING_ENABLED | \
248  HEAP_FREE_CHECKING_ENABLED | \
249  HEAP_DISABLE_COALESCE_ON_FREE | \
250  HEAP_CLASS_MASK | \
251  HEAP_CREATE_ALIGN_16 | \
252  HEAP_CREATE_ENABLE_TRACING | \
253  HEAP_CREATE_ENABLE_EXECUTE)
254 $endif (_NTIFS_)
255 
DWORD *typedef PVOID
Definition: winlogon.h:52
MMFLUSH_TYPE
Definition: mmtypes.h:183
#define __CREATE_NTOS_DATA_IMPORT_ALIAS(_Name)
$if(_WDMDDK_) typedef ULONG NODE_REQUIREMENT
Definition: ke.h:1
enum _MM_PAGE_PRIORITY MM_PAGE_PRIORITY
PHYSICAL_MEMORY_RANGE
Definition: mmtypes.h:162
struct _READ_LIST * PREAD_LIST
#define ANYSIZE_ARRAY
Definition: typedefs.h:46
ULONG PFN_COUNT
Definition: mmtypes.h:102
MDL * PMDLX
Definition: mmtypes.h:121
enum _SECTION_INHERIT SECTION_INHERIT
#define _NTIFS_
Definition: ifssupp.h:20
#define TRUE
Definition: numbers.c:17
#define SYSTEM_PAGE_PRIORITY_BITS
LONG_PTR SPFN_NUMBER
Definition: mmtypes.h:103
#define _WDMDDK_
Definition: wdm.template.h:26
#define _Readable_bytes_(size)
Definition: no_sal2.h:571
ULONG RepurposePriority
Definition: mmtypes.h:197
_SECTION_INHERIT
Definition: nt_native.h:1277
_Must_inspect_result_ _In_ PFILE_OBJECT _In_opt_ PLARGE_INTEGER ByteOffset
Definition: fltkernel.h:1251
uint32_t ULONG_PTR
Definition: typedefs.h:64
_MM_SYSTEM_SIZE
Definition: mmtypes.h:144
enum _MM_SYSTEM_SIZE MM_SYSTEMSIZE
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
enum _MM_ROTATE_DIRECTION * PMM_ROTATE_DIRECTION
union _MM_PREFETCH_FLAGS * PMM_PREFETCH_FLAGS
PFILE_OBJECT FileObject
Definition: mmtypes.h:186
ULONG_PTR PFN_NUMBER
Definition: mmtypes.h:104
NTSTATUS(NTAPI * PMM_ROTATE_COPY_CALLBACK_FUNCTION)(_In_ PMDL DestinationMdl, _In_ PMDL SourceMdl, _In_ PVOID Context)
Definition: mmtypes.h:165
_MEMORY_CACHING_TYPE_ORIG
Definition: mmtypes.h:124
union _MM_PREFETCH_FLAGS MM_PREFETCH_FLAGS
#define PAGE_SIZE
Definition: mmtypes.h:34
#define NTKERNELAPI
FILE_SEGMENT_ELEMENT List[ANYSIZE_ARRAY]
Definition: mmtypes.h:189
$endif(_WDMDDK_) $if(_NTDDK_) typedef struct _PHYSICAL_MEMORY_RANGE
Definition: mmtypes.h:156
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
Definition: iotypes.h:1060
_MM_ROTATE_DIRECTION
Definition: mmtypes.h:170
UINTN Size
Definition: acefiex.h:550
* PPHYSICAL_MEMORY_RANGE
Definition: mmtypes.h:162
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
Definition: mmfuncs.h:404
_Struct_size_bytes_(_Inexpressible_(sizeof(struct _MDL)+(ByteOffset+ByteCount+PAGE_SIZE-1)/PAGE_SIZE *sizeof(PFN_NUMBER))) typedef struct _MDL
Definition: mmtypes.h:106
* PFILE_OBJECT
Definition: iotypes.h:1949
ULONG_PTR * PPFN_NUMBER
Definition: mmtypes.h:104
char * PBOOLEAN
Definition: retypes.h:11
MDL
Definition: mmtypes.h:117
ULONG NumberOfEntries
Definition: mmtypes.h:187
IN SIZE_T NumberOfBytes
Definition: ndis.h:3914
struct _MM_PREFETCH_FLAGS::@3331 Flags
_MM_PAGE_PRIORITY
Definition: mmtypes.h:138
LOGICAL IsImage
Definition: mmtypes.h:188
#define _In_
Definition: no_sal2.h:204
enum _MM_ROTATE_DIRECTION MM_ROTATE_DIRECTION
LONG_PTR * PSPFN_NUMBER
Definition: mmtypes.h:103
struct _READ_LIST READ_LIST
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
enum _MEMORY_CACHING_TYPE_ORIG MEMORY_CACHING_TYPE_ORIG
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:219
#define FALSE
Definition: numbers.c:16
struct tagContext Context
Definition: acpixf.h:1013
unsigned int ULONG
Definition: retypes.h:1
#define NTSTATUS
Definition: env_spec_w32.h:77
NTKERNELAPI PVOID MmBadPointer
enum _MEMORY_CACHING_TYPE MEMORY_CACHING_TYPE
PBOOLEAN Mm64BitPhysicalAddress
Definition: mminit.c:25
short CSHORT
Definition: umtypes.h:115
_MEMORY_CACHING_TYPE
Definition: mmtypes.h:128
#define _NTDDK_
* PMDL
Definition: mmtypes.h:117