1 /******************************************************************************
2 * Memory manager Types *
3 ******************************************************************************/
5 #if (NTDDI_VERSION >= NTDDI_WIN2K)
6 typedef ULONG NODE_REQUIREMENT
;
7 #define MM_ANY_NODE_OK 0x80000000
10 #define MM_DONT_ZERO_ALLOCATION 0x00000001
11 #define MM_ALLOCATE_FROM_LOCAL_NODE_ONLY 0x00000002
12 #define MM_ALLOCATE_FULLY_REQUIRED 0x00000004
13 #define MM_ALLOCATE_NO_WAIT 0x00000008
14 #define MM_ALLOCATE_PREFER_CONTIGUOUS 0x00000010
15 #define MM_ALLOCATE_REQUIRE_CONTIGUOUS_CHUNKS 0x00000020
17 #define MDL_MAPPED_TO_SYSTEM_VA 0x0001
18 #define MDL_PAGES_LOCKED 0x0002
19 #define MDL_SOURCE_IS_NONPAGED_POOL 0x0004
20 #define MDL_ALLOCATED_FIXED_SIZE 0x0008
21 #define MDL_PARTIAL 0x0010
22 #define MDL_PARTIAL_HAS_BEEN_MAPPED 0x0020
23 #define MDL_IO_PAGE_READ 0x0040
24 #define MDL_WRITE_OPERATION 0x0080
25 #define MDL_PARENT_MAPPED_SYSTEM_VA 0x0100
26 #define MDL_FREE_EXTRA_PTES 0x0200
27 #define MDL_DESCRIBES_AWE 0x0400
28 #define MDL_IO_SPACE 0x0800
29 #define MDL_NETWORK_HEADER 0x1000
30 #define MDL_MAPPING_CAN_FAIL 0x2000
31 #define MDL_ALLOCATED_MUST_SUCCEED 0x4000
32 #define MDL_INTERNAL 0x8000
34 #define MDL_MAPPING_FLAGS ( \
35 MDL_MAPPED_TO_SYSTEM_VA | \
37 MDL_SOURCE_IS_NONPAGED_POOL | \
38 MDL_PARTIAL_HAS_BEEN_MAPPED | \
39 MDL_PARENT_MAPPED_SYSTEM_VA | \
43 #define FLUSH_MULTIPLE_MAXIMUM 32
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
53 #define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY|\
56 SECTION_MAP_EXECUTE | \
59 #define SESSION_QUERY_ACCESS 0x0001
60 #define SESSION_MODIFY_ACCESS 0x0002
62 #define SESSION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
63 SESSION_QUERY_ACCESS | \
64 SESSION_MODIFY_ACCESS)
66 #define SEGMENT_ALL_ACCESS SECTION_ALL_ACCESS
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
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
92 #define SEC_RESERVE 0x4000000
93 #define SEC_COMMIT 0x8000000
94 #define SEC_LARGE_PAGES 0x80000000
96 /* Section map options */
97 typedef enum _SECTION_INHERIT
{
102 typedef ULONG PFN_COUNT
;
103 typedef LONG_PTR SPFN_NUMBER
, *PSPFN_NUMBER
;
104 typedef ULONG_PTR PFN_NUMBER
, *PPFN_NUMBER
;
106 typedef struct _MDL
{
110 struct _EPROCESS
*Process
;
111 PVOID MappedSystemVa
;
118 typedef enum _MEMORY_CACHING_TYPE_ORIG
{
119 MmFrameBufferCached
= 2
120 } MEMORY_CACHING_TYPE_ORIG
;
122 typedef enum _MEMORY_CACHING_TYPE
{
125 MmWriteCombined
= MmFrameBufferCached
,
126 MmHardwareCoherentCached
,
127 MmNonCachedUnordered
,
130 } MEMORY_CACHING_TYPE
;
132 typedef enum _MM_PAGE_PRIORITY
{
134 NormalPagePriority
= 16,
135 HighPagePriority
= 32
138 typedef enum _MM_SYSTEM_SIZE
{