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 #define NTOS_MODE_KERNEL
21 } COMMON_BODY_HEADER, *PCOMMON_BODY_HEADER;
23 typedef PVOID POBJECT;
25 typedef struct _DIRECTORY_OBJECT
31 * PURPOSE: Head of the list of our subdirectories
35 } DIRECTORY_OBJECT, *PDIRECTORY_OBJECT;
38 typedef struct _TYPE_OBJECT
43 /* pointer to object type data */
44 POBJECT_TYPE ObjectType;
45 } TYPE_OBJECT, *PTYPE_OBJECT;
49 * Enumeration of object types
66 #define OBJECT_ALLOC_SIZE(type) (type->NonpagedPoolCharge+sizeof(OBJECT_HEADER)-sizeof(COMMON_BODY_HEADER))
69 extern PDIRECTORY_OBJECT NameSpaceRoot;
70 extern POBJECT_TYPE ObSymbolicLinkType;
73 POBJECT_HEADER BODY_TO_HEADER(PVOID body);
74 PVOID HEADER_TO_BODY(POBJECT_HEADER obj);
76 VOID ObpAddEntryDirectory(PDIRECTORY_OBJECT Parent,
77 POBJECT_HEADER Header,
79 VOID ObpRemoveEntryDirectory(POBJECT_HEADER Header);
82 ObInitSymbolicLinkImplementation(VOID);
85 NTSTATUS ObCreateHandle(struct _EPROCESS* Process,
87 ACCESS_MASK GrantedAccess,
90 VOID ObCreateHandleTable(struct _EPROCESS* Parent,
92 struct _EPROCESS* Process);
93 NTSTATUS ObFindObject(POBJECT_ATTRIBUTES ObjectAttributes,
94 PVOID* ReturnedObject,
95 PUNICODE_STRING RemainingPath,
96 POBJECT_TYPE ObjectType);
97 VOID ObCloseAllHandles(struct _EPROCESS* Process);
98 VOID ObDeleteHandleTable(struct _EPROCESS* Process);
99 PVOID ObDeleteHandle(struct _EPROCESS* Process,
103 ObpCreateTypeObject(POBJECT_TYPE ObjectType);
106 ObGetObjectHandleCount(PVOID Object);
108 ObDuplicateObject(PEPROCESS SourceProcess,
109 PEPROCESS TargetProcess,
111 PHANDLE TargetHandle,
112 ACCESS_MASK DesiredAccess,
113 BOOLEAN InheritHandle,
116 #endif /* __INCLUDE_INTERNAL_OBJMGR_H */