:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / include / ddk / obfuncs.h
1 #ifndef _INCLUDE_DDK_OBFUNCS_H
2 #define _INCLUDE_DDK_OBFUNCS_H
3 /* OBJECT MANAGER ************************************************************/
4
5 NTSTATUS STDCALL
6 ObAssignSecurity(IN PACCESS_STATE AccessState,
7                  IN PSECURITY_DESCRIPTOR SecurityDescriptor,
8                  IN PVOID Object,
9                  IN POBJECT_TYPE Type);
10
11 /*
12 BOOLEAN STDCALL
13 ObCheckCreateObjectAccess(IN PVOID Object,
14                           IN ACCESS_MASK DesiredAccess,
15                           ULONG Param3,
16                           ULONG Param4,
17                           ULONG Param5,
18                           IN KPROCESSOR_MODE AccessMode,
19                           OUT PNTSTATUS AccessStatus);
20 */
21
22 /*
23 BOOLEAN STDCALL
24 ObCheckObjectAccess(IN PVOID Object,
25                     ULONG Param2,
26                     ULONG Param3,
27                     IN KPROCESSOR_MODE AccessMode,
28                     OUT PACCESS_MODE GrantedAccess);
29 */
30
31 NTSTATUS STDCALL
32 ObCreateObject(OUT PHANDLE Handle,
33                IN ACCESS_MASK DesiredAccess,
34                IN POBJECT_ATTRIBUTES ObjectAttributes,
35                IN POBJECT_TYPE Type,
36                OUT PVOID *Object);
37
38 #if 0
39 /* original implementation */
40 NTSTATUS STDCALL
41 ObCreateObject(IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL,
42                IN POBJECT_TYPE Type,
43                IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
44                IN KPROCESSOR_MODE AccessMode,
45                IN OUT PVOID ParseContext OPTIONAL,
46                IN ULONG ObjectSize,
47                IN ULONG PagedPoolCharge OPTIONAL,
48                IN ULONG NonPagedPoolCharge OPTIONAL,
49                OUT PVOID *Object);
50 #endif
51
52 VOID FASTCALL
53 ObfDereferenceObject(IN PVOID Object);
54
55 VOID FASTCALL
56 ObfReferenceObject(IN PVOID Object);
57
58 #define ObDereferenceObject(Object) \
59   ObfDereferenceObject(Object)
60
61 #define ObReferenceObject(Object) \
62   ObfReferenceObject(Object)
63
64 /*
65 BOOLEAN STDCALL
66 ObFindHandleForObject(ULONG Param1,
67                       ULONG Param2,
68                       ULONG Param3,
69                       ULONG Param4);
70 */
71
72 ULONG STDCALL
73 ObGetObjectPointerCount(IN PVOID Object);
74
75 NTSTATUS STDCALL
76 ObGetObjectSecurity(IN PVOID Object,
77                     OUT PSECURITY_DESCRIPTOR *SecurityDescriptor,
78                     OUT PBOOLEAN MemoryAllocated);
79
80 NTSTATUS STDCALL
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,
86                OUT PHANDLE Handle);
87
88 VOID STDCALL
89 ObMakeTemporaryObject(IN PVOID ObjectBody);
90
91 NTSTATUS STDCALL
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,
98                    OUT PHANDLE Handle);
99
100 NTSTATUS STDCALL
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,
107                       OUT PHANDLE Handle);
108
109 NTSTATUS STDCALL
110 ObQueryNameString(IN PVOID Object,
111                   OUT POBJECT_NAME_INFORMATION ObjectNameInfo,
112                   IN ULONG Length,
113                   OUT PULONG ReturnLength);
114
115 NTSTATUS STDCALL
116 ObQueryObjectAuditingByHandle(IN HANDLE Handle,
117                               OUT PBOOLEAN GenerateOnClose);
118
119 /*
120  * FUNCTION: Performs access validation on an object handle and if access
121  * is granted returns a pointer to the object's body
122  * ARGUMENTS:
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
128  *                        body
129  *         HandleInformation (OUT) = Points to a structure which receives
130  *                                   information about the handle
131  * RETURNS: Status
132  */
133 NTSTATUS STDCALL
134 ObReferenceObjectByHandle(IN HANDLE Handle,
135                           IN ACCESS_MASK DesiredAccess,
136                           IN POBJECT_TYPE ObjectType OPTIONAL,
137                           IN KPROCESSOR_MODE AccessMode,
138                           OUT PVOID* Object,
139                           OUT POBJECT_HANDLE_INFORMATION HandleInfo OPTIONAL);
140
141 /*
142  * FUNCTION: Increments the reference count for a given object
143  * ARGUMENTS:
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
148  * RETURNS: Status
149  */
150 NTSTATUS STDCALL
151 ObReferenceObjectByPointer(IN PVOID Object,
152                            IN ACCESS_MASK DesiredAccess,
153                            IN POBJECT_TYPE ObjectType,
154                            IN KPROCESSOR_MODE AccessMode);
155
156 NTSTATUS STDCALL
157 ObReferenceObjectByName(IN PUNICODE_STRING ObjectPath,
158                         IN ULONG Attributes,
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);
165
166 VOID STDCALL
167 ObReleaseObjectSecurity(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
168                         IN BOOLEAN MemoryAllocated);
169
170 /*
171 NTSTATUS STDCALL
172 ObSetSecurityDescriptorInfo(IN PVOID Object,
173                             IN PSECURITY_INFORMATION SecurityInformation,
174                             IN PSECURITY_DESCRIPTOR SecurityDescriptor,
175                             ULONG Param4,
176                             IN POOL_TYPE PoolType,
177                             IN PGENERIC_MAPPING GenericMapping);
178 */
179
180 #endif /* ndef _INCLUDE_DDK_OBFUNCS_H */