3 Copyright (c) Alex Ionescu. All rights reserved.
11 Type definitions for the Object Manager
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
33 #ifndef NTOS_MODE_USER
42 _In_ PACCESS_STATE AccessState
,
43 _In_ PSECURITY_DESCRIPTOR SecurityDescriptor
,
45 _In_ POBJECT_TYPE Type
53 _In_ KPROCESSOR_MODE AccessMode
60 _In_opt_ KPROCESSOR_MODE ObjectAttributesAccessMode
,
61 _In_ POBJECT_TYPE ObjectType
,
62 _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes
,
63 _In_ KPROCESSOR_MODE AccessMode
,
64 _Inout_opt_ PVOID ParseContext
,
65 _In_ ULONG ObjectSize
,
66 _In_opt_ ULONG PagedPoolCharge
,
67 _In_opt_ ULONG NonPagedPoolCharge
,
75 _In_ PUNICODE_STRING TypeName
,
76 _In_ POBJECT_TYPE_INITIALIZER ObjectTypeInitializer
,
77 _Reserved_ PVOID Reserved
,
78 _Out_ POBJECT_TYPE
*ObjectType
84 ObDereferenceSecurityDescriptor(
85 _Inout_ PSECURITY_DESCRIPTOR SecurityDescriptor
,
92 ObGetObjectPointerCount(
99 ObLogSecurityDescriptor(
100 _In_ PSECURITY_DESCRIPTOR InputSecurityDescriptor
,
101 _Out_ PSECURITY_DESCRIPTOR
*OutputSecurityDescriptor
,
109 _In_ POBJECT_ATTRIBUTES ObjectAttributes
,
110 _In_ POBJECT_TYPE ObjectType
,
111 _In_ KPROCESSOR_MODE AccessMode
,
112 _In_opt_ PACCESS_STATE PassedAccessState
,
113 _In_ ACCESS_MASK DesiredAccess
,
114 _Inout_opt_ PVOID ParseContext
,
121 ObReferenceObjectByName(
122 _In_ PUNICODE_STRING ObjectName
,
123 _In_ ULONG Attributes
,
124 _In_opt_ PACCESS_STATE PassedAccessState
,
125 _In_opt_ ACCESS_MASK DesiredAccess
,
126 _In_ POBJECT_TYPE ObjectType
,
127 _In_ KPROCESSOR_MODE AccessMode
,
128 _Inout_opt_ PVOID ParseContext
,
135 ObReferenceSecurityDescriptor(
136 _In_ PSECURITY_DESCRIPTOR SecurityDescriptor
,
143 ObSetSecurityObjectByPointer(
145 _In_ SECURITY_INFORMATION SecurityInformation
,
146 _In_ PSECURITY_DESCRIPTOR SecurityDescriptor
152 ObFindHandleForObject(
153 _In_ PEPROCESS Process
,
155 _In_ POBJECT_TYPE ObjectType
,
156 _In_opt_ POBJECT_HANDLE_INFORMATION HandleInformation
,
157 _Out_opt_ PHANDLE Handle
163 ObDereferenceObjectDeferDelete(
183 NtCloseObjectAuditAlarm(
184 _In_ PUNICODE_STRING SubsystemName
,
185 _In_opt_ PVOID HandleId
,
186 _In_ BOOLEAN GenerateOnClose
192 NtCreateDirectoryObject(
193 _Out_ PHANDLE DirectoryHandle
,
194 _In_ ACCESS_MASK DesiredAccess
,
195 _In_ POBJECT_ATTRIBUTES ObjectAttributes
201 NtCreateSymbolicLinkObject(
202 _Out_ PHANDLE SymbolicLinkHandle
,
203 _In_ ACCESS_MASK DesiredAccess
,
204 _In_ POBJECT_ATTRIBUTES ObjectAttributes
,
205 _In_ PUNICODE_STRING Name
212 NtDeleteObjectAuditAlarm(
213 _In_ PUNICODE_STRING SubsystemName
,
214 _In_opt_ PVOID HandleId
,
215 _In_ BOOLEAN GenerateOnClose
222 _In_ HANDLE SourceProcessHandle
,
223 _In_ HANDLE SourceHandle
,
224 _In_ HANDLE TargetProcessHandle
,
225 _Out_ PHANDLE TargetHandle
,
226 _In_ ACCESS_MASK DesiredAccess
,
227 _In_ ULONG HandleAttributes
,
234 NtMakePermanentObject(
241 NtMakeTemporaryObject(
248 NtOpenDirectoryObject(
249 _Out_ PHANDLE FileHandle
,
250 _In_ ACCESS_MASK DesiredAccess
,
251 _In_ POBJECT_ATTRIBUTES ObjectAttributes
258 _Out_ PHANDLE JobHandle
,
259 _In_ ACCESS_MASK DesiredAccess
,
260 _In_ POBJECT_ATTRIBUTES ObjectAttributes
266 NtOpenSymbolicLinkObject(
267 _Out_ PHANDLE SymbolicLinkHandle
,
268 _In_ ACCESS_MASK DesiredAccess
,
269 _In_ POBJECT_ATTRIBUTES ObjectAttributes
275 NtQueryDirectoryObject(
276 _In_ HANDLE DirectoryHandle
,
278 _In_ ULONG BufferLength
,
279 _In_ BOOLEAN ReturnSingleEntry
,
280 _In_ BOOLEAN RestartScan
,
281 _Inout_ PULONG Context
,
282 _Out_opt_ PULONG ReturnLength
285 _IRQL_requires_max_(PASSIVE_LEVEL
)
291 _In_opt_ HANDLE Handle
,
292 _In_ OBJECT_INFORMATION_CLASS ObjectInformationClass
,
293 _Out_writes_bytes_opt_(ObjectInformationLength
) PVOID ObjectInformation
,
294 _In_ ULONG ObjectInformationLength
,
295 _Out_opt_ PULONG ReturnLength
298 _IRQL_requires_max_(PASSIVE_LEVEL
)
303 NtQuerySecurityObject(
305 _In_ SECURITY_INFORMATION SecurityInformation
,
306 _Out_writes_bytes_opt_(Length
) PSECURITY_DESCRIPTOR SecurityDescriptor
,
308 _Out_ PULONG LengthNeeded
314 NtQuerySymbolicLinkObject(
315 _In_ HANDLE SymLinkObjHandle
,
316 _Out_ PUNICODE_STRING LinkTarget
,
317 _Out_opt_ PULONG DataWritten
323 NtSetInformationObject(
324 _In_ HANDLE ObjectHandle
,
325 _In_ OBJECT_INFORMATION_CLASS ObjectInformationClass
,
326 _In_ PVOID ObjectInformation
,
335 _In_ SECURITY_INFORMATION SecurityInformation
,
336 _In_ PSECURITY_DESCRIPTOR SecurityDescriptor
342 NtSignalAndWaitForSingleObject(
343 _In_ HANDLE SignalObject
,
344 _In_ HANDLE WaitObject
,
345 _In_ BOOLEAN Alertable
,
346 _In_ PLARGE_INTEGER Time
352 NtWaitForMultipleObjects(
354 _In_ HANDLE Object
[],
355 _In_ WAIT_TYPE WaitType
,
356 _In_ BOOLEAN Alertable
,
357 _In_ PLARGE_INTEGER Time
362 NtWaitForMultipleObjects32(
363 _In_ ULONG ObjectCount
,
365 _In_ WAIT_TYPE WaitType
,
366 _In_ BOOLEAN Alertable
,
367 _In_opt_ PLARGE_INTEGER TimeOut
373 NtWaitForSingleObject(
375 _In_ BOOLEAN Alertable
,
376 _In_opt_ PLARGE_INTEGER Timeout
389 ZwCloseObjectAuditAlarm(
390 _In_ PUNICODE_STRING SubsystemName
,
392 _In_ BOOLEAN GenerateOnClose
398 ZwCreateDirectoryObject(
399 _Out_ PHANDLE DirectoryHandle
,
400 _In_ ACCESS_MASK DesiredAccess
,
401 _In_ POBJECT_ATTRIBUTES ObjectAttributes
407 ZwCreateSymbolicLinkObject(
408 _Out_ PHANDLE SymbolicLinkHandle
,
409 _In_ ACCESS_MASK DesiredAccess
,
410 _In_ POBJECT_ATTRIBUTES ObjectAttributes
,
411 _In_ PUNICODE_STRING Name
417 ZwDeleteObjectAuditAlarm(
418 _In_ PUNICODE_STRING SubsystemName
,
420 _In_ BOOLEAN GenerateOnClose
423 _IRQL_requires_max_(PASSIVE_LEVEL
)
428 _In_ HANDLE SourceProcessHandle
,
429 _In_ HANDLE SourceHandle
,
430 _In_opt_ HANDLE TargetProcessHandle
,
431 _Out_opt_ PHANDLE TargetHandle
,
432 _In_ ACCESS_MASK DesiredAccess
,
433 _In_ ULONG HandleAttributes
,
440 ZwMakePermanentObject(
447 ZwMakeTemporaryObject(
454 ZwOpenDirectoryObject(
455 _Out_ PHANDLE FileHandle
,
456 _In_ ACCESS_MASK DesiredAccess
,
457 _In_ POBJECT_ATTRIBUTES ObjectAttributes
464 _Out_ PHANDLE JobHandle
,
465 _In_ ACCESS_MASK DesiredAccess
,
466 _In_ POBJECT_ATTRIBUTES ObjectAttributes
472 ZwOpenSymbolicLinkObject(
473 _Out_ PHANDLE SymbolicLinkHandle
,
474 _In_ ACCESS_MASK DesiredAccess
,
475 _In_ POBJECT_ATTRIBUTES ObjectAttributes
478 _IRQL_requires_max_(PASSIVE_LEVEL
)
482 ZwQueryDirectoryObject(
483 _In_ HANDLE DirectoryHandle
,
485 _In_ ULONG BufferLength
,
486 _In_ BOOLEAN ReturnSingleEntry
,
487 _In_ BOOLEAN RestartScan
,
488 _Inout_ PULONG Context
,
489 _Out_opt_ PULONG ReturnLength
495 ZwSetInformationObject(
496 _In_ HANDLE ObjectHandle
,
497 _In_ OBJECT_INFORMATION_CLASS ObjectInformationClass
,
498 _In_ PVOID ObjectInformation
,
505 ZwSignalAndWaitForSingleObject(
506 _In_ HANDLE SignalObject
,
507 _In_ HANDLE WaitObject
,
508 _In_ BOOLEAN Alertable
,
509 _In_opt_ PLARGE_INTEGER Time
515 ZwWaitForMultipleObjects(
517 _In_ HANDLE Object
[],
518 _In_ WAIT_TYPE WaitType
,
519 _In_ BOOLEAN Alertable
,
520 _In_ PLARGE_INTEGER Time
523 #ifdef NTOS_MODE_USER
525 _IRQL_requires_max_(PASSIVE_LEVEL
)
530 _In_opt_ HANDLE Handle
,
531 _In_ OBJECT_INFORMATION_CLASS ObjectInformationClass
,
532 _Out_writes_bytes_opt_(ObjectInformationLength
) PVOID ObjectInformation
,
533 _In_ ULONG ObjectInformationLength
,
534 _Out_opt_ PULONG ReturnLength
537 _IRQL_requires_max_(PASSIVE_LEVEL
)
541 ZwQuerySecurityObject(
543 _In_ SECURITY_INFORMATION SecurityInformation
,
544 _Out_writes_bytes_to_(Length
,*LengthNeeded
) PSECURITY_DESCRIPTOR SecurityDescriptor
,
546 _Out_ PULONG LengthNeeded
549 _IRQL_requires_max_(PASSIVE_LEVEL
)
553 ZwQuerySymbolicLinkObject(
554 _In_ HANDLE LinkHandle
,
555 _Inout_ PUNICODE_STRING LinkTarget
,
556 _Out_opt_ PULONG ReturnedLength
559 _IRQL_requires_max_(PASSIVE_LEVEL
)
565 _In_ SECURITY_INFORMATION SecurityInformation
,
566 _In_ PSECURITY_DESCRIPTOR SecurityDescriptor
569 _When_(Timeout
== NULL
, _IRQL_requires_max_(APC_LEVEL
))
570 _When_(Timeout
->QuadPart
!= 0, _IRQL_requires_max_(APC_LEVEL
))
571 _When_(Timeout
->QuadPart
== 0, _IRQL_requires_max_(DISPATCH_LEVEL
))
575 ZwWaitForSingleObject(
577 _In_ BOOLEAN Alertable
,
578 _In_opt_ PLARGE_INTEGER Timeout
581 #endif /* NTOS_MODE_USER */