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