[NTOS:OB] Rename object types to their official names to satisfy WinDbg

- Rename ObDirectoryType to ObpDirectoryObjectType and remove it from NDK (this is not exported!)
- Rename ObSymbolicLinkType to ObpSymbolicLinkObjectType
- Remove duplicated ObpTypeObjectType from ob.h
This commit is contained in:
Timo Kreuzer 2018-02-13 21:33:04 +01:00
parent 65f9783808
commit 2c909db295
11 changed files with 29 additions and 30 deletions

View file

@ -601,8 +601,8 @@ extern ULONG ObpTraceLevel;
extern KEVENT ObpDefaultObject; extern KEVENT ObpDefaultObject;
extern KGUARDED_MUTEX ObpDeviceMapLock; extern KGUARDED_MUTEX ObpDeviceMapLock;
extern POBJECT_TYPE ObpTypeObjectType; extern POBJECT_TYPE ObpTypeObjectType;
extern POBJECT_TYPE ObSymbolicLinkType; extern POBJECT_TYPE ObpDirectoryObjectType;
extern POBJECT_TYPE ObpTypeObjectType; extern POBJECT_TYPE ObpSymbolicLinkObjectType;
extern POBJECT_DIRECTORY ObpRootDirectoryObject; extern POBJECT_DIRECTORY ObpRootDirectoryObject;
extern POBJECT_DIRECTORY ObpTypeDirectoryObject; extern POBJECT_DIRECTORY ObpTypeDirectoryObject;
extern PHANDLE_TABLE ObpKernelHandleTable; extern PHANDLE_TABLE ObpKernelHandleTable;

View file

@ -25,7 +25,7 @@ ObpCreateDeviceMap(IN HANDLE DirectoryHandle)
Status = ObReferenceObjectByHandle(DirectoryHandle, Status = ObReferenceObjectByHandle(DirectoryHandle,
DIRECTORY_TRAVERSE, DIRECTORY_TRAVERSE,
ObDirectoryType, ObpDirectoryObjectType,
KeGetPreviousMode(), KeGetPreviousMode(),
(PVOID*)&DirectoryObject, (PVOID*)&DirectoryObject,
NULL); NULL);

View file

@ -18,7 +18,7 @@
#include <debug.h> #include <debug.h>
BOOLEAN ObpLUIDDeviceMapsEnabled; BOOLEAN ObpLUIDDeviceMapsEnabled;
POBJECT_TYPE ObDirectoryType = NULL; POBJECT_TYPE ObpDirectoryObjectType = NULL;
/* PRIVATE FUNCTIONS ******************************************************/ /* PRIVATE FUNCTIONS ******************************************************/
@ -383,7 +383,7 @@ NtOpenDirectoryObject(OUT PHANDLE DirectoryHandle,
/* Open the directory object */ /* Open the directory object */
Status = ObOpenObjectByName(ObjectAttributes, Status = ObOpenObjectByName(ObjectAttributes,
ObDirectoryType, ObpDirectoryObjectType,
PreviousMode, PreviousMode,
NULL, NULL,
DesiredAccess, DesiredAccess,
@ -520,7 +520,7 @@ NtQueryDirectoryObject(IN HANDLE DirectoryHandle,
/* Get a reference to directory */ /* Get a reference to directory */
Status = ObReferenceObjectByHandle(DirectoryHandle, Status = ObReferenceObjectByHandle(DirectoryHandle,
DIRECTORY_QUERY, DIRECTORY_QUERY,
ObDirectoryType, ObpDirectoryObjectType,
PreviousMode, PreviousMode,
(PVOID*)&Directory, (PVOID*)&Directory,
NULL); NULL);
@ -756,7 +756,7 @@ NtCreateDirectoryObject(OUT PHANDLE DirectoryHandle,
/* Create the object */ /* Create the object */
Status = ObCreateObject(PreviousMode, Status = ObCreateObject(PreviousMode,
ObDirectoryType, ObpDirectoryObjectType,
ObjectAttributes, ObjectAttributes,
PreviousMode, PreviousMode,
NULL, NULL,

View file

@ -3095,7 +3095,7 @@ ObInsertObject(IN PVOID Object,
{ {
/* Check if this was a symbolic link */ /* Check if this was a symbolic link */
if (OBJECT_TO_OBJECT_HEADER(InsertObject)->Type == if (OBJECT_TO_OBJECT_HEADER(InsertObject)->Type ==
ObSymbolicLinkType) ObpSymbolicLinkObjectType)
{ {
/* Dereference it */ /* Dereference it */
ObDereferenceObject(InsertObject); ObDereferenceObject(InsertObject);
@ -3129,7 +3129,7 @@ ObInsertObject(IN PVOID Object,
else else
{ {
/* Check if this is a symbolic link */ /* Check if this is a symbolic link */
if (ObjectType == ObSymbolicLinkType) if (ObjectType == ObpSymbolicLinkObjectType)
{ {
/* Create the internal name */ /* Create the internal name */
ObpCreateSymbolicLinkName(Object); ObpCreateSymbolicLinkName(Object);

View file

@ -282,8 +282,8 @@ ObInitSystem(VOID)
ObjectTypeInitializer.GenericMapping = ObpDirectoryMapping; ObjectTypeInitializer.GenericMapping = ObpDirectoryMapping;
ObjectTypeInitializer.DeleteProcedure = NULL; ObjectTypeInitializer.DeleteProcedure = NULL;
ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(OBJECT_DIRECTORY); ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(OBJECT_DIRECTORY);
ObCreateObjectType(&Name, &ObjectTypeInitializer, NULL, &ObDirectoryType); ObCreateObjectType(&Name, &ObjectTypeInitializer, NULL, &ObpDirectoryObjectType);
ObDirectoryType->TypeInfo.ValidAccessMask &= ~SYNCHRONIZE; ObpDirectoryObjectType->TypeInfo.ValidAccessMask &= ~SYNCHRONIZE;
/* Create 'symbolic link' object type */ /* Create 'symbolic link' object type */
RtlInitUnicodeString(&Name, L"SymbolicLink"); RtlInitUnicodeString(&Name, L"SymbolicLink");
@ -292,8 +292,8 @@ ObInitSystem(VOID)
ObjectTypeInitializer.ValidAccessMask = SYMBOLIC_LINK_ALL_ACCESS; ObjectTypeInitializer.ValidAccessMask = SYMBOLIC_LINK_ALL_ACCESS;
ObjectTypeInitializer.ParseProcedure = ObpParseSymbolicLink; ObjectTypeInitializer.ParseProcedure = ObpParseSymbolicLink;
ObjectTypeInitializer.DeleteProcedure = ObpDeleteSymbolicLink; ObjectTypeInitializer.DeleteProcedure = ObpDeleteSymbolicLink;
ObCreateObjectType(&Name, &ObjectTypeInitializer, NULL, &ObSymbolicLinkType); ObCreateObjectType(&Name, &ObjectTypeInitializer, NULL, &ObpSymbolicLinkObjectType);
ObSymbolicLinkType->TypeInfo.ValidAccessMask &= ~SYNCHRONIZE; ObpSymbolicLinkObjectType->TypeInfo.ValidAccessMask &= ~SYNCHRONIZE;
/* Phase 0 initialization complete */ /* Phase 0 initialization complete */
ObpInitializationPhase++; ObpInitializationPhase++;
@ -321,7 +321,7 @@ ObPostPhase0:
/* Get a handle to it */ /* Get a handle to it */
Status = ObReferenceObjectByHandle(Handle, Status = ObReferenceObjectByHandle(Handle,
0, 0,
ObDirectoryType, ObpDirectoryObjectType,
KernelMode, KernelMode,
(PVOID*)&ObpRootDirectoryObject, (PVOID*)&ObpRootDirectoryObject,
NULL); NULL);
@ -372,7 +372,7 @@ ObPostPhase0:
/* Get a handle to it */ /* Get a handle to it */
Status = ObReferenceObjectByHandle(Handle, Status = ObReferenceObjectByHandle(Handle,
0, 0,
ObDirectoryType, ObpDirectoryObjectType,
KernelMode, KernelMode,
(PVOID*)&ObpTypeDirectoryObject, (PVOID*)&ObpTypeDirectoryObject,
NULL); NULL);

View file

@ -1563,7 +1563,7 @@ NtQueryObject(IN HANDLE ObjectHandle,
BasicInfo->SecurityDescriptorSize = 0; /* FIXME*/ BasicInfo->SecurityDescriptorSize = 0; /* FIXME*/
/* Check if this is a symlink */ /* Check if this is a symlink */
if (ObjectHeader->Type == ObSymbolicLinkType) if (ObjectHeader->Type == ObpSymbolicLinkObjectType)
{ {
/* Return the creation time */ /* Return the creation time */
BasicInfo->CreationTime.QuadPart = BasicInfo->CreationTime.QuadPart =
@ -1798,7 +1798,7 @@ NtSetInformationObject(IN HANDLE ObjectHandle,
/* Get the object directory */ /* Get the object directory */
Status = ObReferenceObjectByHandle(ObjectHandle, Status = ObReferenceObjectByHandle(ObjectHandle,
0, 0,
ObDirectoryType, ObpDirectoryObjectType,
PreviousMode, PreviousMode,
(PVOID*)&Directory, (PVOID*)&Directory,
NULL); NULL);

View file

@ -15,7 +15,7 @@
/* GLOBALS ******************************************************************/ /* GLOBALS ******************************************************************/
POBJECT_TYPE ObSymbolicLinkType = NULL; POBJECT_TYPE ObpSymbolicLinkObjectType = NULL;
/* PRIVATE FUNCTIONS *********************************************************/ /* PRIVATE FUNCTIONS *********************************************************/
@ -150,12 +150,12 @@ ObpParseSymbolicLinkToIoDeviceObject(IN POBJECT_DIRECTORY SymbolicLinkDirectory,
if (! *Object) if (! *Object)
break; break;
if (OBJECT_TO_OBJECT_HEADER(*Object)->Type == ObDirectoryType) if (OBJECT_TO_OBJECT_HEADER(*Object)->Type == ObpDirectoryObjectType)
{ {
/* Make this current directory, and continue search */ /* Make this current directory, and continue search */
*Directory = (POBJECT_DIRECTORY)*Object; *Directory = (POBJECT_DIRECTORY)*Object;
} }
else if (OBJECT_TO_OBJECT_HEADER(*Object)->Type == ObSymbolicLinkType && else if (OBJECT_TO_OBJECT_HEADER(*Object)->Type == ObpSymbolicLinkObjectType &&
(((POBJECT_SYMBOLIC_LINK)*Object)->DosDeviceDriveIndex == 0)) (((POBJECT_SYMBOLIC_LINK)*Object)->DosDeviceDriveIndex == 0))
{ {
/* Symlink points to another initialized symlink, ask caller to reparse */ /* Symlink points to another initialized symlink, ask caller to reparse */
@ -574,7 +574,7 @@ NtCreateSymbolicLinkObject(OUT PHANDLE LinkHandle,
/* Create the object */ /* Create the object */
Status = ObCreateObject(PreviousMode, Status = ObCreateObject(PreviousMode,
ObSymbolicLinkType, ObpSymbolicLinkObjectType,
ObjectAttributes, ObjectAttributes,
PreviousMode, PreviousMode,
NULL, NULL,
@ -696,7 +696,7 @@ NtOpenSymbolicLinkObject(OUT PHANDLE LinkHandle,
/* Open the object */ /* Open the object */
Status = ObOpenObjectByName(ObjectAttributes, Status = ObOpenObjectByName(ObjectAttributes,
ObSymbolicLinkType, ObpSymbolicLinkObjectType,
PreviousMode, PreviousMode,
NULL, NULL,
DesiredAccess, DesiredAccess,
@ -784,7 +784,7 @@ NtQuerySymbolicLinkObject(IN HANDLE LinkHandle,
/* Reference the object */ /* Reference the object */
Status = ObReferenceObjectByHandle(LinkHandle, Status = ObReferenceObjectByHandle(LinkHandle,
SYMBOLIC_LINK_QUERY, SYMBOLIC_LINK_QUERY,
ObSymbolicLinkType, ObpSymbolicLinkObjectType,
PreviousMode, PreviousMode,
(PVOID *)&SymlinkObject, (PVOID *)&SymlinkObject,
NULL); NULL);

View file

@ -306,7 +306,7 @@ ObpDeleteNameCheck(IN PVOID Object)
ObpDeleteEntryDirectory(&Context); ObpDeleteEntryDirectory(&Context);
/* Check if this is a symbolic link */ /* Check if this is a symbolic link */
if (ObjectType == ObSymbolicLinkType) if (ObjectType == ObpSymbolicLinkObjectType)
{ {
/* Remove internal name */ /* Remove internal name */
ObpDeleteSymbolicLinkName(Object); ObpDeleteSymbolicLinkName(Object);
@ -434,7 +434,7 @@ ObpLookupObjectName(IN HANDLE RootHandle OPTIONAL,
} }
/* Don't parse a Directory */ /* Don't parse a Directory */
if (ObjectHeader->Type != ObDirectoryType) if (ObjectHeader->Type != ObpDirectoryObjectType)
{ {
/* Make sure the Object Type has a parse routine */ /* Make sure the Object Type has a parse routine */
ParseRoutine = ObjectHeader->Type->TypeInfo.ParseProcedure; ParseRoutine = ObjectHeader->Type->TypeInfo.ParseProcedure;
@ -745,7 +745,7 @@ ParseFromRoot:
/* Check create access for the object */ /* Check create access for the object */
if (!ObCheckCreateObjectAccess(Directory, if (!ObCheckCreateObjectAccess(Directory,
ObjectType == ObDirectoryType ? ObjectType == ObpDirectoryObjectType ?
DIRECTORY_CREATE_SUBDIRECTORY : DIRECTORY_CREATE_SUBDIRECTORY :
DIRECTORY_CREATE_OBJECT, DIRECTORY_CREATE_OBJECT,
AccessState, AccessState,
@ -988,7 +988,7 @@ ReparseObject:
else else
{ {
/* We still have a name; check if this is a directory object */ /* We still have a name; check if this is a directory object */
if (ObjectHeader->Type == ObDirectoryType) if (ObjectHeader->Type == ObpDirectoryObjectType)
{ {
/* Check if we have a referenced parent directory */ /* Check if we have a referenced parent directory */
if (ReferencedParentDirectory) if (ReferencedParentDirectory)

View file

@ -395,7 +395,7 @@ ObReferenceObjectByPointer(IN PVOID Object,
* NOTE: Unless it's a symbolic link (Caz Yokoyama [MSFT]) * NOTE: Unless it's a symbolic link (Caz Yokoyama [MSFT])
*/ */
if ((Header->Type != ObjectType) && ((AccessMode != KernelMode) || if ((Header->Type != ObjectType) && ((AccessMode != KernelMode) ||
(ObjectType == ObSymbolicLinkType))) (ObjectType == ObpSymbolicLinkObjectType)))
{ {
/* Invalid type */ /* Invalid type */
return STATUS_OBJECT_TYPE_MISMATCH; return STATUS_OBJECT_TYPE_MISMATCH;

View file

@ -561,7 +561,7 @@ ObAssignSecurity(IN PACCESS_STATE AccessState,
Status = SeAssignSecurity(SecurityDescriptor, Status = SeAssignSecurity(SecurityDescriptor,
AccessState->SecurityDescriptor, AccessState->SecurityDescriptor,
&NewDescriptor, &NewDescriptor,
(Type == ObDirectoryType), (Type == ObpDirectoryObjectType),
&AccessState->SubjectSecurityContext, &AccessState->SubjectSecurityContext,
&Type->TypeInfo.GenericMapping, &Type->TypeInfo.GenericMapping,
PagedPool); PagedPool);

View file

@ -544,7 +544,6 @@ typedef struct _OBJECT_SYMBOLIC_LINK
// //
// Kernel Exports // Kernel Exports
// //
extern POBJECT_TYPE NTSYSAPI ObDirectoryType;
extern PDEVICE_MAP NTSYSAPI ObSystemDeviceMap; extern PDEVICE_MAP NTSYSAPI ObSystemDeviceMap;
#endif // !NTOS_MODE_USER #endif // !NTOS_MODE_USER