1 #ifndef _INCLUDE_DDK_OBFUNCS_H
2 #define _INCLUDE_DDK_OBFUNCS_H
3 /* OBJECT MANAGER ************************************************************/
6 ObAssignSecurity(IN PACCESS_STATE AccessState
,
7 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
13 ObCheckCreateObjectAccess(IN PVOID Object,
14 IN ACCESS_MASK DesiredAccess,
18 IN KPROCESSOR_MODE AccessMode,
19 OUT PNTSTATUS AccessStatus);
24 ObCheckObjectAccess(IN PVOID Object,
27 IN KPROCESSOR_MODE AccessMode,
28 OUT PACCESS_MODE GrantedAccess);
32 ObCreateObject(OUT PHANDLE Handle
,
33 IN ACCESS_MASK DesiredAccess
,
34 IN POBJECT_ATTRIBUTES ObjectAttributes
,
39 /* original implementation */
41 ObCreateObject(IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL
,
43 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
44 IN KPROCESSOR_MODE AccessMode
,
45 IN OUT PVOID ParseContext OPTIONAL
,
47 IN ULONG PagedPoolCharge OPTIONAL
,
48 IN ULONG NonPagedPoolCharge OPTIONAL
,
53 ObfDereferenceObject(IN PVOID Object
);
56 ObfReferenceObject(IN PVOID Object
);
58 #define ObDereferenceObject(Object) \
59 ObfDereferenceObject(Object)
61 #define ObReferenceObject(Object) \
62 ObfReferenceObject(Object)
66 ObFindHandleForObject(ULONG Param1,
73 ObGetObjectPointerCount(IN PVOID Object
);
76 ObGetObjectSecurity(IN PVOID Object
,
77 OUT PSECURITY_DESCRIPTOR
*SecurityDescriptor
,
78 OUT PBOOLEAN MemoryAllocated
);
81 ObInsertObject(IN PVOID Object
,
82 IN PACCESS_STATE PassedAccessState OPTIONAL
,
83 IN ACCESS_MASK DesiredAccess
,
84 IN ULONG AdditionalReferences
,
85 OUT PVOID
* ReferencedObject OPTIONAL
,
89 ObMakeTemporaryObject(IN PVOID ObjectBody
);
92 ObOpenObjectByName(IN POBJECT_ATTRIBUTES ObjectAttributes
,
93 IN POBJECT_TYPE ObjectType
,
94 IN OUT PVOID ParseContext OPTIONAL
,
95 IN KPROCESSOR_MODE AccessMode
,
96 IN ACCESS_MASK DesiredAccess
,
97 IN PACCESS_STATE PassedAccessState
,
101 ObOpenObjectByPointer(IN PVOID Object
,
102 IN ULONG HandleAttributes
,
103 IN PACCESS_STATE PassedAccessState OPTIONAL
,
104 IN ACCESS_MASK DesiredAccess OPTIONAL
,
105 IN POBJECT_TYPE ObjectType OPTIONAL
,
106 IN KPROCESSOR_MODE AccessMode
,
110 ObQueryNameString(IN PVOID Object
,
111 OUT POBJECT_NAME_INFORMATION ObjectNameInfo
,
113 OUT PULONG ReturnLength
);
116 ObQueryObjectAuditingByHandle(IN HANDLE Handle
,
117 OUT PBOOLEAN GenerateOnClose
);
120 * FUNCTION: Performs access validation on an object handle and if access
121 * is granted returns a pointer to the object's body
123 * Handle = Handle to the object
124 * DesiredAccess = Desired access to the object
125 * ObjectType (OPTIONAL) = Pointer to the object's type definition
126 * AccessMode = Access mode to use for the check
127 * Object (OUT) = Caller supplied storage for a pointer to the object's
129 * HandleInformation (OUT) = Points to a structure which receives
130 * information about the handle
134 ObReferenceObjectByHandle(IN HANDLE Handle
,
135 IN ACCESS_MASK DesiredAccess
,
136 IN POBJECT_TYPE ObjectType OPTIONAL
,
137 IN KPROCESSOR_MODE AccessMode
,
139 OUT POBJECT_HANDLE_INFORMATION HandleInfo OPTIONAL
);
142 * FUNCTION: Increments the reference count for a given object
144 * Object = Points to the body of the object
145 * AccessMode = Requested access to the object
146 * ObjectType = Pointer to the object's type definition
147 * AccessMode = Access mode to use for the security check
151 ObReferenceObjectByPointer(IN PVOID Object
,
152 IN ACCESS_MASK DesiredAccess
,
153 IN POBJECT_TYPE ObjectType
,
154 IN KPROCESSOR_MODE AccessMode
);
157 ObReferenceObjectByName(IN PUNICODE_STRING ObjectPath
,
159 IN PACCESS_STATE PassedAccessState OPTIONAL
,
160 IN ACCESS_MASK DesiredAccess OPTIONAL
,
161 IN POBJECT_TYPE ObjectType
,
162 IN KPROCESSOR_MODE AccessMode
,
163 IN OUT PVOID ParseContext OPTIONAL
,
164 OUT PVOID
* ObjectPtr
);
167 ObReleaseObjectSecurity(IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
168 IN BOOLEAN MemoryAllocated
);
172 ObSetSecurityDescriptorInfo(IN PVOID Object,
173 IN PSECURITY_INFORMATION SecurityInformation,
174 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
176 IN POOL_TYPE PoolType,
177 IN PGENERIC_MAPPING GenericMapping);
180 #endif /* ndef _INCLUDE_DDK_OBFUNCS_H */