- Fix shamefully dangerously broken Work Thread/Queue/Item implementation:
[reactos.git] / reactos / include / ndk / obfuncs.h
1 /*++ NDK Version: 0095
2
3 Copyright (c) Alex Ionescu. All rights reserved.
4
5 Header Name:
6
7 obtypes.h
8
9 Abstract:
10
11 Type definitions for the Object Manager
12
13 Author:
14
15 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
16
17 --*/
18
19 #ifndef _OBFUNCS_H
20 #define _OBFUNCS_H
21
22 //
23 // Dependencies
24 //
25 #include <umtypes.h>
26
27 #ifndef NTOS_MODE_USER
28
29 //
30 // Object Functions
31 //
32 NTSTATUS
33 NTAPI
34 ObCreateObject(
35 IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL,
36 IN POBJECT_TYPE ObjectType,
37 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
38 IN KPROCESSOR_MODE AccessMode,
39 IN OUT PVOID ParseContext OPTIONAL,
40 IN ULONG ObjectSize,
41 IN ULONG PagedPoolCharge OPTIONAL,
42 IN ULONG NonPagedPoolCharge OPTIONAL,
43 OUT PVOID *Object
44 );
45
46 ULONG
47 NTAPI
48 ObGetObjectPointerCount(
49 IN PVOID Object
50 );
51
52 NTSTATUS
53 NTAPI
54 ObReferenceObjectByName(
55 IN PUNICODE_STRING ObjectName,
56 IN ULONG Attributes,
57 IN PACCESS_STATE PassedAccessState OPTIONAL,
58 IN ACCESS_MASK DesiredAccess OPTIONAL,
59 IN POBJECT_TYPE ObjectType,
60 IN KPROCESSOR_MODE AccessMode,
61 IN OUT PVOID ParseContext OPTIONAL,
62 OUT PVOID *Object
63 );
64
65 NTSTATUS
66 NTAPI
67 ObFindHandleForObject(
68 IN PEPROCESS Process,
69 IN PVOID Object,
70 IN POBJECT_TYPE ObjectType,
71 IN POBJECT_HANDLE_INFORMATION HandleInformation,
72 OUT PHANDLE Handle
73 );
74
75 #endif
76
77 //
78 // Native Calls
79 //
80 NTSYSCALLAPI
81 NTSTATUS
82 NTAPI
83 NtClose(
84 IN HANDLE Handle
85 );
86
87 NTSYSCALLAPI
88 NTSTATUS
89 NTAPI
90 NtCloseObjectAuditAlarm(
91 IN PUNICODE_STRING SubsystemName,
92 IN PVOID HandleId,
93 IN BOOLEAN GenerateOnClose
94 );
95
96 NTSTATUS
97 NTAPI
98 NtCreateDirectoryObject(
99 OUT PHANDLE DirectoryHandle,
100 IN ACCESS_MASK DesiredAccess,
101 IN POBJECT_ATTRIBUTES ObjectAttributes
102 );
103
104 NTSTATUS
105 NTAPI
106 NtCreateSymbolicLinkObject(
107 OUT PHANDLE SymbolicLinkHandle,
108 IN ACCESS_MASK DesiredAccess,
109 IN POBJECT_ATTRIBUTES ObjectAttributes,
110 IN PUNICODE_STRING Name
111 );
112
113 NTSYSAPI
114 NTSTATUS
115 NTAPI
116 NtDeleteObjectAuditAlarm(
117 IN PUNICODE_STRING SubsystemName,
118 IN PVOID HandleId,
119 IN BOOLEAN GenerateOnClose
120 );
121
122 NTSTATUS
123 NTAPI
124 NtDuplicateObject(
125 IN HANDLE SourceProcessHandle,
126 IN HANDLE SourceHandle,
127 IN HANDLE TargetProcessHandle,
128 OUT PHANDLE TargetHandle,
129 IN ACCESS_MASK DesiredAccess,
130 IN ULONG HandleAttributes,
131 IN ULONG Options
132 );
133
134 NTSTATUS
135 NTAPI
136 NtMakePermanentObject(
137 IN HANDLE Object
138 );
139
140 NTSTATUS
141 NTAPI
142 NtMakeTemporaryObject(
143 IN HANDLE Handle
144 );
145
146 NTSTATUS
147 NTAPI
148 NtOpenDirectoryObject(
149 OUT PHANDLE FileHandle,
150 IN ACCESS_MASK DesiredAccess,
151 IN POBJECT_ATTRIBUTES ObjectAttributes
152 );
153
154 NTSTATUS
155 NTAPI
156 NtOpenJobObject(
157 PHANDLE JobHandle,
158 ACCESS_MASK DesiredAccess,
159 POBJECT_ATTRIBUTES ObjectAttributes
160 );
161
162 NTSTATUS
163 NTAPI
164 NtOpenSymbolicLinkObject(
165 OUT PHANDLE SymbolicLinkHandle,
166 IN ACCESS_MASK DesiredAccess,
167 IN POBJECT_ATTRIBUTES ObjectAttributes
168 );
169
170 NTSTATUS
171 NTAPI
172 NtQueryDirectoryObject(
173 IN HANDLE DirectoryHandle,
174 OUT PVOID Buffer,
175 IN ULONG BufferLength,
176 IN BOOLEAN ReturnSingleEntry,
177 IN BOOLEAN RestartScan,
178 IN OUT PULONG Context,
179 OUT PULONG ReturnLength OPTIONAL
180 );
181
182 NTSTATUS
183 NTAPI
184 NtQueryObject(
185 IN HANDLE ObjectHandle,
186 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
187 OUT PVOID ObjectInformation,
188 IN ULONG Length,
189 OUT PULONG ResultLength OPTIONAL
190 );
191
192 NTSYSCALLAPI
193 NTSTATUS
194 NTAPI
195 NtQuerySecurityObject(
196 IN HANDLE Handle,
197 IN SECURITY_INFORMATION SecurityInformation,
198 OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
199 IN ULONG Length,
200 OUT PULONG ResultLength
201 );
202
203 NTSTATUS
204 NTAPI
205 NtQuerySymbolicLinkObject(
206 IN HANDLE SymLinkObjHandle,
207 OUT PUNICODE_STRING LinkTarget,
208 OUT PULONG DataWritten OPTIONAL
209 );
210
211 NTSTATUS
212 NTAPI
213 NtSetInformationObject(
214 IN HANDLE ObjectHandle,
215 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
216 IN PVOID ObjectInformation,
217 IN ULONG Length
218 );
219
220 NTSYSCALLAPI
221 NTSTATUS
222 NTAPI
223 NtSetSecurityObject(
224 IN HANDLE Handle,
225 IN SECURITY_INFORMATION SecurityInformation,
226 IN PSECURITY_DESCRIPTOR SecurityDescriptor
227 );
228
229 NTSTATUS
230 NTAPI
231 NtSignalAndWaitForSingleObject(
232 IN HANDLE SignalObject,
233 IN HANDLE WaitObject,
234 IN BOOLEAN Alertable,
235 IN PLARGE_INTEGER Time
236 );
237
238 NTSTATUS
239 NTAPI
240 NtWaitForMultipleObjects(
241 IN ULONG Count,
242 IN HANDLE Object[],
243 IN WAIT_TYPE WaitType,
244 IN BOOLEAN Alertable,
245 IN PLARGE_INTEGER Time
246 );
247
248 NTSTATUS
249 NTAPI
250 NtWaitForSingleObject(
251 IN HANDLE Object,
252 IN BOOLEAN Alertable,
253 IN PLARGE_INTEGER Time
254 );
255
256 NTSYSCALLAPI
257 NTSTATUS
258 NTAPI
259 ZwClose(
260 IN HANDLE Handle
261 );
262
263 NTSYSCALLAPI
264 NTSTATUS
265 NTAPI
266 ZwCloseObjectAuditAlarm(
267 IN PUNICODE_STRING SubsystemName,
268 IN PVOID HandleId,
269 IN BOOLEAN GenerateOnClose
270 );
271
272 NTSYSAPI
273 NTSTATUS
274 NTAPI
275 ZwCreateDirectoryObject(
276 OUT PHANDLE DirectoryHandle,
277 IN ACCESS_MASK DesiredAccess,
278 IN POBJECT_ATTRIBUTES ObjectAttributes
279 );
280
281 NTSTATUS
282 NTAPI
283 ZwCreateSymbolicLinkObject(
284 OUT PHANDLE SymbolicLinkHandle,
285 IN ACCESS_MASK DesiredAccess,
286 IN POBJECT_ATTRIBUTES ObjectAttributes,
287 IN PUNICODE_STRING Name
288 );
289
290 NTSYSAPI
291 NTSTATUS
292 NTAPI
293 ZwDeleteObjectAuditAlarm(
294 IN PUNICODE_STRING SubsystemName,
295 IN PVOID HandleId,
296 IN BOOLEAN GenerateOnClose
297 );
298
299 NTSYSAPI
300 NTSTATUS
301 NTAPI
302 ZwDuplicateObject(
303 IN HANDLE SourceProcessHandle,
304 IN HANDLE SourceHandle,
305 IN HANDLE TargetProcessHandle,
306 OUT PHANDLE TargetHandle,
307 IN ACCESS_MASK DesiredAccess,
308 IN ULONG HandleAttributes,
309 IN ULONG Options
310 );
311
312 NTSTATUS
313 NTAPI
314 ZwMakePermanentObject(
315 IN HANDLE Object
316 );
317
318 NTSYSAPI
319 NTSTATUS
320 NTAPI
321 ZwMakeTemporaryObject(
322 IN HANDLE Handle
323 );
324
325 NTSYSAPI
326 NTSTATUS
327 NTAPI
328 ZwOpenDirectoryObject(
329 OUT PHANDLE FileHandle,
330 IN ACCESS_MASK DesiredAccess,
331 IN POBJECT_ATTRIBUTES ObjectAttributes
332 );
333
334 NTSTATUS
335 NTAPI
336 ZwOpenJobObject(
337 PHANDLE JobHandle,
338 ACCESS_MASK DesiredAccess,
339 POBJECT_ATTRIBUTES ObjectAttributes
340 );
341
342 NTSYSAPI
343 NTSTATUS
344 NTAPI
345 ZwOpenSymbolicLinkObject(
346 OUT PHANDLE SymbolicLinkHandle,
347 IN ACCESS_MASK DesiredAccess,
348 IN POBJECT_ATTRIBUTES ObjectAttributes
349 );
350
351 NTSTATUS
352 NTAPI
353 ZwQueryDirectoryObject(
354 IN HANDLE DirectoryHandle,
355 OUT PVOID Buffer,
356 IN ULONG BufferLength,
357 IN BOOLEAN ReturnSingleEntry,
358 IN BOOLEAN RestartScan,
359 IN OUT PULONG Context,
360 OUT PULONG ReturnLength OPTIONAL
361 );
362
363 NTSTATUS
364 NTAPI
365 ZwQueryObject(
366 IN HANDLE ObjectHandle,
367 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
368 OUT PVOID ObjectInformation,
369 IN ULONG Length,
370 OUT PULONG ResultLength OPTIONAL
371 );
372
373 NTSYSCALLAPI
374 NTSTATUS
375 NTAPI
376 ZwQuerySecurityObject(
377 IN HANDLE Handle,
378 IN SECURITY_INFORMATION SecurityInformation,
379 OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
380 IN ULONG Length,
381 OUT PULONG ResultLength
382 );
383
384 NTSYSAPI
385 NTSTATUS
386 NTAPI
387 ZwQuerySymbolicLinkObject(
388 IN HANDLE SymLinkObjHandle,
389 OUT PUNICODE_STRING LinkTarget,
390 OUT PULONG DataWritten OPTIONAL
391 );
392
393 NTSTATUS
394 NTAPI
395 ZwSetInformationObject(
396 IN HANDLE ObjectHandle,
397 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
398 IN PVOID ObjectInformation,
399 IN ULONG Length
400 );
401
402 NTSYSCALLAPI
403 NTSTATUS
404 NTAPI
405 ZwSetSecurityObject(
406 IN HANDLE Handle,
407 IN SECURITY_INFORMATION SecurityInformation,
408 IN PSECURITY_DESCRIPTOR SecurityDescriptor
409 );
410
411 NTSTATUS
412 NTAPI
413 ZwSignalAndWaitForSingleObject(
414 IN HANDLE SignalObject,
415 IN HANDLE WaitObject,
416 IN BOOLEAN Alertable,
417 IN PLARGE_INTEGER Time
418 );
419
420 NTSTATUS
421 NTAPI
422 ZwWaitForMultipleObjects(
423 IN ULONG Count,
424 IN HANDLE Object[],
425 IN WAIT_TYPE WaitType,
426 IN BOOLEAN Alertable,
427 IN PLARGE_INTEGER Time
428 );
429
430 NTSYSAPI
431 NTSTATUS
432 NTAPI
433 ZwWaitForSingleObject(
434 IN HANDLE Object,
435 IN BOOLEAN Alertable,
436 IN PLARGE_INTEGER Time
437 );
438
439 #endif