#include <arch/mmtypes.h>
#include <extypes.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
//
// Page-Rounding Macros
//
//
// 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
MemoryBasicInformation,
MemoryWorkingSetList,
MemorySectionName,
- MemoryBasicVlmInformation
+ MemoryBasicVlmInformation,
+ MemoryWorkingSetExList
} MEMORY_INFORMATION_CLASS;
//
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
//
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
union
{
PVOID VirtualAddress;
- ULONG Long;
+ ULONG_PTR Long;
MMWSLENTRY e1;
} u1;
} MMWSLE, *PMMWSLE;
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
//
extern POBJECT_TYPE NTSYSAPI MmSectionObjectType;
+#ifdef __cplusplus
+}; // extern "C"
+#endif
+
#endif // !NTOS_MODE_USER
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
#endif // _MMTYPES_H