update for HEAD-2003091401
[reactos.git] / include / ntos / zwtypes.h
index 9bd7d74..2b0e877 100755 (executable)
@@ -1,13 +1,49 @@
-#ifndef __INCLUDE_DDK_ZWTYPES_H
-#define __INCLUDE_DDK_ZWTYPES_H
+#ifndef __INCLUDE_NTOS_ZWTYPES_H
+#define __INCLUDE_NTOS_ZWTYPES_H
 
 #ifndef __USE_W32API
 
+typedef struct _LDT_ENTRY {
+  WORD LimitLow;
+  WORD BaseLow;
+  union {
+    struct {
+      BYTE BaseMid;
+      BYTE Flags1;
+      BYTE Flags2;
+      BYTE BaseHi;
+    } Bytes;
+    struct {
+      DWORD BaseMid : 8;
+      DWORD Type : 5;
+      DWORD Dpl : 2;
+      DWORD Pres : 1;
+      DWORD LimitHi : 4;
+      DWORD Sys : 1;
+      DWORD Reserved_0 : 1;
+      DWORD Default_Big : 1;
+      DWORD Granularity : 1;
+      DWORD BaseHi : 8;
+    } Bits;
+  } HighWord;
+} LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY;
+
+typedef enum _THREAD_STATE {
+       StateInitialized,
+       StateReady,
+       StateRunning,
+       StateStandby,
+       StateTerminated,
+       StateWait,
+       StateTransition,
+       StateUnknown
+} THREAD_STATE;
+
 typedef enum _DEBUG_CONTROL_CODE
 {
   DebugGetTraceInformation = 1,
   DebugSetInternalBreakpoint,
-  DebugSetSpecialCalls,
+  DebugSetSpecialCall,
   DebugClearSpecialCalls,
   DebugQuerySpecialCalls,
   DebugDbgBreakPoint,
@@ -191,146 +227,132 @@ enum _SYSTEM_INFORMATION_CLASS
 } SYSTEM_INFORMATION_CLASS;
 
 // SystemBasicInformation (0)
+// Modified by Andrew Greenwood (15th July 2003) to match Win 32 API headers
 typedef
 struct _SYSTEM_BASIC_INFORMATION
 {
-       ULONG           Reserved;
-       ULONG           TimerResolution;
-       ULONG           PageSize;
+       ULONG           Unknown;
+       ULONG           MaximumIncrement;
+       ULONG           PhysicalPageSize;
        ULONG           NumberOfPhysicalPages;
-       ULONG           LowestPhysicalPageNumber;
-       ULONG           HighestPhysicalPageNumber;
+       ULONG           LowestPhysicalPage;
+       ULONG           HighestPhysicalPage;
        ULONG           AllocationGranularity;
-       ULONG           MinimumUserModeAddress;
-       ULONG           MaximumUserModeAddress;
-       KAFFINITY       ActiveProcessorsAffinityMask;
-       CCHAR           NumberOfProcessors;
+       ULONG           LowestUserAddress;
+       ULONG           HighestUserAddress;
+       KAFFINITY       ActiveProcessors;
+       CCHAR           NumberProcessors;
 } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
 
 // SystemProcessorInformation (1)
-typedef
-struct _SYSTEM_PROCESSOR_INFORMATION
-{
-       USHORT  ProcessorArchitecture;
-       USHORT  ProcessorLevel;
-       USHORT  ProcessorRevision;
-       USHORT  Reserved;
-       ULONG   ProcessorFeatureBits;
+// Modified by Andrew Greenwood (15th July 2003) to match Win 32 API headers
+typedef struct _SYSTEM_PROCESSOR_INFORMATION {
+       USHORT  ProcessorArchitecture;
+       USHORT  ProcessorLevel;
+       USHORT  ProcessorRevision;
+       USHORT  Unknown;
+       ULONG  FeatureBits;
 } SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION;
 
 // SystemPerformanceInfo (2)
-typedef
-struct _SYSTEM_PERFORMANCE_INFORMATION
-{
-       LARGE_INTEGER   IdleProcessorTime;
-       LARGE_INTEGER   IoReadTransferCount;
-       LARGE_INTEGER   IoWriteTransferCount;
-       LARGE_INTEGER   IoOtherTransferCount;
-       ULONG           IoReadOperationCount;
-       ULONG           IoWriteOperationCount;
-       ULONG           IoOtherOperationCount;
-       ULONG           AvailablePages;
-       ULONG           CommitedPages;
-       ULONG           CommitLimit;
-       ULONG           PeakCommitment;
-       ULONG           PageFaultCount;
-       ULONG           CopyOnWriteCount;
-       ULONG           TransitionCount;
-       ULONG           CacheTransitionCount;
-       ULONG           DemandZeroCount;
-       ULONG           PageReadCount;
-       ULONG           PageReadIoCount;
-       ULONG           CacheReadCount;
-       ULONG           CacheIoCount;
-       ULONG           DirtyPagesWriteCount;
-       ULONG           DirtyWriteIoCount;
-       ULONG           MappedPagesWriteCount;
-       ULONG           MappedWriteIoCount;
-       ULONG           PagedPoolPages;
-       ULONG           NonPagedPoolPages;
-       ULONG           Unknown6;
-       ULONG           Unknown7;
-       ULONG           Unknown8;
-       ULONG           Unknown9;
-       ULONG           MmTotalSystemFreePtes;
-       ULONG           MmSystemCodepage;
-       ULONG           MmTotalSystemDriverPages;
-       ULONG           MmTotalSystemCodePages;
-       ULONG           Unknown10;
-       ULONG           Unknown11;
-       ULONG           Unknown12;
-       ULONG           MmSystemCachePage;
-       ULONG           MmPagedPoolPage;
-       ULONG           MmSystemDriverPage;
-       ULONG           CcFastReadNoWait;
-       ULONG           CcFastReadWait;
-       ULONG           CcFastReadResourceMiss;
-       ULONG           CcFastReadNotPossible;
-       ULONG           CcFastMdlReadNoWait;
-       ULONG           CcFastMdlReadWait;
-       ULONG           CcFastMdlReadResourceMiss;
-       ULONG           CcFastMdlReadNotPossible;
-       ULONG           CcMapDataNoWait;
-       ULONG           CcMapDataWait;
-       ULONG           CcMapDataNoWaitMiss;
-       ULONG           CcMapDataWaitMiss;
-       ULONG           CcPinMappedDataCount;
-       ULONG           CcPinReadNoWait;
-       ULONG           CcPinReadWait;
-       ULONG           CcPinReadNoWaitMiss;
-       ULONG           CcPinReadWaitMiss;
-       ULONG           CcCopyReadNoWait;
-       ULONG           CcCopyReadWait;
-       ULONG           CcCopyReadNoWaitMiss;
-       ULONG           CcCopyReadWaitMiss;
-       ULONG           CcMdlReadNoWait;
-       ULONG           CcMdlReadWait;
-       ULONG           CcMdlReadNoWaitMiss;
-       ULONG           CcMdlReadWaitMiss;
-       ULONG           CcReadaheadIos;
-       ULONG           CcLazyWriteIos;
-       ULONG           CcLazyWritePages;
-       ULONG           CcDataFlushes;
-       ULONG           CcDataPages;
-       ULONG           ContextSwitches;
-       ULONG           Unknown13;
-       ULONG           Unknown14;
-       ULONG           SystemCalls;
-
-} SYSTEM_PERFORMANCE_INFO, *PSYSTEM_PERFORMANCE_INFO;
+// Modified by Andrew Greenwood (15th July 2003) to match Win 32 API headers
+typedef struct _SYSTEM_PERFORMANCE_INFORMATION {
+       LARGE_INTEGER  IdleTime;
+       LARGE_INTEGER  ReadTransferCount;
+       LARGE_INTEGER  WriteTransferCount;
+       LARGE_INTEGER  OtherTransferCount;
+       ULONG  ReadOperationCount;
+       ULONG  WriteOperationCount;
+       ULONG  OtherOperationCount;
+       ULONG  AvailablePages;
+       ULONG  TotalCommittedPages;
+       ULONG  TotalCommitLimit;
+       ULONG  PeakCommitment;
+       ULONG  PageFaults;
+       ULONG  WriteCopyFaults;
+       ULONG  TransitionFaults;
+       ULONG  CacheTransitionFaults;
+       ULONG  DemandZeroFaults;
+       ULONG  PagesRead;
+       ULONG  PageReadIos;
+       ULONG    CacheReads;
+       ULONG    CacheIos;
+       ULONG  PagefilePagesWritten;
+       ULONG  PagefilePageWriteIos;
+       ULONG  MappedFilePagesWritten;
+       ULONG  MappedFilePageWriteIos;
+       ULONG  PagedPoolUsage;
+       ULONG  NonPagedPoolUsage;
+       ULONG  PagedPoolAllocs;
+       ULONG  PagedPoolFrees;
+       ULONG  NonPagedPoolAllocs;
+       ULONG  NonPagedPoolFrees;
+       ULONG  TotalFreeSystemPtes;
+       ULONG  SystemCodePage;
+       ULONG  TotalSystemDriverPages;
+       ULONG  TotalSystemCodePages;
+       ULONG  SmallNonPagedLookasideListAllocateHits;
+       ULONG  SmallPagedLookasideListAllocateHits;
+       ULONG  Reserved3;
+       ULONG  MmSystemCachePage;
+       ULONG  PagedPoolPage;
+       ULONG  SystemDriverPage;
+       ULONG  FastReadNoWait;
+       ULONG  FastReadWait;
+       ULONG  FastReadResourceMiss;
+       ULONG  FastReadNotPossible;
+       ULONG  FastMdlReadNoWait;
+       ULONG  FastMdlReadWait;
+       ULONG  FastMdlReadResourceMiss;
+       ULONG  FastMdlReadNotPossible;
+       ULONG  MapDataNoWait;
+       ULONG  MapDataWait;
+       ULONG  MapDataNoWaitMiss;
+       ULONG  MapDataWaitMiss;
+       ULONG  PinMappedDataCount;
+       ULONG  PinReadNoWait;
+       ULONG  PinReadWait;
+       ULONG  PinReadNoWaitMiss;
+       ULONG  PinReadWaitMiss;
+       ULONG  CopyReadNoWait;
+       ULONG  CopyReadWait;
+       ULONG  CopyReadNoWaitMiss;
+       ULONG  CopyReadWaitMiss;
+       ULONG  MdlReadNoWait;
+       ULONG  MdlReadWait;
+       ULONG  MdlReadNoWaitMiss;
+       ULONG  MdlReadWaitMiss;
+       ULONG  ReadAheadIos;
+       ULONG  LazyWriteIos;
+       ULONG  LazyWritePages;
+       ULONG  DataFlushes;
+       ULONG  DataPages;
+       ULONG  ContextSwitches;
+       ULONG  FirstLevelTbFills;
+       ULONG  SecondLevelTbFills;
+       ULONG  SystemCalls;
+} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;
 
 // SystemModuleInformation (11)
-typedef
-struct _SYSTEM_MODULE_INFORMATION
-{
- ULONG Reserved[2];
- PVOID Base;
- SIZE_T Size;
- ULONG Flags;
- USHORT Index;
- USHORT Unknown;
- USHORT LoadCount;
- USHORT ModuleNameOffset;
- CHAR ImageName[256];
-#if 0
-       ULONG   Unknown1;
-       ULONG   Unknown2;
-       PVOID   BaseAddress;
-       ULONG   Size;
-       ULONG   Flags;
-       ULONG   EntryIndex;
-       USHORT  NameLength; /* Length of module name not including the path, this field contains valid value only for NTOSKRNL module*/
-       USHORT  PathLength; /* Length of 'directory path' part of modulename*/
-       CHAR    Name [256];
-#endif
-} SYSTEM_MODULE_INFORMATION, * PSYSTEM_MODULE_INFORMATION;
-
-typedef
-struct _SYSTEM_MODULES
-{
- SIZE_T Count;
- SYSTEM_MODULE_INFORMATION Modules[ANYSIZE_ARRAY];
-} SYSTEM_MODULES, *PSYSTEM_MODULES;
+typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY {
+       ULONG    Unknown1;
+       ULONG    Unknown2;
+       PVOID  Base;
+       ULONG  Size;
+       ULONG  Flags;
+       USHORT  Index;
+  /* Length of module name not including the path, this
+     field contains valid value only for NTOSKRNL module */
+       USHORT  NameLength;
+       USHORT  LoadCount;
+       USHORT  PathLength;
+       CHAR  ImageName[256];
+} SYSTEM_MODULE_INFORMATION_ENTRY, *PSYSTEM_MODULE_INFORMATION_ENTRY;
+
+typedef struct _SYSTEM_MODULE_INFORMATION {
+       ULONG  Count;
+  SYSTEM_MODULE_INFORMATION_ENTRY Module[1];
+} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
 
 // SystemHandleInformation (16)
 // (see ontypes.h)
@@ -458,7 +480,7 @@ struct _SYSTEM_SET_TIME_ADJUSTMENT
        ULONG   TimeAdjustment;
        BOOLEAN TimeSynchronization;
        
-} SYSTEM_TIME_ADJUSTMENT_INFO, *PSYSTEM_TIME_ADJUSTMENT_INFO;
+} SYSTEM_SET_TIME_ADJUSTMENT, *PSYSTEM_SET_TIME_ADJUSTMENT;
 
 // atom information
 
@@ -721,12 +743,6 @@ typedef struct _THREAD_BASIC_INFORMATION
   KPRIORITY BasePriority;
 } THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION;
 
-// object information
-
-typedef struct _OBJECT_NAME_INFORMATION
-{
-       UNICODE_STRING  Name;
-} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
 
 // file information
 
@@ -1090,7 +1106,7 @@ typedef enum _IO_COMPLETION_INFORMATION_CLASS {
 } IO_COMPLETION_INFORMATION_CLASS;
 
 typedef struct _IO_COMPLETION_BASIC_INFORMATION {
-   LONG SignalState;
+   LONG Depth;
 } IO_COMPLETION_BASIC_INFORMATION, *PIO_COMPLETION_BASIC_INFORMATION;
 
 #else /* __USE_W32API */
@@ -1225,21 +1241,24 @@ struct _SYSTEM_PATH_INFORMATION
 
 // SystemProcessInformation (5)
 
-typedef struct _SYSTEM_THREADS
-{
- TIME         KernelTime;
- TIME         UserTime;
- TIME         CreateTime;
- ULONG        WaitTime;
- PVOID        StartAddress;
- CLIENT_ID    ClientId;
- KPRIORITY    Priority;
- KPRIORITY    BasePriority;
- ULONG        ContextSwitchCount;
- ULONG State;
- KWAIT_REASON WaitReason;
+#ifndef __USE_W32API
+
+typedef struct _SYSTEM_THREADS {
+       LARGE_INTEGER  KernelTime;
+       LARGE_INTEGER  UserTime;
+       LARGE_INTEGER  CreateTime;
+       ULONG  WaitTime;
+       PVOID  StartAddress;
+       CLIENT_ID  ClientId;
+       KPRIORITY  Priority;
+       KPRIORITY  BasePriority;
+       ULONG  ContextSwitchCount;
+       THREAD_STATE  State;
+       KWAIT_REASON  WaitReason;
 } SYSTEM_THREADS, *PSYSTEM_THREADS;
 
+#endif /* __USE_W32API */
+
 typedef struct _SYSTEM_PROCESSES_NT4
 {
  SIZE_T         NextEntryDelta;
@@ -1277,9 +1296,13 @@ typedef struct _SYSTEM_PROCESSES_NT5
  SYSTEM_THREADS Threads[ANYSIZE_ARRAY];
 } SYSTEM_PROCESSES_NT5, *PSYSTEM_PROCESSES_NT5;
 
+#ifndef __USE_W32API
+
 /* Not sure. What version are we emulating? */
 typedef SYSTEM_PROCESSES_NT5 SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;
 
+#endif /* __USE_W32API */
+
 // SystemCallCountInformation (6)
 typedef
 struct _SYSTEM_SDT_INFORMATION
@@ -1538,11 +1561,6 @@ struct _SYSTEM_QUOTA_INFORMATION
 #define THREAD_WAIT_OBJECTS                    3
 //#define MAXIMUM_WAIT_OBJECTS                 64
 
-// key restore flags
-
-#define REG_WHOLE_HIVE_VOLATILE                        1
-#define REG_REFRESH_HIVE                       2
-
 // object type  access rights
 
 #define OBJECT_TYPE_CREATE             0x0001
@@ -1581,11 +1599,11 @@ typedef struct _OBJECT_TYPE_INFORMATION
 
 // directory information
 
-typedef struct _OBJDIR_INFORMATION {
+typedef struct _DIRECTORY_BASIC_INFORMATION
+{
        UNICODE_STRING ObjectName;
        UNICODE_STRING ObjectTypeName; // Directory, Device ...
-       UCHAR          Data[0];
-} OBJDIR_INFORMATION, *POBJDIR_INFORMATION;
+} DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION;
 
 
 /*
@@ -1652,4 +1670,105 @@ struct _LPC_PORT_BASIC_INFORMATION
 
 } LPC_PORT_BASIC_INFORMATION, * PLPC_PORT_BASIC_INFORMATION;
 
+typedef struct _KINTERRUPT
+{
+   ULONG Vector;
+   KAFFINITY ProcessorEnableMask;
+   PKSPIN_LOCK IrqLock;
+   BOOLEAN Shareable;
+   BOOLEAN FloatingSave;
+   PKSERVICE_ROUTINE ServiceRoutine;
+   PVOID ServiceContext;
+   LIST_ENTRY Entry;
+   KIRQL SynchLevel;
+} KINTERRUPT;
+
+#ifndef __USE_W32API
+
+typedef struct _KINTERRUPT *PKINTERRUPT;
+
+#endif /* __USE_W32API */
+
+NTSTATUS STDCALL
+ObRosCreateObject(OUT PHANDLE Handle,
+  IN ACCESS_MASK DesiredAccess,
+  IN POBJECT_ATTRIBUTES ObjectAttributes,
+  IN POBJECT_TYPE Type,
+  OUT PVOID *Object);
+
+/* BEGIN REACTOS ONLY */
+
+typedef enum _TRAVERSE_METHOD {
+  TraverseMethodPreorder,
+  TraverseMethodInorder,
+  TraverseMethodPostorder
+} TRAVERSE_METHOD;
+
+typedef LONG STDCALL_FUNC
+(*PKEY_COMPARATOR)(IN PVOID  Key1,
+  IN PVOID  Key2);
+
+typedef BOOLEAN STDCALL_FUNC
+(*PTRAVERSE_ROUTINE)(IN PVOID  Context,
+  IN PVOID  Key,
+  IN PVOID  Value);
+
+struct _BINARY_TREE_NODE;
+
+typedef struct _BINARY_TREE
+{
+  struct _BINARY_TREE_NODE  * RootNode;
+  PKEY_COMPARATOR  Compare;
+  BOOLEAN  UseNonPagedPool;
+  union {
+    NPAGED_LOOKASIDE_LIST  NonPaged;
+    PAGED_LOOKASIDE_LIST  Paged;
+  } List;
+  union {
+    KSPIN_LOCK  NonPaged;
+    FAST_MUTEX  Paged;
+  } Lock;
+} BINARY_TREE, *PBINARY_TREE;
+
+
+struct _SPLAY_TREE_NODE;
+
+typedef struct _SPLAY_TREE
+{
+  struct _SPLAY_TREE_NODE  * RootNode;
+  PKEY_COMPARATOR  Compare;
+  BOOLEAN  Weighted;
+  BOOLEAN  UseNonPagedPool;
+  union {
+    NPAGED_LOOKASIDE_LIST  NonPaged;
+    PAGED_LOOKASIDE_LIST  Paged;
+  } List;
+  union {
+    KSPIN_LOCK  NonPaged;
+    FAST_MUTEX  Paged;
+  } Lock;
+  PVOID  Reserved[4];
+} SPLAY_TREE, *PSPLAY_TREE;
+
+
+typedef struct _HASH_TABLE
+{
+  // Size of hash table in number of bits
+  ULONG  HashTableSize;
+
+  // Use non-paged pool memory?
+  BOOLEAN  UseNonPagedPool;
+
+  // Lock for this structure
+  union {
+    KSPIN_LOCK  NonPaged;
+    FAST_MUTEX  Paged;
+  } Lock;
+
+  // Pointer to array of hash buckets with splay trees
+  PSPLAY_TREE  HashTrees;
+} HASH_TABLE, *PHASH_TABLE;
+
+/* END REACTOS ONLY */
+
 #endif