[NDK]
[reactos.git] / reactos / include / ndk / mmtypes.h
index 1c1f440..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;
 
 //
@@ -317,20 +332,46 @@ typedef struct _SECTION_IMAGE_INFORMATION
 {
     PVOID TransferAddress;
     ULONG ZeroBits;
-    ULONG MaximumStackSize;
-    ULONG CommittedStackSize;
+    SIZE_T MaximumStackSize;
+    SIZE_T CommittedStackSize;
     ULONG SubSystemType;
-    USHORT SubSystemMinorVersion;
-    USHORT SubSystemMajorVersion;
+    union
+    {
+        struct
+        {
+            USHORT SubSystemMinorVersion;
+            USHORT SubSystemMajorVersion;
+        };
+        ULONG SubSystemVersion;
+    };
     ULONG GpValue;
     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
@@ -399,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
 //
@@ -638,8 +694,8 @@ typedef struct _MM_AVL_TABLE
 //
 typedef struct _MMADDRESS_LIST
 {
-    ULONG StartVpn;
-    ULONG EndVpn;
+    ULONG_PTR StartVpn;
+    ULONG_PTR EndVpn;
 } MMADDRESS_LIST, *PMMADDRESS_LIST;
 
 //
@@ -647,13 +703,17 @@ typedef struct _MMADDRESS_LIST
 //
 typedef struct _MMVAD_FLAGS
 {
-    ULONG CommitCharge:19;
-    ULONG NoChange:1;
-    ULONG VadType:3;
-    ULONG MemCommit:1;
-    ULONG Protection:5;
-    ULONG Spare:2;
-    ULONG PrivateMemory:1;
+#ifdef _WIN64
+    ULONG_PTR CommitCharge:51;
+#else
+    ULONG_PTR CommitCharge:19;
+#endif
+    ULONG_PTR NoChange:1;
+    ULONG_PTR VadType:3;
+    ULONG_PTR MemCommit:1;
+    ULONG_PTR Protection:5;
+    ULONG_PTR Spare:2;
+    ULONG_PTR PrivateMemory:1;
 } MMVAD_FLAGS, *PMMVAD_FLAGS;
 
 //
@@ -684,11 +744,11 @@ typedef struct _MMVAD
     } u1;
     struct _MMVAD *LeftChild;
     struct _MMVAD *RightChild;
-    ULONG StartingVpn;
-    ULONG EndingVpn;
+    ULONG_PTR StartingVpn;
+    ULONG_PTR EndingVpn;
     union
     {
-        ULONG LongFlags;
+        ULONG_PTR LongFlags;
         MMVAD_FLAGS VadFlags;
     } u;
     PCONTROL_AREA ControlArea;
@@ -713,11 +773,11 @@ typedef struct _MMVAD_LONG
     } u1;
     PMMVAD LeftChild;
     PMMVAD RightChild;
-    ULONG StartingVpn;
-    ULONG EndingVpn;
+    ULONG_PTR StartingVpn;
+    ULONG_PTR EndingVpn;
     union
     {
-        ULONG LongFlags;
+        ULONG_PTR LongFlags;
         MMVAD_FLAGS VadFlags;
     } u;
     PCONTROL_AREA ControlArea;
@@ -752,11 +812,11 @@ typedef struct _MMVAD_SHORT
     } u1;
     PMMVAD LeftChild;
     PMMVAD RightChild;
-    ULONG StartingVpn;
-    ULONG EndingVpn;
+    ULONG_PTR StartingVpn;
+    ULONG_PTR EndingVpn;
     union
     {
-        ULONG LongFlags;
+        ULONG_PTR LongFlags;
         MMVAD_FLAGS VadFlags;
     } u;
 } MMVAD_SHORT, *PMMVAD_SHORT;
@@ -782,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
@@ -797,7 +857,7 @@ typedef struct _MMWSLE
     union
     {
         PVOID VirtualAddress;
-        ULONG Long;
+        ULONG_PTR Long;
         MMWSLENTRY e1;
     } u1;
 } MMWSLE, *PMMWSLE;
@@ -953,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
@@ -969,8 +1033,16 @@ extern SIZE_T MmHeapDeCommitFreeBlockThreshold;
 //
 // Section Object Type
 //
-extern POBJECT_TYPE MmSectionObjectType;
+extern POBJECT_TYPE NTSYSAPI MmSectionObjectType;
+
+#ifdef __cplusplus
+}; // extern "C"
+#endif
 
 #endif // !NTOS_MODE_USER
 
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
 #endif // _MMTYPES_H