- Move NCI generated files to arch-specific directories
[reactos.git] / reactos / include / ndk / obfuncs.h
1 /*++ NDK Version: 0098
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 (alexi@tinykrnl.org) - Updated - 27-Feb-2006
16
17 --*/
18
19 #ifndef _OBFUNCS_H
20 #define _OBFUNCS_H
21
22 //
23 // Dependencies
24 //
25 #include <umtypes.h>
26 #include <pstypes.h>
27 #include <obtypes.h>
28
29 #ifndef NTOS_MODE_USER
30
31 //
32 // Object Functions
33 //
34 NTKERNELAPI
35 NTSTATUS
36 NTAPI
37 ObAssignSecurity(
38 IN PACCESS_STATE AccessState,
39 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
40 IN PVOID Object,
41 IN POBJECT_TYPE Type
42 );
43
44 NTKERNELAPI
45 NTSTATUS
46 NTAPI
47 ObCloseHandle(
48 IN HANDLE Handle,
49 IN KPROCESSOR_MODE AccessMode
50 );
51
52 NTKERNELAPI
53 NTSTATUS
54 NTAPI
55 ObCreateObject(
56 IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL,
57 IN POBJECT_TYPE ObjectType,
58 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
59 IN KPROCESSOR_MODE AccessMode,
60 IN OUT PVOID ParseContext OPTIONAL,
61 IN ULONG ObjectSize,
62 IN ULONG PagedPoolCharge OPTIONAL,
63 IN ULONG NonPagedPoolCharge OPTIONAL,
64 OUT PVOID *Object
65 );
66
67 NTKERNELAPI
68 NTSTATUS
69 NTAPI
70 ObCreateObjectType(
71 IN PUNICODE_STRING TypeName,
72 IN POBJECT_TYPE_INITIALIZER ObjectTypeInitializer,
73 IN PVOID Reserved,
74 OUT POBJECT_TYPE *ObjectType
75 );
76
77 NTKERNELAPI
78 ULONG
79 NTAPI
80 ObGetObjectPointerCount(
81 IN PVOID Object
82 );
83
84 NTKERNELAPI
85 NTSTATUS
86 NTAPI
87 ObOpenObjectByName(
88 IN POBJECT_ATTRIBUTES ObjectAttributes,
89 IN POBJECT_TYPE ObjectType,
90 IN KPROCESSOR_MODE AccessMode,
91 IN PACCESS_STATE PassedAccessState,
92 IN ACCESS_MASK DesiredAccess,
93 IN OUT PVOID ParseContext,
94 OUT PHANDLE Handle
95 );
96
97 NTKERNELAPI
98 NTSTATUS
99 NTAPI
100 ObReferenceObjectByName(
101 IN PUNICODE_STRING ObjectName,
102 IN ULONG Attributes,
103 IN PACCESS_STATE PassedAccessState OPTIONAL,
104 IN ACCESS_MASK DesiredAccess OPTIONAL,
105 IN POBJECT_TYPE ObjectType,
106 IN KPROCESSOR_MODE AccessMode,
107 IN OUT PVOID ParseContext OPTIONAL,
108 OUT PVOID *Object
109 );
110
111 NTKERNELAPI
112 BOOLEAN
113 NTAPI
114 ObFindHandleForObject(
115 IN PEPROCESS Process,
116 IN PVOID Object,
117 IN POBJECT_TYPE ObjectType,
118 IN POBJECT_HANDLE_INFORMATION HandleInformation,
119 OUT PHANDLE Handle
120 );
121
122 VOID
123 NTAPI
124 ObDereferenceObjectDeferDelete(
125 IN PVOID Object
126 );
127
128 #endif
129
130 //
131 // Native Calls
132 //
133 NTSYSCALLAPI
134 NTSTATUS
135 NTAPI
136 NtClose(
137 IN HANDLE Handle
138 );
139
140 NTSYSCALLAPI
141 NTSTATUS
142 NTAPI
143 NtCloseObjectAuditAlarm(
144 IN PUNICODE_STRING SubsystemName,
145 IN PVOID HandleId,
146 IN BOOLEAN GenerateOnClose
147 );
148
149 NTSYSCALLAPI
150 NTSTATUS
151 NTAPI
152 NtCreateDirectoryObject(
153 OUT PHANDLE DirectoryHandle,
154 IN ACCESS_MASK DesiredAccess,
155 IN POBJECT_ATTRIBUTES ObjectAttributes
156 );
157
158 NTSYSCALLAPI
159 NTSTATUS
160 NTAPI
161 NtCreateSymbolicLinkObject(
162 OUT PHANDLE SymbolicLinkHandle,
163 IN ACCESS_MASK DesiredAccess,
164 IN POBJECT_ATTRIBUTES ObjectAttributes,
165 IN PUNICODE_STRING Name
166 );
167
168 NTSYSCALLAPI
169 NTSTATUS
170 NTAPI
171 NtDeleteObjectAuditAlarm(
172 IN PUNICODE_STRING SubsystemName,
173 IN PVOID HandleId,
174 IN BOOLEAN GenerateOnClose
175 );
176
177 NTSYSCALLAPI
178 NTSTATUS
179 NTAPI
180 NtDuplicateObject(
181 IN HANDLE SourceProcessHandle,
182 IN HANDLE SourceHandle,
183 IN HANDLE TargetProcessHandle,
184 OUT PHANDLE TargetHandle,
185 IN ACCESS_MASK DesiredAccess,
186 IN ULONG HandleAttributes,
187 IN ULONG Options
188 );
189
190 NTSYSCALLAPI
191 NTSTATUS
192 NTAPI
193 NtMakePermanentObject(
194 IN HANDLE Object
195 );
196
197 NTSYSCALLAPI
198 NTSTATUS
199 NTAPI
200 NtMakeTemporaryObject(
201 IN HANDLE Handle
202 );
203
204 NTSYSCALLAPI
205 NTSTATUS
206 NTAPI
207 NtOpenDirectoryObject(
208 OUT PHANDLE FileHandle,
209 IN ACCESS_MASK DesiredAccess,
210 IN POBJECT_ATTRIBUTES ObjectAttributes
211 );
212
213 NTSYSCALLAPI
214 NTSTATUS
215 NTAPI
216 NtOpenJobObject(
217 PHANDLE JobHandle,
218 ACCESS_MASK DesiredAccess,
219 POBJECT_ATTRIBUTES ObjectAttributes
220 );
221
222 NTSYSCALLAPI
223 NTSTATUS
224 NTAPI
225 NtOpenSymbolicLinkObject(
226 OUT PHANDLE SymbolicLinkHandle,
227 IN ACCESS_MASK DesiredAccess,
228 IN POBJECT_ATTRIBUTES ObjectAttributes
229 );
230
231 NTSYSCALLAPI
232 NTSTATUS
233 NTAPI
234 NtQueryDirectoryObject(
235 IN HANDLE DirectoryHandle,
236 OUT PVOID Buffer,
237 IN ULONG BufferLength,
238 IN BOOLEAN ReturnSingleEntry,
239 IN BOOLEAN RestartScan,
240 IN OUT PULONG Context,
241 OUT PULONG ReturnLength OPTIONAL
242 );
243
244 NTSYSCALLAPI
245 NTSTATUS
246 NTAPI
247 NtQueryObject(
248 IN HANDLE ObjectHandle,
249 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
250 OUT PVOID ObjectInformation,
251 IN ULONG Length,
252 OUT PULONG ResultLength OPTIONAL
253 );
254
255 NTSYSCALLAPI
256 NTSTATUS
257 NTAPI
258 NtQuerySecurityObject(
259 IN HANDLE Handle,
260 IN SECURITY_INFORMATION SecurityInformation,
261 OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
262 IN ULONG Length,
263 OUT PULONG ResultLength
264 );
265
266 NTSYSCALLAPI
267 NTSTATUS
268 NTAPI
269 NtQuerySymbolicLinkObject(
270 IN HANDLE SymLinkObjHandle,
271 OUT PUNICODE_STRING LinkTarget,
272 OUT PULONG DataWritten OPTIONAL
273 );
274
275 NTSYSCALLAPI
276 NTSTATUS
277 NTAPI
278 NtSetInformationObject(
279 IN HANDLE ObjectHandle,
280 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
281 IN PVOID ObjectInformation,
282 IN ULONG Length
283 );
284
285 NTSYSCALLAPI
286 NTSTATUS
287 NTAPI
288 NtSetSecurityObject(
289 IN HANDLE Handle,
290 IN SECURITY_INFORMATION SecurityInformation,
291 IN PSECURITY_DESCRIPTOR SecurityDescriptor
292 );
293
294 NTSYSCALLAPI
295 NTSTATUS
296 NTAPI
297 NtSignalAndWaitForSingleObject(
298 IN HANDLE SignalObject,
299 IN HANDLE WaitObject,
300 IN BOOLEAN Alertable,
301 IN PLARGE_INTEGER Time
302 );
303
304 NTSYSCALLAPI
305 NTSTATUS
306 NTAPI
307 NtWaitForMultipleObjects(
308 IN ULONG Count,
309 IN HANDLE Object[],
310 IN WAIT_TYPE WaitType,
311 IN BOOLEAN Alertable,
312 IN PLARGE_INTEGER Time
313 );
314
315 NTSTATUS
316 NTAPI
317 NtWaitForMultipleObjects32(
318 IN ULONG ObjectCount,
319 IN PLONG Handles,
320 IN WAIT_TYPE WaitType,
321 IN BOOLEAN Alertable,
322 IN PLARGE_INTEGER TimeOut OPTIONAL
323 );
324
325 NTSYSCALLAPI
326 NTSTATUS
327 NTAPI
328 NtWaitForSingleObject(
329 IN HANDLE Object,
330 IN BOOLEAN Alertable,
331 IN PLARGE_INTEGER Time
332 );
333
334 NTSYSAPI
335 NTSTATUS
336 NTAPI
337 ZwClose(
338 IN HANDLE Handle
339 );
340
341 NTSYSAPI
342 NTSTATUS
343 NTAPI
344 ZwCloseObjectAuditAlarm(
345 IN PUNICODE_STRING SubsystemName,
346 IN PVOID HandleId,
347 IN BOOLEAN GenerateOnClose
348 );
349
350 NTSYSAPI
351 NTSTATUS
352 NTAPI
353 ZwCreateDirectoryObject(
354 OUT PHANDLE DirectoryHandle,
355 IN ACCESS_MASK DesiredAccess,
356 IN POBJECT_ATTRIBUTES ObjectAttributes
357 );
358
359 NTSYSAPI
360 NTSTATUS
361 NTAPI
362 ZwCreateSymbolicLinkObject(
363 OUT PHANDLE SymbolicLinkHandle,
364 IN ACCESS_MASK DesiredAccess,
365 IN POBJECT_ATTRIBUTES ObjectAttributes,
366 IN PUNICODE_STRING Name
367 );
368
369 NTSYSAPI
370 NTSTATUS
371 NTAPI
372 ZwDeleteObjectAuditAlarm(
373 IN PUNICODE_STRING SubsystemName,
374 IN PVOID HandleId,
375 IN BOOLEAN GenerateOnClose
376 );
377
378 NTSYSAPI
379 NTSTATUS
380 NTAPI
381 ZwDuplicateObject(
382 IN HANDLE SourceProcessHandle,
383 IN HANDLE SourceHandle,
384 IN HANDLE TargetProcessHandle,
385 OUT PHANDLE TargetHandle,
386 IN ACCESS_MASK DesiredAccess,
387 IN ULONG HandleAttributes,
388 IN ULONG Options
389 );
390
391 NTSYSAPI
392 NTSTATUS
393 NTAPI
394 ZwMakePermanentObject(
395 IN HANDLE Object
396 );
397
398 NTSYSAPI
399 NTSTATUS
400 NTAPI
401 ZwMakeTemporaryObject(
402 IN HANDLE Handle
403 );
404
405 NTSYSAPI
406 NTSTATUS
407 NTAPI
408 ZwOpenDirectoryObject(
409 OUT PHANDLE FileHandle,
410 IN ACCESS_MASK DesiredAccess,
411 IN POBJECT_ATTRIBUTES ObjectAttributes
412 );
413
414 NTSYSAPI
415 NTSTATUS
416 NTAPI
417 ZwOpenJobObject(
418 PHANDLE JobHandle,
419 ACCESS_MASK DesiredAccess,
420 POBJECT_ATTRIBUTES ObjectAttributes
421 );
422
423 NTSYSAPI
424 NTSTATUS
425 NTAPI
426 ZwOpenSymbolicLinkObject(
427 OUT PHANDLE SymbolicLinkHandle,
428 IN ACCESS_MASK DesiredAccess,
429 IN POBJECT_ATTRIBUTES ObjectAttributes
430 );
431
432 NTSYSAPI
433 NTSTATUS
434 NTAPI
435 ZwQueryDirectoryObject(
436 IN HANDLE DirectoryHandle,
437 OUT PVOID Buffer,
438 IN ULONG BufferLength,
439 IN BOOLEAN ReturnSingleEntry,
440 IN BOOLEAN RestartScan,
441 IN OUT PULONG Context,
442 OUT PULONG ReturnLength OPTIONAL
443 );
444
445 NTSYSAPI
446 NTSTATUS
447 NTAPI
448 ZwQueryObject(
449 IN HANDLE ObjectHandle,
450 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
451 OUT PVOID ObjectInformation,
452 IN ULONG Length,
453 OUT PULONG ResultLength OPTIONAL
454 );
455
456 NTSYSAPI
457 NTSTATUS
458 NTAPI
459 ZwQuerySecurityObject(
460 IN HANDLE Handle,
461 IN SECURITY_INFORMATION SecurityInformation,
462 OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
463 IN ULONG Length,
464 OUT PULONG ResultLength
465 );
466
467 NTSYSAPI
468 NTSTATUS
469 NTAPI
470 ZwQuerySymbolicLinkObject(
471 IN HANDLE SymLinkObjHandle,
472 OUT PUNICODE_STRING LinkTarget,
473 OUT PULONG DataWritten OPTIONAL
474 );
475
476 NTSYSAPI
477 NTSTATUS
478 NTAPI
479 ZwSetInformationObject(
480 IN HANDLE ObjectHandle,
481 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
482 IN PVOID ObjectInformation,
483 IN ULONG Length
484 );
485
486 NTSYSAPI
487 NTSTATUS
488 NTAPI
489 ZwSetSecurityObject(
490 IN HANDLE Handle,
491 IN SECURITY_INFORMATION SecurityInformation,
492 IN PSECURITY_DESCRIPTOR SecurityDescriptor
493 );
494
495 NTSYSAPI
496 NTSTATUS
497 NTAPI
498 ZwSignalAndWaitForSingleObject(
499 IN HANDLE SignalObject,
500 IN HANDLE WaitObject,
501 IN BOOLEAN Alertable,
502 IN PLARGE_INTEGER Time
503 );
504
505 NTSYSAPI
506 NTSTATUS
507 NTAPI
508 ZwWaitForMultipleObjects(
509 IN ULONG Count,
510 IN HANDLE Object[],
511 IN WAIT_TYPE WaitType,
512 IN BOOLEAN Alertable,
513 IN PLARGE_INTEGER Time
514 );
515
516 NTSYSAPI
517 NTSTATUS
518 NTAPI
519 ZwWaitForSingleObject(
520 IN HANDLE Object,
521 IN BOOLEAN Alertable,
522 IN PLARGE_INTEGER Time
523 );
524
525 #endif