19#ifndef X86_MATANEL_OB_H
20#define X86_MATANEL_OB_H
65_Static_assert(sizeof(OBJECT_HEADER) % 16 == 0,
"OBJECT_HEADER must be 16-byte aligned");
68#define OBJECT_TO_OBJECT_HEADER(o) \
69 ((POBJECT_HEADER)((char*)(o) - sizeof(OBJECT_HEADER)))
71#define OBJECT_HEADER_TO_OBJECT(h) \
72 ((void*)((char*)(h) + sizeof(OBJECT_HEADER)))
89 IN uint32_t ObjectSize,
90 OUT void** ObjectCreated
123 IN uint32_t DesiredAccess,
struct _DOUBLY_LINKED_LIST DOUBLY_LINKED_LIST
struct _HANDLE_TABLE_ENTRY * PHANDLE_TABLE_ENTRY
struct _HANDLE_TABLE * PHANDLE_TABLE
enum _POOL_TYPE POOL_TYPE
MTSTATUS ObCreateHandleForObject(IN void *Object, IN ACCESS_MASK DesiredAccess, OUT PHANDLE ReturnedHandle)
struct _OBJECT_TYPE * POBJECT_TYPE
void(* OB_CLOSE_METHOD)(void *Object, void *Process, uint64_t Handle)
struct _OBJECT_TYPE_INITIALIZER * POBJECT_TYPE_INITIALIZER
MTSTATUS ObReferenceObjectByHandle(IN HANDLE Handle, IN uint32_t DesiredAccess, IN POBJECT_TYPE DesiredType, OUT void **Object, _Out_Opt PHANDLE_TABLE_ENTRY HandleInformation)
struct _OBJECT_HEADER * POBJECT_HEADER
MTSTATUS ObReferenceObjectByPointer(IN void *Object, IN POBJECT_TYPE DesiredType)
MTSTATUS ObCreateHandleForObjectEx(IN void *Object, IN ACCESS_MASK DesiredAccess, OUT PHANDLE ReturnedHandle, IN PHANDLE_TABLE ObjectTable)
void ObDereferenceObject(IN void *Object)
void(* OB_DELETE_METHOD)(void *Object)
MTSTATUS ObCreateObjectType(IN char *TypeName, IN POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, OUT POBJECT_TYPE *ObjectType)
bool ObReferenceObject(IN void *Object)
struct _OBJECT_TYPE OBJECT_TYPE
void(* OB_DUMP_METHOD)(void *Object)
struct _OBJECT_TYPE_INITIALIZER OBJECT_TYPE_INITIALIZER
MTSTATUS ObCreateObject(IN POBJECT_TYPE ObjectType, IN uint32_t ObjectSize, OUT void **ObjectCreated)
volatile void * NextToFree
OB_DELETE_METHOD DeleteProcedure
OB_CLOSE_METHOD CloseProcedure
OB_DUMP_METHOD DumpProcedure
uint32_t ValidAccessRights
uint32_t TotalNumberOfObjects
uint32_t TotalNumberOfHandles
DOUBLY_LINKED_LIST TypeList
OBJECT_TYPE_INITIALIZER TypeInfo