struct _EPROCESS;
-typedef struct
+typedef struct
{
CSHORT Type;
CSHORT Size;
typedef PVOID POBJECT;
typedef struct _DIRECTORY_OBJECT
-{
+{
CSHORT Type;
CSHORT Size;
} DIRECTORY_OBJECT, *PDIRECTORY_OBJECT;
+typedef struct _TYPE_OBJECT
+{
+ CSHORT Type;
+ CSHORT Size;
+
+ /* pointer to object type data */
+ POBJECT_TYPE ObjectType;
+} TYPE_OBJECT, *PTYPE_OBJECT;
+
+
/*
* Enumeration of object types
*/
OBJTYP_MAX,
};
-BOOL ObAddObjectToNameSpace(PUNICODE_STRING path, POBJECT_HEADER Object);
-VOID ObRegisterType(CSHORT id, OBJECT_TYPE* type);
-NTSTATUS ObLookupObject(HANDLE rootdir, PWSTR string, PVOID* Object,
- PWSTR* UnparsedSection, ULONG Attributes);
-VOID ObRemoveEntry(POBJECT_HEADER Header);
-NTSTATUS ObPerformRetentionChecks(POBJECT_HEADER Header);
+#define OBJECT_ALLOC_SIZE(type) (type->NonpagedPoolCharge+sizeof(OBJECT_HEADER)-sizeof(COMMON_BODY_HEADER))
-/*
- * FUNCTION: Creates an entry within a directory
- * ARGUMENTS:
- * parent = Parent directory
- * object = Header of the object to add
- */
-VOID ObCreateEntry(PDIRECTORY_OBJECT parent, POBJECT_HEADER object);
-extern inline POBJECT_HEADER BODY_TO_HEADER(PVOID body)
-{
- PCOMMON_BODY_HEADER chdr = (PCOMMON_BODY_HEADER)body;
- return(CONTAINING_RECORD((&(chdr->Type)),OBJECT_HEADER,Type));
-}
+extern PDIRECTORY_OBJECT NameSpaceRoot;
-extern inline PVOID HEADER_TO_BODY(POBJECT_HEADER obj)
-{
- return(((void *)obj)+sizeof(OBJECT_HEADER)-sizeof(COMMON_BODY_HEADER));
-}
-#define OBJECT_ALLOC_SIZE(type) (type->NonpagedPoolCharge+sizeof(OBJECT_HEADER)-sizeof(COMMON_BODY_HEADER))
+POBJECT_HEADER BODY_TO_HEADER(PVOID body);
+PVOID HEADER_TO_BODY(POBJECT_HEADER obj);
+
+VOID ObpAddEntryDirectory(PDIRECTORY_OBJECT Parent,
+ POBJECT_HEADER Header,
+ PWSTR Name);
+VOID ObpRemoveEntryDirectory(POBJECT_HEADER Header);
-/*
- * PURPOSE: Defines a handle
- */
-typedef struct
-{
- PVOID ObjectBody;
- ACCESS_MASK GrantedAccess;
- BOOLEAN Inherit;
-} HANDLE_REP, *PHANDLE_REP;
-PHANDLE_REP ObTranslateHandle(struct _EPROCESS* Process, HANDLE h);
-extern PDIRECTORY_OBJECT NameSpaceRoot;
-VOID ObAddEntryDirectory(PDIRECTORY_OBJECT Parent,
- POBJECT Object,
- PWSTR Name);
NTSTATUS ObCreateHandle(struct _EPROCESS* Process,
PVOID ObjectBody,
ACCESS_MASK GrantedAccess,
PVOID* ReturnedObject,
PUNICODE_STRING RemainingPath,
POBJECT_TYPE ObjectType);
-ULONG ObGetReferenceCount(PVOID Object);
-ULONG ObGetHandleCount(PVOID Object);
VOID ObCloseAllHandles(struct _EPROCESS* Process);
VOID ObDeleteHandleTable(struct _EPROCESS* Process);
-PVOID ObDeleteHandle(struct _EPROCESS* Process,
+PVOID ObDeleteHandle(struct _EPROCESS* Process,
HANDLE Handle);
+NTSTATUS
+ObpCreateTypeObject(POBJECT_TYPE ObjectType);
+
+ULONG
+ObGetObjectHandleCount(PVOID Object);
+
#endif /* __INCLUDE_INTERNAL_OBJMGR_H */