From c6e139c5019b5e8c727955d1f8481fb2a8291b85 Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Sat, 25 Jun 2005 18:08:47 +0000 Subject: [PATCH] Add many more structures to NDK which were incorrectly in the w32api IFS svn path=/trunk/; revision=16269 --- reactos/include/ndk/extypes.h | 34 ++++++ reactos/include/ndk/ketypes.h | 17 ++- reactos/include/ndk/mmtypes.h | 90 +++++++++++++++ reactos/include/ndk/pstypes.h | 39 ++++++- reactos/include/ndk/setypes.h | 6 + reactos/w32api/include/ddk/ntifs.h | 180 ----------------------------- 6 files changed, 182 insertions(+), 184 deletions(-) diff --git a/reactos/include/ndk/extypes.h b/reactos/include/ndk/extypes.h index 478f28a5382..7c32140fb56 100644 --- a/reactos/include/ndk/extypes.h +++ b/reactos/include/ndk/extypes.h @@ -19,7 +19,11 @@ extern NTOSAPI POBJECT_TYPE ExMutantObjectType; extern NTOSAPI POBJECT_TYPE ExTimerType; /* CONSTANTS *****************************************************************/ + +/* FIXME: Win32k uses windows.h! */ +#ifndef __WIN32K__ #define INVALID_HANDLE_VALUE (HANDLE)-1 +#endif /* Callback Object Access Rights */ #define CALLBACK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x0001) @@ -31,6 +35,11 @@ extern NTOSAPI POBJECT_TYPE ExTimerType; /* TYPES *********************************************************************/ +/* You'll need the IFS for this, so use an equivalent version */ +#ifndef _NTIFS_ +typedef PVOID EX_RUNDOWN_REF; +#endif + /* You'll need the IFS for these, so let's not force everyone to have it */ #ifdef _NTIFS_ typedef struct _EX_QUEUE_WORKER_INFO @@ -52,6 +61,31 @@ typedef struct _EX_WORK_QUEUE } EX_WORK_QUEUE, *PEX_WORK_QUEUE; #endif +typedef struct _EX_FAST_REF +{ + union + { + PVOID Object; + ULONG RefCnt:3; + ULONG Value; + }; +} EX_FAST_REF, *PEX_FAST_REF; + +typedef struct _EX_PUSH_LOCK +{ + union + { + struct + { + ULONG Waiting:1; + ULONG Exclusive:1; + ULONG Shared:30; + }; + ULONG Value; + PVOID Ptr; + }; +} EX_PUSH_LOCK, *PEX_PUSH_LOCK; + typedef struct _HANDLE_TABLE_ENTRY_INFO { ULONG AuditMask; diff --git a/reactos/include/ndk/ketypes.h b/reactos/include/ndk/ketypes.h index 1603e71bd32..8f747326fd4 100644 --- a/reactos/include/ndk/ketypes.h +++ b/reactos/include/ndk/ketypes.h @@ -63,6 +63,18 @@ typedef struct _KDPC_DATA ULONG DpcCount; } KDPC_DATA, *PKDPC_DATA; +/* We don't want to force NTIFS usage only for a single structure */ +#ifndef _NTIFS_ +typedef struct _KAPC_STATE +{ + LIST_ENTRY ApcListHead[2]; + PKPROCESS Process; + BOOLEAN KernelApcInProgress; + BOOLEAN KernelApcPending; + BOOLEAN UserApcPending; +} KAPC_STATE, *PKAPC_STATE, *RESTRICTED_POINTER PRKAPC_STATE; +#endif + /* FIXME: Most of these should go to i386 directory */ typedef struct _FNSAVE_FORMAT { @@ -153,6 +165,8 @@ typedef struct _KTRAP_FRAME USHORT Reserved9; } KTRAP_FRAME, *PKTRAP_FRAME; +/* FIXME: Win32k uses windows.h! */ +#ifndef __WIN32K__ typedef struct _LDT_ENTRY { WORD LimitLow; WORD BaseLow; @@ -177,6 +191,7 @@ typedef struct _LDT_ENTRY { } Bits; } HighWord; } LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY; +#endif typedef struct _KGDTENTRY { @@ -661,7 +676,7 @@ typedef struct _KTHREAD UCHAR NpxIrql; /* DA */ UCHAR Pad[1]; /* DB */ PVOID ServiceTable; /* DC */ - PKQUEUE Queue; /* E0 */ + struct _KQUEUE *Queue; /* E0 */ KSPIN_LOCK ApcQueueLock; /* E4 */ KTIMER Timer; /* E8 */ LIST_ENTRY QueueListEntry; /* 110 */ diff --git a/reactos/include/ndk/mmtypes.h b/reactos/include/ndk/mmtypes.h index 14475bbfcf7..add7d11441e 100644 --- a/reactos/include/ndk/mmtypes.h +++ b/reactos/include/ndk/mmtypes.h @@ -30,6 +30,17 @@ typedef enum _PP_NPAGED_LOOKASIDE_NUMBER /* TYPES *********************************************************************/ +/* FIXME: Forced to do this for now, because of EPROCESS, will go away before 0.3.0 */ +typedef struct _MADDRESS_SPACE +{ + PVOID MemoryAreaRoot; + FAST_MUTEX Lock; + PVOID LowestAddress; + struct _EPROCESS* Process; + PUSHORT PageTableRefCountTable; + ULONG PageTableRefCountTableSize; +} MADDRESS_SPACE, *PMADDRESS_SPACE; + typedef struct _PP_LOOKASIDE_LIST { struct _GENERAL_LOOKASIDE *P; @@ -68,4 +79,83 @@ typedef struct _MM_AVL_TABLE PVOID NodeFreeHint; } MM_AVL_TABLE, *PMM_AVL_TABLE; +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:14; +} MMWSLENTRY, *PMMWSLENTRY; + +typedef struct _MMWSLE +{ + union + { + PVOID VirtualAddress; + ULONG Long; + MMWSLENTRY e1; + }; +} MMWSLE, *PMMWSLE; + +typedef struct _MMWSLE_HASH +{ + PVOID Key; + ULONG Index; +} MMWSLE_HASH, *PMMWSLE_HASH; + +typedef struct _MMWSL +{ + ULONG FirstFree; + ULONG FirstDynamic; + ULONG LastEntry; + ULONG NextSlot; + PMMWSLE Wsle; + ULONG LastInitializedWsle; + ULONG NonDirectcout; + PMMWSLE_HASH HashTable; + ULONG HashTableSize; + ULONG NumberOfCommittedPageTables; + PVOID HashTableStart; + PVOID HighestPermittedHashAddress; + ULONG NumberOfImageWaiters; + ULONG VadBitMapHint; + USHORT UsedPageTableEntries[768]; + ULONG CommittedPageTables[24]; +} MMWSL, *PMMWSL; + +typedef struct _MMSUPPORT_FLAGS +{ + ULONG SessionSpace:1; + ULONG BeingTrimmed:1; + ULONG SessionLeader:1; + ULONG TrimHard:1; + ULONG WorkingSetHard:1; + ULONG AddressSpaceBeingDeleted :1; + ULONG Available:10; + ULONG AllowWorkingSetAdjustment:8; + ULONG MemoryPriority:8; +} MMSUPPORT_FLAGS, *PMMSUPPORT_FLAGS; + +typedef struct _MMSUPPORT +{ + LARGE_INTEGER LastTrimTime; + MMSUPPORT_FLAGS Flags; + ULONG PageFaultCount; + ULONG PeakWorkingSetSize; + ULONG WorkingSetSize; + ULONG MinimumWorkingSetSize; + ULONG MaximumWorkingSetSize; + PMMWSL MmWorkingSetList; + LIST_ENTRY WorkingSetExpansionLinks; + ULONG Claim; + ULONG NextEstimationSlot; + ULONG NextAgingSlot; + ULONG EstimatedAvailable; + ULONG GrowthSinceLastEstimate; +} MMSUPPORT, *PMMSUPPORT; + #endif diff --git a/reactos/include/ndk/pstypes.h b/reactos/include/ndk/pstypes.h index bac736472c4..28e5f3c77b4 100644 --- a/reactos/include/ndk/pstypes.h +++ b/reactos/include/ndk/pstypes.h @@ -95,8 +95,6 @@ typedef NTSTATUS /* TYPES *********************************************************************/ struct _ETHREAD; -typedef struct _W32PROCESS *PW32PROCESS; -typedef struct _W32THREAD *PW32THREAD; typedef struct _CURDIR { @@ -261,7 +259,42 @@ typedef struct _TEB #ifndef NTOS_MODE_USER #include "mmtypes.h" -#include /* FIXME: Forced to do this for now */ +#include "extypes.h" +#include "setypes.h" + +typedef struct _EPROCESS_QUOTA_ENTRY +{ + ULONG Usage; + ULONG Limit; + ULONG Peak; + ULONG Return; +} EPROCESS_QUOTA_ENTRY, *PEPROCESS_QUOTA_ENTRY; + +typedef struct _EPROCESS_QUOTA_BLOCK +{ + EPROCESS_QUOTA_ENTRY QuotaEntry[3]; + LIST_ENTRY QuotaList; + ULONG ReferenceCount; + ULONG ProcessCount; +} EPROCESS_QUOTA_BLOCK, *PEPROCESS_QUOTA_BLOCK; + +typedef struct _PAGEFAULT_HISTORY +{ + ULONG CurrentIndex; + ULONG MapIndex; + KSPIN_LOCK SpinLock; + PVOID Reserved; + PROCESS_WS_WATCH_INFORMATION WatchInfo[1]; +} PAGEFAULT_HISTORY, *PPAGEFAULT_HISTORY; + +typedef struct _PS_IMPERSONATION_INFORMATION +{ + PACCESS_TOKEN Token; + BOOLEAN CopyOnOpen; + BOOLEAN EffectiveOnly; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; +} PS_IMPERSONATION_INFORMATION, *PPS_IMPERSONATION_INFORMATION; + #include /* * NAME: ETHREAD diff --git a/reactos/include/ndk/setypes.h b/reactos/include/ndk/setypes.h index 79a3626b448..bcf5f33d997 100644 --- a/reactos/include/ndk/setypes.h +++ b/reactos/include/ndk/setypes.h @@ -88,4 +88,10 @@ typedef struct _AUX_DATA GENERIC_MAPPING GenericMapping; ULONG Reserved; } AUX_DATA, *PAUX_DATA; + +typedef struct _SE_AUDIT_PROCESS_CREATION_INFO +{ + POBJECT_NAME_INFORMATION ImageFileName; +} SE_AUDIT_PROCESS_CREATION_INFO, *PSE_AUDIT_PROCESS_CREATION_INFO; + #endif diff --git a/reactos/w32api/include/ddk/ntifs.h b/reactos/w32api/include/ddk/ntifs.h index 4cb96b1ce9c..76d0d587f51 100644 --- a/reactos/w32api/include/ddk/ntifs.h +++ b/reactos/w32api/include/ddk/ntifs.h @@ -521,16 +521,12 @@ extern LARGE_INTEGER IoOtherTransferCount; typedef PVOID OPLOCK, *POPLOCK; typedef struct _CACHE_MANAGER_CALLBACKS *PCACHE_MANAGER_CALLBACKS; -typedef struct _EPROCESS_QUOTA_BLOCK *PEPROCESS_QUOTA_BLOCK; typedef struct _FILE_GET_QUOTA_INFORMATION *PFILE_GET_QUOTA_INFORMATION; typedef struct _HANDLE_TABLE *PHANDLE_TABLE; typedef struct _KPROCESS *PKPROCESS; typedef struct _KQUEUE *PKQUEUE; typedef struct _KTRAP_FRAME *PKTRAP_FRAME; -typedef struct _MMWSL *PMMWSL; typedef struct _OBJECT_DIRECTORY *POBJECT_DIRECTORY; -typedef struct _PAGEFAULT_HISTORY *PPAGEFAULT_HISTORY; -typedef struct _PS_IMPERSONATION_INFORMATION *PPS_IMPERSONATION_INFORMATION; typedef struct _SECTION_OBJECT *PSECTION_OBJECT; typedef struct _SHARED_CACHE_MAP *PSHARED_CACHE_MAP; typedef struct _VACB *PVACB; @@ -590,89 +586,6 @@ typedef struct _KAPC_STATE { BOOLEAN UserApcPending; } KAPC_STATE, *PKAPC_STATE, *RESTRICTED_POINTER PRKAPC_STATE; -#if (VER_PRODUCTBUILD >= 2600) - -typedef struct _MMSUPPORT_FLAGS { - ULONG SessionSpace : 1; - ULONG BeingTrimmed : 1; - ULONG SessionLeader : 1; - ULONG TrimHard : 1; - ULONG WorkingSetHard : 1; - ULONG AddressSpaceBeingDeleted : 1; - ULONG Available : 10; - ULONG AllowWorkingSetAdjustment : 8; - ULONG MemoryPriority : 8; -} MMSUPPORT_FLAGS, *PMMSUPPORT_FLAGS; - -#else - -typedef struct _MMSUPPORT_FLAGS { - ULONG SessionSpace : 1; - ULONG BeingTrimmed : 1; - ULONG ProcessInSession : 1; - ULONG SessionLeader : 1; - ULONG TrimHard : 1; - ULONG WorkingSetHard : 1; - ULONG WriteWatch : 1; - ULONG Filler : 25; -} MMSUPPORT_FLAGS, *PMMSUPPORT_FLAGS; - -#endif - -#if (VER_PRODUCTBUILD >= 2600) - -typedef struct _MMSUPPORT { - LARGE_INTEGER LastTrimTime; - MMSUPPORT_FLAGS Flags; - ULONG PageFaultCount; - ULONG PeakWorkingSetSize; - ULONG WorkingSetSize; - ULONG MinimumWorkingSetSize; - ULONG MaximumWorkingSetSize; - PMMWSL VmWorkingSetList; - LIST_ENTRY WorkingSetExpansionLinks; - ULONG Claim; - ULONG NextEstimationSlot; - ULONG NextAgingSlot; - ULONG EstimatedAvailable; - ULONG GrowthSinceLastEstimate; -} MMSUPPORT, *PMMSUPPORT; - -#else - -typedef struct _MMSUPPORT { - LARGE_INTEGER LastTrimTime; - ULONG LastTrimFaultCount; - ULONG PageFaultCount; - ULONG PeakWorkingSetSize; - ULONG WorkingSetSize; - ULONG MinimumWorkingSetSize; - ULONG MaximumWorkingSetSize; - PMMWSL VmWorkingSetList; - LIST_ENTRY WorkingSetExpansionLinks; - BOOLEAN AllowWorkingSetAdjustment; - BOOLEAN AddressSpaceBeingDeleted; - UCHAR ForegroundSwitchCount; - UCHAR MemoryPriority; -#if (VER_PRODUCTBUILD >= 2195) - union { - ULONG LongFlags; - MMSUPPORT_FLAGS Flags; - } u; - ULONG Claim; - ULONG NextEstimationSlot; - ULONG NextAgingSlot; - ULONG EstimatedAvailable; - ULONG GrowthSinceLastEstimate; -#endif /* (VER_PRODUCTBUILD >= 2195) */ -} MMSUPPORT, *PMMSUPPORT; - -#endif - -typedef struct _SE_AUDIT_PROCESS_CREATION_INFO { - POBJECT_NAME_INFORMATION ImageFileName; -} SE_AUDIT_PROCESS_CREATION_INFO, *PSE_AUDIT_PROCESS_CREATION_INFO; - typedef struct _BITMAP_RANGE { LIST_ENTRY Links; LARGE_INTEGER BasePage; @@ -703,28 +616,6 @@ typedef struct _COMPRESSED_DATA_INFO { ULONG CompressedChunkSizes[ANYSIZE_ARRAY]; } COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO; -#if (VER_PRODUCTBUILD >= 2600) - -typedef struct _EX_FAST_REF { - _ANONYMOUS_UNION union { - PVOID Object; - ULONG RefCnt : 3; - ULONG Value; - } DUMMYUNIONNAME; -} EX_FAST_REF, *PEX_FAST_REF; - -typedef struct _EX_PUSH_LOCK { - _ANONYMOUS_UNION union { - _ANONYMOUS_STRUCT struct { - ULONG Waiting : 1; - ULONG Exclusive : 1; - ULONG Shared : 30; - } DUMMYSTRUCTNAME; - ULONG Value; - PVOID Ptr; - } DUMMYUNIONNAME; -} EX_PUSH_LOCK, *PEX_PUSH_LOCK; - #define EX_RUNDOWN_ACTIVE 0x1 #define EX_RUNDOWN_COUNT_SHIFT 0x1 #define EX_RUNDOWN_COUNT_INC (1 << EX_RUNDOWN_COUNT_SHIFT) @@ -736,22 +627,6 @@ typedef struct _EX_RUNDOWN_REF { } DUMMYUNIONNAME; } EX_RUNDOWN_REF, *PEX_RUNDOWN_REF; -#endif - -typedef struct _EPROCESS_QUOTA_ENTRY { - ULONG Usage; - ULONG Limit; - ULONG Peak; - ULONG Return; -} EPROCESS_QUOTA_ENTRY, *PEPROCESS_QUOTA_ENTRY; - -typedef struct _EPROCESS_QUOTA_BLOCK { - EPROCESS_QUOTA_ENTRY QuotaEntry[3]; - LIST_ENTRY QuotaList; - ULONG ReferenceCount; - ULONG ProcessCount; -} EPROCESS_QUOTA_BLOCK, *PEPROCESS_QUOTA_BLOCK; - typedef struct _FILE_ACCESS_INFORMATION { ACCESS_MASK AccessFlags; } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION; @@ -1391,13 +1266,6 @@ typedef struct _PRIVATE_CACHE_MAP { #endif -typedef struct _PS_IMPERSONATION_INFORMATION { - PACCESS_TOKEN Token; - BOOLEAN CopyOnOpen; - BOOLEAN EffectiveOnly; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; -} PS_IMPERSONATION_INFORMATION, *PPS_IMPERSONATION_INFORMATION; - typedef struct _PUBLIC_BCB { CSHORT NodeTypeCode; CSHORT NodeByteSize; @@ -1490,54 +1358,6 @@ typedef struct _SE_EXPORTS { } SE_EXPORTS, *PSE_EXPORTS; -#if (VER_PRODUCTBUILD >= 2600) - -typedef struct _SHARED_CACHE_MAP { - CSHORT NodeTypeCode; - CSHORT NodeByteSize; - ULONG OpenCount; - LARGE_INTEGER FileSize; - LIST_ENTRY BcbList; - LARGE_INTEGER SectionSize; - LARGE_INTEGER ValidDataLength; - LARGE_INTEGER ValidDataGoal; - PVACB InitialVacbs[4]; - PVACB *Vacbs; - PFILE_OBJECT FileObject; - PVACB ActiveVacb; - PVOID NeedToZero; - ULONG ActivePage; - ULONG NeedToZeroPage; - KSPIN_LOCK ActiveVacbSpinLock; - ULONG VacbActiveCount; - ULONG DirtyPages; - LIST_ENTRY SharedCacheMapLinks; - ULONG Flags; - NTSTATUS Status; - PMBCB Mbcb; - PVOID Section; - PKEVENT CreateEvent; - PKEVENT WaitOnActiveCount; - ULONG PagesToWrite; - LONGLONG BeyondLastFlush; - PCACHE_MANAGER_CALLBACKS Callbacks; - PVOID LazyWriteContext; - LIST_ENTRY PrivateList; - PVOID LogHandle; - PVOID FlushToLsnRoutine; - ULONG DirtyPageThreshold; - ULONG LazyWritePassCount; - PCACHE_UNINITIALIZE_EVENT UninitializeEvent; - PVACB NeedToZeroVacb; - KSPIN_LOCK BcbSpinLock; - PVOID Reserved; - KEVENT Event; - EX_PUSH_LOCK VacbPushLock; - PRIVATE_CACHE_MAP PrivateCacheMap; -} SHARED_CACHE_MAP, *PSHARED_CACHE_MAP; - -#endif - typedef struct _STARTING_VCN_INPUT_BUFFER { LARGE_INTEGER StartingVcn; } STARTING_VCN_INPUT_BUFFER, *PSTARTING_VCN_INPUT_BUFFER;