Added ObGetObjectHandleCount().
[reactos.git] / reactos / ntoskrnl / include / internal / ob.h
index 6f06854..fd2a976 100644 (file)
@@ -13,7 +13,7 @@
 
 struct _EPROCESS;
 
-typedef struct 
+typedef struct
 {
    CSHORT Type;
    CSHORT Size;
@@ -22,7 +22,7 @@ typedef struct
 typedef PVOID POBJECT;
 
 typedef struct _DIRECTORY_OBJECT
-{   
+{
    CSHORT Type;
    CSHORT Size;
    
@@ -34,6 +34,16 @@ typedef struct _DIRECTORY_OBJECT
 } 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
  */
@@ -51,51 +61,23 @@ enum
    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,
@@ -108,11 +90,15 @@ NTSTATUS ObFindObject(POBJECT_ATTRIBUTES ObjectAttributes,
                      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 */