[NDK]
[reactos.git] / reactos / include / ndk / mmtypes.h
index 32160b9..25dfabc 100644 (file)
@@ -26,6 +26,10 @@ Author:
 #include <arch/mmtypes.h>
 #include <extypes.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 //
 // Page-Rounding Macros
 //
@@ -63,8 +67,18 @@ Author:
 #define MAP_PROCESS                                         1
 #define MAP_SYSTEM                                          2
 
-#ifndef NTOS_MODE_USER
+//
+// Flags for ProcessExecutionOptions
+//
+#define MEM_EXECUTE_OPTION_DISABLE                          0x1
+#define MEM_EXECUTE_OPTION_ENABLE                           0x2
+#define MEM_EXECUTE_OPTION_DISABLE_THUNK_EMULATION          0x4
+#define MEM_EXECUTE_OPTION_PERMANENT                        0x8
+#define MEM_EXECUTE_OPTION_EXECUTE_DISPATCH_ENABLE          0x10
+#define MEM_EXECUTE_OPTION_IMAGE_DISPATCH_ENABLE            0x20
+#define MEM_EXECUTE_OPTION_VALID_FLAGS                      0x3F
 
+#ifndef NTOS_MODE_USER
 //
 // Virtual Memory Flags
 //
@@ -159,7 +173,8 @@ typedef enum _MEMORY_INFORMATION_CLASS
     MemoryBasicInformation,
     MemoryWorkingSetList,
     MemorySectionName,
-    MemoryBasicVlmInformation
+    MemoryBasicVlmInformation,
+    MemoryWorkingSetExList
 } MEMORY_INFORMATION_CLASS;
 
 //
@@ -333,11 +348,30 @@ typedef struct _SECTION_IMAGE_INFORMATION
     USHORT ImageCharacteristics;
     USHORT DllCharacteristics;
     USHORT Machine;
-    UCHAR ImageContainsCode;
-    UCHAR Spare1;
+    BOOLEAN ImageContainsCode;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    union
+    {
+        struct
+        {
+            UCHAR ComPlusNativeReady:1;
+            UCHAR ComPlusILOnly:1;
+            UCHAR ImageDynamicallyRelocated:1;
+            UCHAR ImageMappedFlat:1;
+            UCHAR Reserved:4;
+        };
+        UCHAR ImageFlags;
+    };
+#else
+    BOOLEAN Spare1;
+#endif
     ULONG LoaderFlags;
     ULONG ImageFileSize;
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)
+    ULONG CheckSum;
+#else
     ULONG Reserved[1];
+#endif
 } SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION;
 
 #ifndef NTOS_MODE_USER
@@ -406,6 +440,21 @@ typedef struct _SEGMENT
     MMPTE ThePtes[1];
 } SEGMENT, *PSEGMENT;
 
+typedef struct _MAPPED_FILE_SEGMENT
+{
+    struct _CONTROL_AREA *ControlArea;
+    ULONG TotalNumberOfPtes;
+    ULONG NonExtendedPtes;
+    ULONG Spare0;
+    UINT64 SizeOfSegment;
+    MMPTE SegmentPteTemplate;
+    SIZE_T NumberOfCommittedPages;
+    PMMEXTEND_INFO ExtendInfo;
+    SEGMENT_FLAGS SegmentFlags;
+    PVOID BasedAddress;
+    struct _MSUBSECTION *LastSubsectionHint;
+} MAPPED_FILE_SEGMENT, *PMAPPED_FILE_SEGMENT;
+
 //
 // Event Counter Structure
 //
@@ -793,14 +842,14 @@ typedef struct _SECTION
 //
 typedef struct _MMWSLENTRY
 {
-    ULONG Valid:1;
-    ULONG LockedInWs:1;
-    ULONG LockedInMemory:1;
-    ULONG Protection:5;
-    ULONG Hashed:1;
-    ULONG Direct:1;
-    ULONG Age:2;
-    ULONG VirtualPageNumber:20;
+    ULONG_PTR Valid:1;
+    ULONG_PTR LockedInWs:1;
+    ULONG_PTR LockedInMemory:1;
+    ULONG_PTR Protection:5;
+    ULONG_PTR Hashed:1;
+    ULONG_PTR Direct:1;
+    ULONG_PTR Age:2;
+    ULONG_PTR VirtualPageNumber: MM_PAGE_FRAME_NUMBER_SIZE;
 } MMWSLENTRY, *PMMWSLENTRY;
 
 typedef struct _MMWSLE
@@ -808,7 +857,7 @@ typedef struct _MMWSLE
     union
     {
         PVOID VirtualAddress;
-        ULONG Long;
+        ULONG_PTR Long;
         MMWSLENTRY e1;
     } u1;
 } MMWSLE, *PMMWSLE;
@@ -964,6 +1013,10 @@ typedef struct _DRIVER_SPECIFIED_VERIFIER_THUNKS
     ULONG NumberOfThunks;
 } DRIVER_SPECIFIED_VERIFIER_THUNKS, *PDRIVER_SPECIFIED_VERIFIER_THUNKS;
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 //
 // Default heap size values.  For user mode, these values are copied to a new
 // process's PEB by the kernel in MmCreatePeb.  In kernel mode, RtlCreateHeap
@@ -982,6 +1035,14 @@ extern SIZE_T MmHeapDeCommitFreeBlockThreshold;
 //
 extern POBJECT_TYPE NTSYSAPI MmSectionObjectType;
 
+#ifdef __cplusplus
+}; // extern "C"
+#endif
+
 #endif // !NTOS_MODE_USER
 
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
 #endif // _MMTYPES_H