2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: include/internal/objmgr.h
5 * PURPOSE: Object manager definitions
6 * PROGRAMMER: David Welch (welch@mcmail.com)
9 #ifndef __INCLUDE_INTERNAL_OBJMGR_H
10 #define __INCLUDE_INTERNAL_OBJMGR_H
12 #include <ddk/types.h>
20 } COMMON_BODY_HEADER, *PCOMMON_BODY_HEADER;
22 typedef PVOID POBJECT;
24 typedef struct _DIRECTORY_OBJECT
30 * PURPOSE: Head of the list of our subdirectories
34 } DIRECTORY_OBJECT, *PDIRECTORY_OBJECT;
37 typedef struct _TYPE_OBJECT
42 /* pointer to object type data */
43 POBJECT_TYPE ObjectType;
44 } TYPE_OBJECT, *PTYPE_OBJECT;
48 * Enumeration of object types
65 #define OBJECT_ALLOC_SIZE(type) (type->NonpagedPoolCharge+sizeof(OBJECT_HEADER)-sizeof(COMMON_BODY_HEADER))
68 extern PDIRECTORY_OBJECT NameSpaceRoot;
69 extern POBJECT_TYPE ObSymbolicLinkType;
72 POBJECT_HEADER BODY_TO_HEADER(PVOID body);
73 PVOID HEADER_TO_BODY(POBJECT_HEADER obj);
75 VOID ObpAddEntryDirectory(PDIRECTORY_OBJECT Parent,
76 POBJECT_HEADER Header,
78 VOID ObpRemoveEntryDirectory(POBJECT_HEADER Header);
81 ObInitSymbolicLinkImplementation(VOID);
84 NTSTATUS ObCreateHandle(struct _EPROCESS* Process,
86 ACCESS_MASK GrantedAccess,
89 VOID ObCreateHandleTable(struct _EPROCESS* Parent,
91 struct _EPROCESS* Process);
92 NTSTATUS ObFindObject(POBJECT_ATTRIBUTES ObjectAttributes,
93 PVOID* ReturnedObject,
94 PUNICODE_STRING RemainingPath,
95 POBJECT_TYPE ObjectType);
96 VOID ObCloseAllHandles(struct _EPROCESS* Process);
97 VOID ObDeleteHandleTable(struct _EPROCESS* Process);
98 PVOID ObDeleteHandle(struct _EPROCESS* Process,
102 ObpCreateTypeObject(POBJECT_TYPE ObjectType);
105 ObGetObjectHandleCount(PVOID Object);
107 ObDuplicateObject(PEPROCESS SourceProcess,
108 PEPROCESS TargetProcess,
110 PHANDLE TargetHandle,
111 ACCESS_MASK DesiredAccess,
112 BOOLEAN InheritHandle,
115 #endif /* __INCLUDE_INTERNAL_OBJMGR_H */