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 */