6fa6d6d8d37e7b2c6068fdadcb510d10f9276dc1
[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 NTSTATUS
273 NTAPI
274 ZwCreateDirectoryObject(
275 OUT PHANDLE DirectoryHandle,
276 IN ACCESS_MASK DesiredAccess,
277 IN POBJECT_ATTRIBUTES ObjectAttributes
278 );
279
280 NTSTATUS
281 NTAPI
282 ZwCreateSymbolicLinkObject(
283 OUT PHANDLE SymbolicLinkHandle,
284 IN ACCESS_MASK DesiredAccess,
285 IN POBJECT_ATTRIBUTES ObjectAttributes,
286 IN PUNICODE_STRING Name
287 );
288
289 NTSYSAPI
290 NTSTATUS
291 NTAPI
292 ZwDeleteObjectAuditAlarm(
293 IN PUNICODE_STRING SubsystemName,
294 IN PVOID HandleId,
295 IN BOOLEAN GenerateOnClose
296 );
297
298 NTSTATUS
299 NTAPI
300 ZwDuplicateObject(
301 IN HANDLE SourceProcessHandle,
302 IN HANDLE SourceHandle,
303 IN HANDLE TargetProcessHandle,
304 OUT PHANDLE TargetHandle,
305 IN ACCESS_MASK DesiredAccess,
306 IN ULONG HandleAttributes,
307 IN ULONG Options
308 );
309
310 NTSTATUS
311 NTAPI
312 ZwMakePermanentObject(
313 IN HANDLE Object
314 );
315
316 NTSTATUS
317 NTAPI
318 ZwMakeTemporaryObject(
319 IN HANDLE Handle
320 );
321
322 NTSTATUS
323 NTAPI
324 ZwOpenDirectoryObject(
325 OUT PHANDLE FileHandle,
326 IN ACCESS_MASK DesiredAccess,
327 IN POBJECT_ATTRIBUTES ObjectAttributes
328 );
329
330 NTSTATUS
331 NTAPI
332 ZwOpenJobObject(
333 PHANDLE JobHandle,
334 ACCESS_MASK DesiredAccess,
335 POBJECT_ATTRIBUTES ObjectAttributes
336 );
337
338 NTSTATUS
339 NTAPI
340 ZwOpenSymbolicLinkObject(
341 OUT PHANDLE SymbolicLinkHandle,
342 IN ACCESS_MASK DesiredAccess,
343 IN POBJECT_ATTRIBUTES ObjectAttributes
344 );
345
346 NTSTATUS
347 NTAPI
348 ZwQueryDirectoryObject(
349 IN HANDLE DirectoryHandle,
350 OUT PVOID Buffer,
351 IN ULONG BufferLength,
352 IN BOOLEAN ReturnSingleEntry,
353 IN BOOLEAN RestartScan,
354 IN OUT PULONG Context,
355 OUT PULONG ReturnLength OPTIONAL
356 );
357
358 NTSTATUS
359 NTAPI
360 ZwQueryObject(
361 IN HANDLE ObjectHandle,
362 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
363 OUT PVOID ObjectInformation,
364 IN ULONG Length,
365 OUT PULONG ResultLength OPTIONAL
366 );
367
368 NTSYSCALLAPI
369 NTSTATUS
370 NTAPI
371 ZwQuerySecurityObject(
372 IN HANDLE Handle,
373 IN SECURITY_INFORMATION SecurityInformation,
374 OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
375 IN ULONG Length,
376 OUT PULONG ResultLength
377 );
378
379 NTSTATUS
380 NTAPI
381 ZwQuerySymbolicLinkObject(
382 IN HANDLE SymLinkObjHandle,
383 OUT PUNICODE_STRING LinkTarget,
384 OUT PULONG DataWritten OPTIONAL
385 );
386
387 NTSTATUS
388 NTAPI
389 ZwSetInformationObject(
390 IN HANDLE ObjectHandle,
391 IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
392 IN PVOID ObjectInformation,
393 IN ULONG Length
394 );
395
396 NTSYSCALLAPI
397 NTSTATUS
398 NTAPI
399 ZwSetSecurityObject(
400 IN HANDLE Handle,
401 IN SECURITY_INFORMATION SecurityInformation,
402 IN PSECURITY_DESCRIPTOR SecurityDescriptor
403 );
404
405 NTSTATUS
406 NTAPI
407 ZwSignalAndWaitForSingleObject(
408 IN HANDLE SignalObject,
409 IN HANDLE WaitObject,
410 IN BOOLEAN Alertable,
411 IN PLARGE_INTEGER Time
412 );
413
414 NTSTATUS
415 NTAPI
416 ZwWaitForMultipleObjects(
417 IN ULONG Count,
418 IN HANDLE Object[],
419 IN WAIT_TYPE WaitType,
420 IN BOOLEAN Alertable,
421 IN PLARGE_INTEGER Time
422 );
423
424 NTSTATUS
425 NTAPI
426 ZwWaitForSingleObject(
427 IN HANDLE Object,
428 IN BOOLEAN Alertable,
429 IN PLARGE_INTEGER Time
430 );
431
432 #endif