Added required defines and typedefs for ntoskrnl/io modules.
[reactos.git] / reactos / 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 */