[NDK]
[reactos.git] / reactos / include / ndk / mmtypes.h
index ec96ec3..25dfabc 100644 (file)
@@ -26,6 +26,10 @@ Author:
 #include <arch/mmtypes.h>
 #include <extypes.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 //
 // Page-Rounding Macros
 //
@@ -66,12 +70,12 @@ Author:
 //
 // Flags for ProcessExecutionOptions
 //
-#define MEM_EXECUTE_OPTION_DISABLE                          0x1 
+#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_IMAGE_DISPATCH_ENABLE            0x20
 #define MEM_EXECUTE_OPTION_VALID_FLAGS                      0x3F
 
 #ifndef NTOS_MODE_USER
@@ -169,7 +173,8 @@ typedef enum _MEMORY_INFORMATION_CLASS
     MemoryBasicInformation,
     MemoryWorkingSetList,
     MemorySectionName,
-    MemoryBasicVlmInformation
+    MemoryBasicVlmInformation,
+    MemoryWorkingSetExList
 } MEMORY_INFORMATION_CLASS;
 
 //
@@ -343,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
@@ -818,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
@@ -833,7 +857,7 @@ typedef struct _MMWSLE
     union
     {
         PVOID VirtualAddress;
-        ULONG Long;
+        ULONG_PTR Long;
         MMWSLENTRY e1;
     } u1;
 } MMWSLE, *PMMWSLE;
@@ -989,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
@@ -1007,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