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;
71 POBJECT_HEADER BODY_TO_HEADER(PVOID body);
72 PVOID HEADER_TO_BODY(POBJECT_HEADER obj);
74 VOID ObpAddEntryDirectory(PDIRECTORY_OBJECT Parent,
75 POBJECT_HEADER Header,
77 VOID ObpRemoveEntryDirectory(POBJECT_HEADER Header);
81 NTSTATUS ObCreateHandle(struct _EPROCESS* Process,
83 ACCESS_MASK GrantedAccess,
86 VOID ObCreateHandleTable(struct _EPROCESS* Parent,
88 struct _EPROCESS* Process);
89 NTSTATUS ObFindObject(POBJECT_ATTRIBUTES ObjectAttributes,
90 PVOID* ReturnedObject,
91 PUNICODE_STRING RemainingPath,
92 POBJECT_TYPE ObjectType);
93 VOID ObCloseAllHandles(struct _EPROCESS* Process);
94 VOID ObDeleteHandleTable(struct _EPROCESS* Process);
95 PVOID ObDeleteHandle(struct _EPROCESS* Process,
99 ObpCreateTypeObject(POBJECT_TYPE ObjectType);
102 ObGetObjectHandleCount(PVOID Object);
104 ObDuplicateObject(PEPROCESS SourceProcess,
105 PEPROCESS TargetProcess,
107 PHANDLE TargetHandle,
108 ACCESS_MASK DesiredAccess,
109 BOOLEAN InheritHandle,
112 #endif /* __INCLUDE_INTERNAL_OBJMGR_H */