-#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,
} 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)
ULONG TimeAdjustment;
BOOLEAN TimeSynchronization;
-} SYSTEM_TIME_ADJUSTMENT_INFO, *PSYSTEM_TIME_ADJUSTMENT_INFO;
+} SYSTEM_SET_TIME_ADJUSTMENT, *PSYSTEM_SET_TIME_ADJUSTMENT;
// atom 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
} 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 */
// 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;
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
#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
// 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;
/*
} 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