From 68121865bafc0f5beac70ea1cd167667bb1d0354 Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Wed, 24 May 2006 20:13:47 +0000 Subject: [PATCH] - Wipe out PROS_OBJECT_HEADER and use OBJECT_HEADER since we are now compatible. svn path=/trunk/; revision=22016 --- reactos/include/ndk/obtypes.h | 13 ++++++++++ reactos/ntoskrnl/include/internal/ex.h | 4 +-- reactos/ntoskrnl/include/internal/ob.h | 36 ++------------------------ reactos/ntoskrnl/ob/handle.c | 20 +++++++------- reactos/ntoskrnl/ob/namespc.c | 14 +++++----- reactos/ntoskrnl/ob/ntobj.c | 4 +-- reactos/ntoskrnl/ob/object.c | 32 +++++++++++------------ reactos/ntoskrnl/ob/security.c | 6 ++--- reactos/ntoskrnl/ob/wait.c | 2 +- reactos/ntoskrnl/se/semgr.c | 2 +- 10 files changed, 57 insertions(+), 76 deletions(-) diff --git a/reactos/include/ndk/obtypes.h b/reactos/include/ndk/obtypes.h index a252310ebff..f10d8cb5c87 100644 --- a/reactos/include/ndk/obtypes.h +++ b/reactos/include/ndk/obtypes.h @@ -416,6 +416,19 @@ typedef struct _OBJECT_HEADER QUAD Body; } OBJECT_HEADER, *POBJECT_HEADER; +// +// Object Lookup Context +// +typedef struct _OBP_LOOKUP_CONTEXT +{ + POBJECT_DIRECTORY Directory; + PVOID Object; + ULONG HashValue; + USHORT HashIndex; + BOOLEAN DirectoryLocked; + ULONG LockStateSignature; +} OBP_LOOKUP_CONTEXT, *POBP_LOOKUP_CONTEXT; + // // Device Map // diff --git a/reactos/ntoskrnl/include/internal/ex.h b/reactos/ntoskrnl/include/internal/ex.h index 8b49812e5c5..368915acd26 100644 --- a/reactos/ntoskrnl/include/internal/ex.h +++ b/reactos/ntoskrnl/include/internal/ex.h @@ -8,10 +8,10 @@ extern LARGE_INTEGER ExpTimeZoneBias; extern ULONG ExpTimeZoneId; extern POBJECT_TYPE ExEventPairObjectType; -#define EX_OBJ_TO_HDR(eob) ((PROS_OBJECT_HEADER)((ULONG_PTR)(eob) & \ +#define EX_OBJ_TO_HDR(eob) ((POBJECT_HEADER)((ULONG_PTR)(eob) & \ ~(EX_HANDLE_ENTRY_PROTECTFROMCLOSE | EX_HANDLE_ENTRY_INHERITABLE | \ EX_HANDLE_ENTRY_AUDITONCLOSE))) -#define EX_HTE_TO_HDR(hte) ((PROS_OBJECT_HEADER)((ULONG_PTR)((hte)->Object) & \ +#define EX_HTE_TO_HDR(hte) ((POBJECT_HEADER)((ULONG_PTR)((hte)->Object) & \ ~(EX_HANDLE_ENTRY_PROTECTFROMCLOSE | EX_HANDLE_ENTRY_INHERITABLE | \ EX_HANDLE_ENTRY_AUDITONCLOSE))) diff --git a/reactos/ntoskrnl/include/internal/ob.h b/reactos/ntoskrnl/include/internal/ob.h index de7e1c77872..85babbeb6e2 100644 --- a/reactos/ntoskrnl/include/internal/ob.h +++ b/reactos/ntoskrnl/include/internal/ob.h @@ -11,40 +11,8 @@ struct _EPROCESS; -typedef struct _ROS_OBJECT_HEADER -{ - LONG PointerCount; - union - { - LONG HandleCount; - PVOID NextToFree; - }; - POBJECT_TYPE Type; - UCHAR NameInfoOffset; - UCHAR HandleInfoOffset; - UCHAR QuotaInfoOffset; - UCHAR Flags; - union - { - POBJECT_CREATE_INFORMATION ObjectCreateInfo; - PVOID QuotaBlockCharged; - }; - PSECURITY_DESCRIPTOR SecurityDescriptor; - QUAD Body; -} ROS_OBJECT_HEADER, *PROS_OBJECT_HEADER; - -typedef struct _OBP_LOOKUP_CONTEXT -{ - POBJECT_DIRECTORY Directory; - PVOID Object; - ULONG HashValue; - USHORT HashIndex; - BOOLEAN DirectoryLocked; - ULONG LockStateSignature; -} OBP_LOOKUP_CONTEXT, *POBP_LOOKUP_CONTEXT; - #define BODY_TO_HEADER(objbdy) \ - CONTAINING_RECORD((objbdy), ROS_OBJECT_HEADER, Body) + CONTAINING_RECORD((objbdy), OBJECT_HEADER, Body) #define HEADER_TO_OBJECT_NAME(objhdr) ((POBJECT_HEADER_NAME_INFO) \ (!(objhdr)->NameInfoOffset ? NULL: ((PCHAR)(objhdr) - (objhdr)->NameInfoOffset))) @@ -55,7 +23,7 @@ typedef struct _OBP_LOOKUP_CONTEXT #define HEADER_TO_CREATOR_INFO(objhdr) ((POBJECT_HEADER_CREATOR_INFO) \ (!((objhdr)->Flags & OB_FLAG_CREATOR_INFO) ? NULL: ((PCHAR)(objhdr) - sizeof(OBJECT_HEADER_CREATOR_INFO)))) -#define OBJECT_ALLOC_SIZE(ObjectSize) ((ObjectSize)+sizeof(ROS_OBJECT_HEADER)) +#define OBJECT_ALLOC_SIZE(ObjectSize) ((ObjectSize)+sizeof(OBJECT_HEADER)) #define KERNEL_HANDLE_FLAG (1 << ((sizeof(HANDLE) * 8) - 1)) #define ObIsKernelHandle(Handle, ProcessorMode) \ diff --git a/reactos/ntoskrnl/ob/handle.c b/reactos/ntoskrnl/ob/handle.c index 030f63a0e22..1c012f27904 100644 --- a/reactos/ntoskrnl/ob/handle.c +++ b/reactos/ntoskrnl/ob/handle.c @@ -52,7 +52,7 @@ ExpDesktopCreate(PVOID ObjectBody, static VOID ObpDecrementHandleCount(PVOID ObjectBody) { - PROS_OBJECT_HEADER ObjectHeader = BODY_TO_HEADER(ObjectBody); + POBJECT_HEADER ObjectHeader = BODY_TO_HEADER(ObjectBody); LONG NewHandleCount = InterlockedDecrement(&ObjectHeader->HandleCount); OBP_LOOKUP_CONTEXT Context; DPRINT("Header: %x\n", ObjectHeader); @@ -228,7 +228,7 @@ ObpDeleteHandle(HANDLE Handle) { PHANDLE_TABLE_ENTRY HandleEntry; PVOID Body; - PROS_OBJECT_HEADER ObjectHeader; + POBJECT_HEADER ObjectHeader; PHANDLE_TABLE ObjectTable; PAGED_CODE(); @@ -286,7 +286,7 @@ ObDuplicateObject(PEPROCESS SourceProcess, HANDLE_TABLE_ENTRY NewHandleEntry; BOOLEAN AttachedToProcess = FALSE; PVOID ObjectBody; - PROS_OBJECT_HEADER ObjectHeader; + POBJECT_HEADER ObjectHeader; ULONG NewHandleCount; HANDLE NewTargetHandle; PEPROCESS CurrentProcess; @@ -625,7 +625,7 @@ SweepHandleCallback(PHANDLE_TABLE HandleTable, ULONG GrantedAccess, PVOID Context) { - PROS_OBJECT_HEADER ObjectHeader; + POBJECT_HEADER ObjectHeader; PVOID ObjectBody; PAGED_CODE(); @@ -641,7 +641,7 @@ DuplicateHandleCallback(PHANDLE_TABLE HandleTable, PHANDLE_TABLE_ENTRY HandleTableEntry, PVOID Context) { - PROS_OBJECT_HEADER ObjectHeader; + POBJECT_HEADER ObjectHeader; BOOLEAN Ret = FALSE; PAGED_CODE(); @@ -721,7 +721,7 @@ ObpCreateHandle(PVOID ObjectBody, { HANDLE_TABLE_ENTRY NewEntry; PEPROCESS Process, CurrentProcess; - PROS_OBJECT_HEADER ObjectHeader; + POBJECT_HEADER ObjectHeader; HANDLE Handle; KAPC_STATE ApcState; BOOLEAN AttachedToProcess = FALSE; @@ -889,7 +889,7 @@ ObReferenceObjectByHandle(HANDLE Handle, POBJECT_HANDLE_INFORMATION HandleInformation) { PHANDLE_TABLE_ENTRY HandleEntry; - PROS_OBJECT_HEADER ObjectHeader; + POBJECT_HEADER ObjectHeader; PVOID ObjectBody; ACCESS_MASK GrantedAccess; ULONG Attributes; @@ -1153,10 +1153,10 @@ ObInsertObject(IN PVOID Object, OUT PHANDLE Handle) { POBJECT_CREATE_INFORMATION ObjectCreateInfo; - PROS_OBJECT_HEADER Header; + POBJECT_HEADER Header; POBJECT_HEADER_NAME_INFO ObjectNameInfo; PVOID FoundObject = NULL; - PROS_OBJECT_HEADER FoundHeader = NULL; + POBJECT_HEADER FoundHeader = NULL; NTSTATUS Status = STATUS_SUCCESS; UNICODE_STRING RemainingPath; BOOLEAN ObjectAttached = FALSE; @@ -1230,7 +1230,7 @@ ObInsertObject(IN PVOID Object, ObjectNameInfo->Name.Buffer = NewName; ObjectNameInfo->Name.Length = RemainingPath.Length - Delta; ObjectNameInfo->Name.MaximumLength = RemainingPath.MaximumLength - Delta; - ObpInsertEntryDirectory(FoundObject, &Context, (POBJECT_HEADER)Header); + ObpInsertEntryDirectory(FoundObject, &Context, Header); ObjectAttached = TRUE; } diff --git a/reactos/ntoskrnl/ob/namespc.c b/reactos/ntoskrnl/ob/namespc.c index aeeadb98923..787f75376f1 100644 --- a/reactos/ntoskrnl/ob/namespc.c +++ b/reactos/ntoskrnl/ob/namespc.c @@ -50,7 +50,7 @@ ObpAllocateObject(POBJECT_CREATE_INFORMATION ObjectCreateInfo, PUNICODE_STRING ObjectName, POBJECT_TYPE ObjectType, ULONG ObjectSize, - PROS_OBJECT_HEADER *ObjectHeader); + POBJECT_HEADER *ObjectHeader); /* FUNCTIONS **************************************************************/ @@ -360,7 +360,7 @@ ObInit(VOID) FALSE, &Context)) { - ObpInsertEntryDirectory(ObpTypeDirectoryObject, &Context, (POBJECT_HEADER)BODY_TO_HEADER(ObTypeObjectType)); + ObpInsertEntryDirectory(ObpTypeDirectoryObject, &Context, BODY_TO_HEADER(ObTypeObjectType)); } if (!ObpLookupEntryDirectory(ObpTypeDirectoryObject, &HEADER_TO_OBJECT_NAME(BODY_TO_HEADER(ObDirectoryType))->Name, @@ -368,7 +368,7 @@ ObInit(VOID) FALSE, &Context)) { - ObpInsertEntryDirectory(ObpTypeDirectoryObject, &Context, (POBJECT_HEADER)BODY_TO_HEADER(ObDirectoryType)); + ObpInsertEntryDirectory(ObpTypeDirectoryObject, &Context, BODY_TO_HEADER(ObDirectoryType)); } /* Create 'symbolic link' object type */ @@ -385,7 +385,7 @@ ObpCreateTypeObject(POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, PUNICODE_STRING TypeName, POBJECT_TYPE *ObjectType) { - PROS_OBJECT_HEADER Header; + POBJECT_HEADER Header; POBJECT_TYPE LocalObjectType; ULONG HeaderSize; NTSTATUS Status; @@ -397,7 +397,7 @@ ObpCreateTypeObject(POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, TypeName, ObTypeObjectType, OBJECT_ALLOC_SIZE(sizeof(OBJECT_TYPE)), - (PROS_OBJECT_HEADER*)&Header); + (POBJECT_HEADER*)&Header); if (!NT_SUCCESS(Status)) { DPRINT1("ObpAllocateObject failed!\n"); @@ -443,7 +443,7 @@ ObpCreateTypeObject(POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, } /* Calculate how much space our header'll take up */ - HeaderSize = sizeof(ROS_OBJECT_HEADER) + sizeof(OBJECT_HEADER_NAME_INFO) + + HeaderSize = sizeof(OBJECT_HEADER) + sizeof(OBJECT_HEADER_NAME_INFO) + (ObjectTypeInitializer->MaintainHandleCount ? sizeof(OBJECT_HEADER_HANDLE_INFO) : 0); @@ -499,7 +499,7 @@ ObpCreateTypeObject(POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, OBJ_CASE_INSENSITIVE, FALSE, &Context); - ObpInsertEntryDirectory(ObpTypeDirectoryObject, &Context, (POBJECT_HEADER)Header); + ObpInsertEntryDirectory(ObpTypeDirectoryObject, &Context, Header); ObReferenceObject(ObpTypeDirectoryObject); } diff --git a/reactos/ntoskrnl/ob/ntobj.c b/reactos/ntoskrnl/ob/ntobj.c index 1131c31dc94..d7882d60d87 100644 --- a/reactos/ntoskrnl/ob/ntobj.c +++ b/reactos/ntoskrnl/ob/ntobj.c @@ -35,7 +35,7 @@ FASTCALL ObpSetPermanentObject(IN PVOID ObjectBody, IN BOOLEAN Permanent) { - PROS_OBJECT_HEADER ObjectHeader; + POBJECT_HEADER ObjectHeader; OBP_LOOKUP_CONTEXT Context; ObjectHeader = BODY_TO_HEADER(ObjectBody); @@ -179,7 +179,7 @@ NtQueryObject(IN HANDLE ObjectHandle, OUT PULONG ResultLength OPTIONAL) { OBJECT_HANDLE_INFORMATION HandleInfo; - PROS_OBJECT_HEADER ObjectHeader; + POBJECT_HEADER ObjectHeader; ULONG InfoLength; PVOID Object; NTSTATUS Status; diff --git a/reactos/ntoskrnl/ob/object.c b/reactos/ntoskrnl/ob/object.c index a5ad62516f2..7078260614b 100644 --- a/reactos/ntoskrnl/ob/object.c +++ b/reactos/ntoskrnl/ob/object.c @@ -22,7 +22,7 @@ typedef struct _RETENTION_CHECK_PARAMS { WORK_QUEUE_ITEM WorkItem; - PROS_OBJECT_HEADER ObjectHeader; + POBJECT_HEADER ObjectHeader; } RETENTION_CHECK_PARAMS, *PRETENTION_CHECK_PARAMS; /* FUNCTIONS ************************************************************/ @@ -299,7 +299,7 @@ ObFindObject(POBJECT_CREATE_INFORMATION ObjectCreateInfo, PVOID NextObject; PVOID CurrentObject; PVOID RootObject; - PROS_OBJECT_HEADER CurrentHeader; + POBJECT_HEADER CurrentHeader; NTSTATUS Status; PWSTR current; UNICODE_STRING PathString; @@ -443,7 +443,7 @@ ObQueryNameString(IN PVOID Object, OUT PULONG ReturnLength) { POBJECT_HEADER_NAME_INFO LocalInfo; - PROS_OBJECT_HEADER ObjectHeader; + POBJECT_HEADER ObjectHeader; POBJECT_DIRECTORY ParentDirectory; ULONG NameSize; PWCH ObjectName; @@ -621,9 +621,9 @@ ObpAllocateObject(POBJECT_CREATE_INFORMATION ObjectCreateInfo, PUNICODE_STRING ObjectName, POBJECT_TYPE ObjectType, ULONG ObjectSize, - PROS_OBJECT_HEADER *ObjectHeader) + POBJECT_HEADER *ObjectHeader) { - PROS_OBJECT_HEADER Header; + POBJECT_HEADER Header; BOOLEAN HasHandleInfo = FALSE; BOOLEAN HasNameInfo = FALSE; BOOLEAN HasCreatorInfo = FALSE; @@ -687,7 +687,7 @@ ObpAllocateObject(POBJECT_CREATE_INFORMATION ObjectCreateInfo, HandleInfo = (POBJECT_HEADER_HANDLE_INFO)Header; DPRINT("Info: %x\n", HandleInfo); HandleInfo->SingleEntry.HandleCount = 0; - Header = (PROS_OBJECT_HEADER)(HandleInfo + 1); + Header = (POBJECT_HEADER)(HandleInfo + 1); } /* Initialize the Object Name Info */ @@ -697,7 +697,7 @@ ObpAllocateObject(POBJECT_CREATE_INFORMATION ObjectCreateInfo, DPRINT("Info: %x %wZ\n", NameInfo, ObjectName); NameInfo->Name = *ObjectName; NameInfo->Directory = NULL; - Header = (PROS_OBJECT_HEADER)(NameInfo + 1); + Header = (POBJECT_HEADER)(NameInfo + 1); } /* Initialize Creator Info */ @@ -709,7 +709,7 @@ ObpAllocateObject(POBJECT_CREATE_INFORMATION ObjectCreateInfo, * CreatorInfo->CreatorUniqueProcess = PsGetCurrentProcessId(); */ InitializeListHead(&CreatorInfo->TypeList); - Header = (PROS_OBJECT_HEADER)(CreatorInfo + 1); + Header = (POBJECT_HEADER)(CreatorInfo + 1); } /* Initialize the object header */ @@ -780,7 +780,7 @@ ObCreateObject(IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL, NTSTATUS Status; POBJECT_CREATE_INFORMATION ObjectCreateInfo; UNICODE_STRING ObjectName; - PROS_OBJECT_HEADER Header; + POBJECT_HEADER Header; DPRINT("ObCreateObject(Type %p ObjectAttributes %p, Object %p)\n", Type, ObjectAttributes, Object); @@ -848,7 +848,7 @@ ObReferenceObjectByPointer(IN PVOID Object, IN POBJECT_TYPE ObjectType, IN KPROCESSOR_MODE AccessMode) { - PROS_OBJECT_HEADER Header; + POBJECT_HEADER Header; /* NOTE: should be possible to reference an object above APC_LEVEL! */ @@ -941,7 +941,7 @@ ObOpenObjectByPointer(IN PVOID Object, static NTSTATUS -ObpDeleteObject(PROS_OBJECT_HEADER Header) +ObpDeleteObject(POBJECT_HEADER Header) { PVOID HeaderLocation = Header; POBJECT_HEADER_HANDLE_INFO HandleInfo; @@ -1018,7 +1018,7 @@ ObpDeleteObjectWorkRoutine (IN PVOID Parameter) STATIC NTSTATUS -ObpDeleteObjectDpcLevel(IN PROS_OBJECT_HEADER ObjectHeader, +ObpDeleteObjectDpcLevel(IN POBJECT_HEADER ObjectHeader, IN LONG OldPointerCount) { #if 0 @@ -1097,7 +1097,7 @@ ObpDeleteObjectDpcLevel(IN PROS_OBJECT_HEADER ObjectHeader, VOID FASTCALL ObfReferenceObject(IN PVOID Object) { - PROS_OBJECT_HEADER Header; + POBJECT_HEADER Header; ASSERT(Object); @@ -1130,7 +1130,7 @@ ObfReferenceObject(IN PVOID Object) VOID FASTCALL ObfDereferenceObject(IN PVOID Object) { - PROS_OBJECT_HEADER Header; + POBJECT_HEADER Header; LONG NewPointerCount; BOOL Permanent; @@ -1225,7 +1225,7 @@ ObFastReplaceObject(IN PEX_FAST_REF FastRef, ULONG STDCALL ObGetObjectPointerCount(PVOID Object) { - PROS_OBJECT_HEADER Header; + POBJECT_HEADER Header; PAGED_CODE(); @@ -1253,7 +1253,7 @@ ULONG NTAPI ObGetObjectHandleCount(PVOID Object) { - PROS_OBJECT_HEADER Header; + POBJECT_HEADER Header; PAGED_CODE(); diff --git a/reactos/ntoskrnl/ob/security.c b/reactos/ntoskrnl/ob/security.c index bb78537da3f..c69767cfabf 100644 --- a/reactos/ntoskrnl/ob/security.c +++ b/reactos/ntoskrnl/ob/security.c @@ -100,7 +100,7 @@ ObGetObjectSecurity(IN PVOID Object, OUT PSECURITY_DESCRIPTOR *SecurityDescriptor, OUT PBOOLEAN MemoryAllocated) { - PROS_OBJECT_HEADER Header; + POBJECT_HEADER Header; ULONG Length; NTSTATUS Status; PAGED_CODE(); @@ -230,7 +230,7 @@ NtQuerySecurityObject(IN HANDLE Handle, { KPROCESSOR_MODE PreviousMode = ExGetPreviousMode(); PVOID Object; - PROS_OBJECT_HEADER Header; + POBJECT_HEADER Header; ACCESS_MASK DesiredAccess = (ACCESS_MASK)0; NTSTATUS Status = STATUS_SUCCESS; PAGED_CODE(); @@ -328,7 +328,7 @@ NtSetSecurityObject(IN HANDLE Handle, { KPROCESSOR_MODE PreviousMode = ExGetPreviousMode(); PVOID Object; - PROS_OBJECT_HEADER Header; + POBJECT_HEADER Header; SECURITY_DESCRIPTOR_RELATIVE *CapturedSecurityDescriptor; ACCESS_MASK DesiredAccess = (ACCESS_MASK)0; NTSTATUS Status; diff --git a/reactos/ntoskrnl/ob/wait.c b/reactos/ntoskrnl/ob/wait.c index 093ab800ce3..d8ac09a6f0e 100644 --- a/reactos/ntoskrnl/ob/wait.c +++ b/reactos/ntoskrnl/ob/wait.c @@ -60,7 +60,7 @@ NtWaitForMultipleObjects(IN ULONG ObjectCount, LARGE_INTEGER SafeTimeOut; BOOLEAN LockInUse; PHANDLE_TABLE_ENTRY HandleEntry; - PROS_OBJECT_HEADER ObjectHeader; + POBJECT_HEADER ObjectHeader; PHANDLE_TABLE HandleTable; ACCESS_MASK GrantedAccess; PVOID DefaultObject; diff --git a/reactos/ntoskrnl/se/semgr.c b/reactos/ntoskrnl/se/semgr.c index 5b41c60a7d7..1f52a26ec2b 100644 --- a/reactos/ntoskrnl/se/semgr.c +++ b/reactos/ntoskrnl/se/semgr.c @@ -212,7 +212,7 @@ SeDefaultObjectMethod(PVOID Object, PISECURITY_DESCRIPTOR ObjectSd; PISECURITY_DESCRIPTOR NewSd; PISECURITY_DESCRIPTOR SecurityDescriptor = _SecurityDescriptor; - PROS_OBJECT_HEADER Header = BODY_TO_HEADER(Object); + POBJECT_HEADER Header = BODY_TO_HEADER(Object); PSID Owner = 0; PSID Group = 0; PACL Dacl = 0;