Correction to 36917: EPROFILE/KPROFILE.Segment is pointer sized, not a pointer.
[reactos.git] / reactos / include / ndk / extypes.h
index b94c5ee..c44d6c9 100644 (file)
@@ -24,13 +24,16 @@ Author:
 //
 #include <umtypes.h>
 #include <cfg.h>
-#if defined(_MSC_VER) && !defined(NTOS_MODE_USER)
+#if !defined(NTOS_MODE_USER)
 #include <ntimage.h>
 #endif
 #include <cmtypes.h>
 #include <ketypes.h>
 #include <potypes.h>
 #include <lpctypes.h>
+#ifdef NTOS_MODE_USER
+#include <obtypes.h>
+#endif
 
 //
 // GCC compatibility
@@ -44,9 +47,8 @@ Author:
 #endif
 
 //
-// Atom and Language IDs
+// Rtl Atom
 //
-typedef USHORT LANGID, *PLANGID;
 typedef USHORT RTL_ATOM, *PRTL_ATOM;
 
 #ifndef NTOS_MODE_USER
@@ -63,7 +65,7 @@ extern POBJECT_TYPE NTSYSAPI ExTimerType;
 //
 // Exported NT Build Number
 //
-extern ULONG NTSYSAPI NtBuildNumber;
+extern ULONG NtBuildNumber;
 
 //
 // Invalid Handle Value Constant
@@ -92,9 +94,25 @@ extern ULONG NTSYSAPI NtBuildNumber;
 #define EVENT_QUERY_STATE                   0x0001
 
 //
-// Semaphore Object Acess Masks
+// Semaphore Object Access Masks
 //
 #define SEMAPHORE_QUERY_STATE               0x0001
+#else
+
+//
+// Mutant Object Access Masks
+//
+#define MUTANT_QUERY_STATE                  0x0001
+#define MUTANT_ALL_ACCESS                   (STANDARD_RIGHTS_REQUIRED | \
+                                             SYNCHRONIZE | \
+                                             MUTANT_QUERY_STATE)
+
+#define TIMER_QUERY_STATE                   0x0001
+#define TIMER_MODIFY_STATE                  0x0002
+#define TIMER_ALL_ACCESS                    (STANDARD_RIGHTS_REQUIRED | \
+                                             SYNCHRONIZE | \
+                                             TIMER_QUERY_STATE | \
+                                             TIMER_MODIFY_STATE)
 #endif
 
 //
@@ -128,6 +146,7 @@ extern ULONG NTSYSAPI NtBuildNumber;
 // Pushlock Wait Block Flags
 //
 #define EX_PUSH_LOCK_FLAGS_EXCLUSIVE        1
+#define EX_PUSH_LOCK_FLAGS_WAIT_V           1
 #define EX_PUSH_LOCK_FLAGS_WAIT             2
 
 //
@@ -169,7 +188,9 @@ typedef enum _HARDERROR_RESPONSE
     ResponseNo,
     ResponseOk,
     ResponseRetry,
-    ResponseYes
+    ResponseYes,
+    ResponseTryAgain,
+    ResponseContinue
 } HARDERROR_RESPONSE, *PHARDERROR_RESPONSE;
 
 //
@@ -251,7 +272,7 @@ typedef enum _SYSTEM_INFORMATION_CLASS
     SystemWatchDogTimerHandler,
     SystemWatchDogTimerInformation,
     SystemLogicalProcessorInformation,
-    SystemWo64SharedInformationObosolete,
+    SystemWow64SharedInformationObsolete,
     SystemRegisterFirmwareTableInformationHandler,
     SystemFirmwareTableInformation,
     SystemModuleInformationEx,
@@ -343,6 +364,17 @@ NTSTATUS
 
 #else
 
+//
+// Handle Enumeration Callback
+//
+struct _HANDLE_TABLE_ENTRY;
+typedef BOOLEAN
+(NTAPI *PEX_ENUM_HANDLE_CALLBACK)(
+    IN struct _HANDLE_TABLE_ENTRY *HandleTableEntry,
+    IN HANDLE Handle,
+    IN PVOID Context
+);
+
 //
 // Executive Work Queue Structures
 //
@@ -386,7 +418,7 @@ typedef struct _EX_RUNDOWN_REF_CACHE_AWARE
     PVOID PoolToFree;
     ULONG RunRefSize;
     ULONG Number;
-} EX_RUNDOWN_REF_CACHE_AWARE, *PEX_RUNDOWN_REF_CACHE_AWARE;
+} EX_RUNDOWN_REF_CACHE_AWARE;
 
 //
 // Executive Rundown Wait Block
@@ -447,11 +479,43 @@ typedef __ALIGNED(16) struct _EX_PUSH_LOCK_WAIT_BLOCK
 //
 typedef struct _CALLBACK_OBJECT
 {
-    ULONG Name;
+    ULONG Signature;
     KSPIN_LOCK Lock;
     LIST_ENTRY RegisteredCallbacks;
-    ULONG AllowMultipleCallbacks;
-} CALLBACK_OBJECT , *PCALLBACK_OBJECT;
+    BOOLEAN AllowMultipleCallbacks;
+    UCHAR reserved[3];
+} CALLBACK_OBJECT;
+
+//
+// Callback Handle
+//
+typedef struct _CALLBACK_REGISTRATION
+{
+    LIST_ENTRY Link;
+    PCALLBACK_OBJECT CallbackObject;
+    PCALLBACK_FUNCTION CallbackFunction;
+    PVOID CallbackContext;
+    ULONG Busy;
+    BOOLEAN UnregisterWaiting;
+} CALLBACK_REGISTRATION, *PCALLBACK_REGISTRATION;
+
+//
+// Internal Callback Object
+//
+typedef struct _EX_CALLBACK_ROUTINE_BLOCK
+{
+    EX_RUNDOWN_REF RundownProtect;
+    PEX_CALLBACK_FUNCTION Function;
+    PVOID Context;
+} EX_CALLBACK_ROUTINE_BLOCK, *PEX_CALLBACK_ROUTINE_BLOCK;
+
+//
+// Internal Callback Handle
+//
+typedef struct _EX_CALLBACK
+{
+    EX_FAST_REF RoutineBlock;
+} EX_CALLBACK, *PEX_CALLBACK;
 
 //
 // Profile Object
@@ -467,7 +531,7 @@ typedef struct _EPROFILE
     PKPROFILE ProfileObject;
     PVOID LockedBufferAddress;
     PMDL Mdl;
-    ULONG Segment;
+    ULONG_PTR Segment;
     KPROFILE_SOURCE ProfileSource;
     KAFFINITY Affinity;
 } EPROFILE, *PEPROFILE;
@@ -529,7 +593,7 @@ typedef struct _HANDLE_TABLE
     PEPROCESS QuotaProcess;
     PVOID UniqueProcessId;
 #if (NTDDI_VERSION >= NTDDI_WINXP)
-    EX_PUSH_LOCK HandleLock;
+    EX_PUSH_LOCK HandleTableLock[4];
     LIST_ENTRY HandleTableList;
     EX_PUSH_LOCK HandleContentionEvent;
 #else
@@ -650,9 +714,9 @@ typedef struct _SYSTEM_BASIC_INFORMATION
     ULONG LowestPhysicalPageNumber;
     ULONG HighestPhysicalPageNumber;
     ULONG AllocationGranularity;
-    ULONG MinimumUserModeAddress;
-    ULONG MaximumUserModeAddress;
-    KAFFINITY ActiveProcessorsAffinityMask;
+    ULONG_PTR MinimumUserModeAddress;
+    ULONG_PTR MaximumUserModeAddress;
+    ULONG_PTR ActiveProcessorsAffinityMask;
     CCHAR NumberOfProcessors;
 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
 
@@ -745,7 +809,7 @@ typedef struct _SYSTEM_PERFORMANCE_INFORMATION
     ULONG SystemCalls;
 } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
 
-// Class 3 
+// Class 3
 typedef struct _SYSTEM_TIMEOFDAY_INFORMATION
 {
     LARGE_INTEGER BootTime;
@@ -753,6 +817,10 @@ typedef struct _SYSTEM_TIMEOFDAY_INFORMATION
     LARGE_INTEGER TimeZoneBias;
     ULONG TimeZoneId;
     ULONG Reserved;
+#if (NTDDI_VERSION >= NTDDI_WIN2K)
+    ULONGLONG BootTimeBias;
+    ULONGLONG SleepTimeBias;
+#endif
 } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION;
 
 // Class 4
@@ -790,24 +858,24 @@ typedef struct _SYSTEM_PROCESS_INFORMATION
     HANDLE InheritedFromUniqueProcessId;
     ULONG HandleCount;
     ULONG SessionId;
-    ULONG UniqueProcessKey;
+    ULONG_PTR PageDirectoryBase;
 
     //
     // This part corresponds to VM_COUNTERS_EX.
     // NOTE: *NOT* THE SAME AS VM_COUNTERS!
     //
-    ULONG PeakVirtualSize;
+    SIZE_T PeakVirtualSize;
     ULONG VirtualSize;
-    ULONG PageFaultCount;
-    ULONG PeakWorkingSetSize;
-    ULONG WorkingSetSize;
-    ULONG QuotaPeakPagedPoolUsage;
-    ULONG QuotaPagedPoolUsage;
-    ULONG QuotaPeakNonPagedPoolUsage;
-    ULONG QuotaNonPagedPoolUsage;
-    ULONG PagefileUsage;
-    ULONG PeakPagefileUsage;
-    ULONG PrivatePageCount;
+    SIZE_T PageFaultCount;
+    SIZE_T PeakWorkingSetSize;
+    SIZE_T WorkingSetSize;
+    SIZE_T QuotaPeakPagedPoolUsage;
+    SIZE_T QuotaPagedPoolUsage;
+    SIZE_T QuotaPeakNonPagedPoolUsage;
+    SIZE_T QuotaNonPagedPoolUsage;
+    SIZE_T PagefileUsage;
+    SIZE_T PeakPagefileUsage;
+    SIZE_T PrivatePageCount;
 
     //
     // This part corresponds to IO_COUNTERS
@@ -1083,7 +1151,7 @@ typedef struct _SYSTEM_GDI_DRIVER_INFORMATION
 } SYSTEM_GDI_DRIVER_INFORMATION, *PSYSTEM_GDI_DRIVER_INFORMATION;
 
 // Class 27
-// Not an actually class, simply a PVOID to the ImageAddress 
+// Not an actually class, simply a PVOID to the ImageAddress
 
 // Class 28
 typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION
@@ -1269,7 +1337,7 @@ typedef struct _SYSTEM_VERIFIER_INFORMATION
 
 // FIXME: Class 52
 
-// Class 53 
+// Class 53
 typedef struct _SYSTEM_SESSION_PROCESS_INFORMATION
 {
     ULONG SessionId;
@@ -1367,5 +1435,20 @@ typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION
     ULONG TableBufferLength;
     UCHAR TableBuffer[1];
 } SYSTEM_FIRMWARE_TABLE_INFORMATION, *PSYSTEM_FIRMWARE_TABLE_INFORMATION;
+
+//
+// Class 81
+//
+typedef struct _SYSTEM_MEMORY_LIST_INFORMATION
+{
+   SIZE_T ZeroPageCount;
+   SIZE_T FreePageCount;
+   SIZE_T ModifiedPageCount;
+   SIZE_T ModifiedNoWritePageCount;
+   SIZE_T BadPageCount;
+   SIZE_T PageCountByPriority[8];
+   SIZE_T RepurposedPagesByPriority[8];
+} SYSTEM_MEMORY_LIST_INFORMATION, *PSYSTEM_MEMORY_LIST_INFORMATION;
+
 #endif
 #endif