X-Git-Url: http://git.jankratochvil.net/?p=reactos.git;a=blobdiff_plain;f=include%2Fntos%2Fzwtypes.h;h=2b0e877ecf2619c31a7a5cd74665d8e719360762;hp=9bd7d743a1fcf8c46277c68142b60ae59ad9804d;hb=HEAD;hpb=7c0db166f81fbe8c8b913d7f26048e337d383605 diff --git a/include/ntos/zwtypes.h b/include/ntos/zwtypes.h index 9bd7d74..2b0e877 100755 --- a/include/ntos/zwtypes.h +++ b/include/ntos/zwtypes.h @@ -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