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
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 /* !AS_INVOKED */
114 #endif /* __INCLUDE_INTERNAL_OBJMGR_H */