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 _SYMLINK_OBJECT
42 UNICODE_STRING TargetName
;
43 LARGE_INTEGER CreateTime
;
44 } SYMLINK_OBJECT
, *PSYMLINK_OBJECT
;
47 typedef struct _TYPE_OBJECT
52 /* pointer to object type data */
53 POBJECT_TYPE ObjectType
;
54 } TYPE_OBJECT
, *PTYPE_OBJECT
;
58 * Enumeration of object types
75 #define OBJECT_ALLOC_SIZE(ObjectSize) ((ObjectSize)+sizeof(OBJECT_HEADER)-sizeof(COMMON_BODY_HEADER))
78 extern PDIRECTORY_OBJECT NameSpaceRoot
;
79 extern POBJECT_TYPE ObSymbolicLinkType
;
82 POBJECT_HEADER
BODY_TO_HEADER(PVOID body
);
83 PVOID
HEADER_TO_BODY(POBJECT_HEADER obj
);
85 VOID
ObpAddEntryDirectory(PDIRECTORY_OBJECT Parent
,
86 POBJECT_HEADER Header
,
88 VOID
ObpRemoveEntryDirectory(POBJECT_HEADER Header
);
91 ObInitSymbolicLinkImplementation(VOID
);
94 NTSTATUS
ObCreateHandle(struct _EPROCESS
* Process
,
96 ACCESS_MASK GrantedAccess
,
99 VOID
ObCreateHandleTable(struct _EPROCESS
* Parent
,
101 struct _EPROCESS
* Process
);
102 NTSTATUS
ObFindObject(POBJECT_ATTRIBUTES ObjectAttributes
,
103 PVOID
* ReturnedObject
,
104 PUNICODE_STRING RemainingPath
,
105 POBJECT_TYPE ObjectType
);
106 VOID
ObCloseAllHandles(struct _EPROCESS
* Process
);
107 VOID
ObDeleteHandleTable(struct _EPROCESS
* Process
);
110 ObDeleteHandle(PEPROCESS Process
,
115 ObpQueryHandleAttributes(HANDLE Handle
,
116 POBJECT_HANDLE_ATTRIBUTE_INFORMATION HandleInfo
);
119 ObpSetHandleAttributes(HANDLE Handle
,
120 POBJECT_HANDLE_ATTRIBUTE_INFORMATION HandleInfo
);
123 ObpCreateTypeObject(POBJECT_TYPE ObjectType
);
126 ObGetObjectHandleCount(PVOID Object
);
128 ObDuplicateObject(PEPROCESS SourceProcess
,
129 PEPROCESS TargetProcess
,
131 PHANDLE TargetHandle
,
132 ACCESS_MASK DesiredAccess
,
133 BOOLEAN InheritHandle
,
137 ObpGetHandleCountbyHandleTable(PHANDLE_TABLE HandleTable
);
140 #endif /* __INCLUDE_INTERNAL_OBJMGR_H */