1 struct _DIRECTORY_OBJECT
;
3 typedef struct _OBJECT_HANDLE_INFORMATION
{
4 ULONG HandleAttributes
;
5 ACCESS_MASK GrantedAccess
;
6 } OBJECT_HANDLE_INFORMATION
, *POBJECT_HANDLE_INFORMATION
;
10 typedef struct _OBJECT_TYPE
13 * PURPOSE: Name of the type
15 UNICODE_STRING TypeName
;
18 * PURPOSE: Total number of objects of this type
23 * PURPOSE: Total number of handles of this type
28 * PURPOSE: Maximum objects of this type
33 * PURPOSE: Maximum handles of this type
38 * PURPOSE: Paged pool charge
40 ULONG PagedPoolCharge
;
43 * PURPOSE: Nonpaged pool charge
45 ULONG NonpagedPoolCharge
;
48 * PURPOSE: Dumps the object
54 * PURPOSE: Opens the object
60 * PURPOSE: Called to close an object if OkayToClose returns true
65 * PURPOSE: Called to close an object if OkayToClose returns true
70 * PURPOSE: Called when an open attempts to open a file apparently
71 * residing within the object
77 VOID (*Security
)(VOID
);
81 VOID (*QueryName
)(VOID
);
84 * PURPOSE: Called when a process asks to close the object
86 VOID (*OkayToClose
)(VOID
);
88 } OBJECT_TYPE
, *POBJECT_TYPE
;
91 typedef struct _OBJECT
93 * PURPOSE: Header for every object managed by the object manager
97 * PURPOSE: Name of this entry
102 * PURPOSE: Our entry in our parents list of subdirectory
107 * PURPOSE: Number of non-handle references to this object
112 * PURPOSE: Number of handles opened to this object
117 * PURPOSE: Object type
118 * NOTE: This overlaps the first member of the object body
123 * PURPOSE: Object size
124 * NOTE: This overlaps the second member of the object body
128 } OBJECT_HEADER
, *POBJECT_HEADER
;
131 * PURPOSE: Defines an object
133 typedef struct _OBJECT_ATTRIBUTES
138 * PURPOSE: Attributes of the object
142 SECURITY_DESCRIPTOR SecurityDescriptor
;
143 // SecurityQualityOfService
145 struct _DIRECTORY_OBJECT
* parent
;
149 } OBJECT_ATTRIBUTES
, *POBJECT_ATTRIBUTES
;