Visual C++ backend for rbuild (for now just a hacked mingw backend) and related compi...
[reactos.git] / 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 NTSTATUS
113 NTAPI
114 ObSetSecurityObjectByPointer(
115 IN PVOID Object,
116 IN SECURITY_INFORMATION SecurityInformation,
117 IN PSECURITY_DESCRIPTOR SecurityDescriptor
118 );
119
120 NTKERNELAPI
121 BOOLEAN
122 NTAPI
123 ObFindHandleForObject(
124 IN PEPROCESS Process,
125 IN PVOID Object,
126 IN POBJECT_TYPE ObjectType,
127 IN POBJECT_HANDLE_INFORMATION HandleInformation,
128 OUT PHANDLE Handle
129 );
130
131 VOID
132 NTAPI
133 ObDereferenceObjectDeferDelete(
134 IN PVOID Object
135 );
136
137 #endif
138
139 //
140 // Native Calls
141 //
142 NTSYSCALLAPI
143 NTSTATUS
144 NTAPI
145 NtClose(
146 IN HANDLE Handle
147 );
148
149 NTSYSCALLAPI
150 NTSTATUS
151 NTAPI
152 NtCloseObjectAuditAlarm(
153 IN PUNICODE_STRING SubsystemName,
154 IN PVOID HandleId,
155 IN BOOLEAN GenerateOnClose
156 );
157
158 NTSYSCALLAPI
159 NTSTATUS
160 NTAPI
161 NtCreateDirectoryObject(
162 OUT PHANDLE DirectoryHandle,
163 IN ACCESS_MASK DesiredAccess,
164 IN POBJECT_ATTRIBUTES ObjectAttributes
165 );
166
167 NTSYSCALLAPI
168 NTSTATUS
169 NTAPI
170 NtCreateSymbolicLinkObject(
171 OUT PHANDLE SymbolicLinkHandle,
172 IN ACCESS_MASK DesiredAccess,
173 IN POBJECT_ATTRIBUTES ObjectAttributes,
174 IN PUNICODE_STRING Name
175 );
176
177 NTSYSCALLAPI
178 NTSTATUS
179 NTAPI
180 NtDeleteObjectAuditAlarm(
181 IN PUNICODE_STRING SubsystemName,
182 IN PVOID HandleId,
183 IN BOOLEAN GenerateOnClose
184 );
185
186 NTSYSCALLAPI
187 NTSTATUS
188 NTAPI
189 NtDuplicateObject(
190 IN HANDLE SourceProcessHandle,
191 IN HANDLE SourceHandle,
192 IN HANDLE TargetProcessHandle,
193 OUT PHANDLE TargetHandle,
194 IN ACCESS_MASK DesiredAccess,
195 IN ULONG HandleAttributes,
196 IN ULONG Options
197 );
198
199 NTSYSCALLAPI
200 NTSTATUS
201 NTAPI
202 NtMakePermanentObject(
203 IN HANDLE Object
204 );
205
206 NTSYSCALLAPI
207 NTSTATUS
208 NTAPI
209 NtMakeTemporaryObject(
210 IN HANDLE Handle
211 );
212
213 NTSYSCALLAPI
214 NTSTATUS
215 NTAPI
216 NtOpenDirectoryObject(
217 OUT PHANDLE FileHandle,
218 IN ACCESS_MASK DesiredAccess,
219 IN POBJECT_ATTRIBUTES ObjectAttributes
220 );
221
222 NTSYSCALLAPI
223 NTSTATUS
224 NTAPI
225 NtOpenJobObject(
226 PHANDLE JobHandle,
227 ACCESS_MASK DesiredAccess,
228 POBJECT_ATTRIBUTES ObjectAttributes
229 );
230
231 NTSYSCALLAPI
232 NTSTATUS
233 NTAPI
234 NtOpenSymbolicLinkObject(
235 OUT PHANDLE SymbolicLinkHandle,
236 IN ACCESS_MASK DesiredAccess,
237 IN POBJECT_ATTRIBUTES ObjectAttributes
238 );
239
240 NTSYSCALLAPI
241 NTSTATUS
242 NTAPI
243 NtQueryDirectoryObject(
244 IN HANDLE DirectoryHandle,
245 OUT PVOID Buffer,
246 IN ULONG BufferLength,
247 IN BOOLEAN ReturnSingleEntry,
248 IN BOOLEAN RestartScan,
249 IN OUT PULONG Context,
250 OUT PULONG ReturnLength OPTIONAL
251 );
252
253 NTSYSCALLAPI
254 NTSTATUS
255 NTAPI
256 NtQueryObject(
257 IN HANDLE ObjectHandle,
258 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
259 OUT PVOID ObjectInformation,
260 IN ULONG Length,
261 OUT PULONG ResultLength OPTIONAL
262 );
263
264 NTSYSCALLAPI
265 NTSTATUS
266 NTAPI
267 NtQuerySecurityObject(
268 IN HANDLE Handle,
269 IN SECURITY_INFORMATION SecurityInformation,
270 OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
271 IN ULONG Length,
272 OUT PULONG ResultLength
273 );
274
275 NTSYSCALLAPI
276 NTSTATUS
277 NTAPI
278 NtQuerySymbolicLinkObject(
279 IN HANDLE SymLinkObjHandle,
280 OUT PUNICODE_STRING LinkTarget,
281 OUT PULONG DataWritten OPTIONAL
282 );
283
284 NTSYSCALLAPI
285 NTSTATUS
286 NTAPI
287 NtSetInformationObject(
288 IN HANDLE ObjectHandle,
289 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
290 IN PVOID ObjectInformation,
291 IN ULONG Length
292 );
293
294 NTSYSCALLAPI
295 NTSTATUS
296 NTAPI
297 NtSetSecurityObject(
298 IN HANDLE Handle,
299 IN SECURITY_INFORMATION SecurityInformation,
300 IN PSECURITY_DESCRIPTOR SecurityDescriptor
301 );
302
303 NTSYSCALLAPI
304 NTSTATUS
305 NTAPI
306 NtSignalAndWaitForSingleObject(
307 IN HANDLE SignalObject,
308 IN HANDLE WaitObject,
309 IN BOOLEAN Alertable,
310 IN PLARGE_INTEGER Time
311 );
312
313 NTSYSCALLAPI
314 NTSTATUS
315 NTAPI
316 NtWaitForMultipleObjects(
317 IN ULONG Count,
318 IN HANDLE Object[],
319 IN WAIT_TYPE WaitType,
320 IN BOOLEAN Alertable,
321 IN PLARGE_INTEGER Time
322 );
323
324 NTSTATUS
325 NTAPI
326 NtWaitForMultipleObjects32(
327 IN ULONG ObjectCount,
328 IN PLONG Handles,
329 IN WAIT_TYPE WaitType,
330 IN BOOLEAN Alertable,
331 IN PLARGE_INTEGER TimeOut OPTIONAL
332 );
333
334 NTSYSCALLAPI
335 NTSTATUS
336 NTAPI
337 NtWaitForSingleObject(
338 IN HANDLE Object,
339 IN BOOLEAN Alertable,
340 IN PLARGE_INTEGER Time
341 );
342
343 NTSYSAPI
344 NTSTATUS
345 NTAPI
346 ZwClose(
347 IN HANDLE Handle
348 );
349
350 NTSYSAPI
351 NTSTATUS
352 NTAPI
353 ZwCloseObjectAuditAlarm(
354 IN PUNICODE_STRING SubsystemName,
355 IN PVOID HandleId,
356 IN BOOLEAN GenerateOnClose
357 );
358
359 NTSYSAPI
360 NTSTATUS
361 NTAPI
362 ZwCreateDirectoryObject(
363 OUT PHANDLE DirectoryHandle,
364 IN ACCESS_MASK DesiredAccess,
365 IN POBJECT_ATTRIBUTES ObjectAttributes
366 );
367
368 NTSYSAPI
369 NTSTATUS
370 NTAPI
371 ZwCreateSymbolicLinkObject(
372 OUT PHANDLE SymbolicLinkHandle,
373 IN ACCESS_MASK DesiredAccess,
374 IN POBJECT_ATTRIBUTES ObjectAttributes,
375 IN PUNICODE_STRING Name
376 );
377
378 NTSYSAPI
379 NTSTATUS
380 NTAPI
381 ZwDeleteObjectAuditAlarm(
382 IN PUNICODE_STRING SubsystemName,
383 IN PVOID HandleId,
384 IN BOOLEAN GenerateOnClose
385 );
386
387 NTSYSAPI
388 NTSTATUS
389 NTAPI
390 ZwDuplicateObject(
391 IN HANDLE SourceProcessHandle,
392 IN HANDLE SourceHandle,
393 IN HANDLE TargetProcessHandle,
394 OUT PHANDLE TargetHandle,
395 IN ACCESS_MASK DesiredAccess,
396 IN ULONG HandleAttributes,
397 IN ULONG Options
398 );
399
400 NTSYSAPI
401 NTSTATUS
402 NTAPI
403 ZwMakePermanentObject(
404 IN HANDLE Object
405 );
406
407 NTSYSAPI
408 NTSTATUS
409 NTAPI
410 ZwMakeTemporaryObject(
411 IN HANDLE Handle
412 );
413
414 NTSYSAPI
415 NTSTATUS
416 NTAPI
417 ZwOpenDirectoryObject(
418 OUT PHANDLE FileHandle,
419 IN ACCESS_MASK DesiredAccess,
420 IN POBJECT_ATTRIBUTES ObjectAttributes
421 );
422
423 NTSYSAPI
424 NTSTATUS
425 NTAPI
426 ZwOpenJobObject(
427 PHANDLE JobHandle,
428 ACCESS_MASK DesiredAccess,
429 POBJECT_ATTRIBUTES ObjectAttributes
430 );
431
432 NTSYSAPI
433 NTSTATUS
434 NTAPI
435 ZwOpenSymbolicLinkObject(
436 OUT PHANDLE SymbolicLinkHandle,
437 IN ACCESS_MASK DesiredAccess,
438 IN POBJECT_ATTRIBUTES ObjectAttributes
439 );
440
441 NTSYSAPI
442 NTSTATUS
443 NTAPI
444 ZwQueryDirectoryObject(
445 IN HANDLE DirectoryHandle,
446 OUT PVOID Buffer,
447 IN ULONG BufferLength,
448 IN BOOLEAN ReturnSingleEntry,
449 IN BOOLEAN RestartScan,
450 IN OUT PULONG Context,
451 OUT PULONG ReturnLength OPTIONAL
452 );
453
454 NTSYSAPI
455 NTSTATUS
456 NTAPI
457 ZwQueryObject(
458 IN HANDLE ObjectHandle,
459 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
460 OUT PVOID ObjectInformation,
461 IN ULONG Length,
462 OUT PULONG ResultLength OPTIONAL
463 );
464
465 NTSYSAPI
466 NTSTATUS
467 NTAPI
468 ZwQuerySecurityObject(
469 IN HANDLE Handle,
470 IN SECURITY_INFORMATION SecurityInformation,
471 OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
472 IN ULONG Length,
473 OUT PULONG ResultLength
474 );
475
476 NTSYSAPI
477 NTSTATUS
478 NTAPI
479 ZwQuerySymbolicLinkObject(
480 IN HANDLE SymLinkObjHandle,
481 OUT PUNICODE_STRING LinkTarget,
482 OUT PULONG DataWritten OPTIONAL
483 );
484
485 NTSYSAPI
486 NTSTATUS
487 NTAPI
488 ZwSetInformationObject(
489 IN HANDLE ObjectHandle,
490 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
491 IN PVOID ObjectInformation,
492 IN ULONG Length
493 );
494
495 NTSYSAPI
496 NTSTATUS
497 NTAPI
498 ZwSetSecurityObject(
499 IN HANDLE Handle,
500 IN SECURITY_INFORMATION SecurityInformation,
501 IN PSECURITY_DESCRIPTOR SecurityDescriptor
502 );
503
504 NTSYSAPI
505 NTSTATUS
506 NTAPI
507 ZwSignalAndWaitForSingleObject(
508 IN HANDLE SignalObject,
509 IN HANDLE WaitObject,
510 IN BOOLEAN Alertable,
511 IN PLARGE_INTEGER Time
512 );
513
514 NTSYSAPI
515 NTSTATUS
516 NTAPI
517 ZwWaitForMultipleObjects(
518 IN ULONG Count,
519 IN HANDLE Object[],
520 IN WAIT_TYPE WaitType,
521 IN BOOLEAN Alertable,
522 IN PLARGE_INTEGER Time
523 );
524
525 NTSYSAPI
526 NTSTATUS
527 NTAPI
528 ZwWaitForSingleObject(
529 IN HANDLE Object,
530 IN BOOLEAN Alertable,
531 IN PLARGE_INTEGER Time
532 );
533
534 #endif