Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588/*++ NDK Version: 0098
Copyright (c) Alex Ionescu. All rights reserved.
Header Name:
obfuncs.h
Abstract:
Function definitions for the Object Manager
Author:
Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
--*/
#ifndef _OBFUNCS_H#define _OBFUNCS_H
//// Dependencies//#include <umtypes.h>#include <pstypes.h>#include <obtypes.h>
#ifdef __cplusplusextern "C" {#endif
#ifndef NTOS_MODE_USER
//// Object Functions//NTKERNELAPINTSTATUSNTAPIObAssignSecurity( _In_ PACCESS_STATE AccessState, _In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ PVOID Object, _In_ POBJECT_TYPE Type);
NTKERNELAPINTSTATUSNTAPIObCloseHandle( _In_ HANDLE Handle, _In_ KPROCESSOR_MODE AccessMode);
NTKERNELAPINTSTATUSNTAPIObCreateObject( _In_opt_ KPROCESSOR_MODE ObjectAttributesAccessMode, _In_ POBJECT_TYPE ObjectType, _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes, _In_ KPROCESSOR_MODE AccessMode, _Inout_opt_ PVOID ParseContext, _In_ ULONG ObjectSize, _In_opt_ ULONG PagedPoolCharge, _In_opt_ ULONG NonPagedPoolCharge, _Out_ PVOID *Object);
NTKERNELAPINTSTATUSNTAPIObCreateObjectType( _In_ PUNICODE_STRING TypeName, _In_ POBJECT_TYPE_INITIALIZER ObjectTypeInitializer, _Reserved_ PVOID Reserved, _Out_ POBJECT_TYPE *ObjectType);
NTKERNELAPIVOIDNTAPIObDereferenceSecurityDescriptor( _Inout_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ ULONG Count);
NTKERNELAPIULONGNTAPIObGetObjectPointerCount( _In_ PVOID Object);
NTKERNELAPINTSTATUSNTAPIObLogSecurityDescriptor( _In_ PSECURITY_DESCRIPTOR InputSecurityDescriptor, _Out_ PSECURITY_DESCRIPTOR *OutputSecurityDescriptor, _In_ ULONG RefBias);
NTKERNELAPINTSTATUSNTAPIObOpenObjectByName( _In_ POBJECT_ATTRIBUTES ObjectAttributes, _In_ POBJECT_TYPE ObjectType, _In_ KPROCESSOR_MODE AccessMode, _In_opt_ PACCESS_STATE PassedAccessState, _In_ ACCESS_MASK DesiredAccess, _Inout_opt_ PVOID ParseContext, _Out_ PHANDLE Handle);
NTKERNELAPINTSTATUSNTAPIObReferenceObjectByName( _In_ PUNICODE_STRING ObjectName, _In_ ULONG Attributes, _In_opt_ PACCESS_STATE PassedAccessState, _In_opt_ ACCESS_MASK DesiredAccess, _In_ POBJECT_TYPE ObjectType, _In_ KPROCESSOR_MODE AccessMode, _Inout_opt_ PVOID ParseContext, _Out_ PVOID *Object);
NTKERNELAPIVOIDNTAPIObReferenceSecurityDescriptor( _In_ PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ ULONG Count);
NTKERNELAPINTSTATUSNTAPIObSetSecurityObjectByPointer( _In_ PVOID Object, _In_ SECURITY_INFORMATION SecurityInformation, _In_ PSECURITY_DESCRIPTOR SecurityDescriptor);
NTKERNELAPIBOOLEANNTAPIObFindHandleForObject( _In_ PEPROCESS Process, _In_ PVOID Object, _In_ POBJECT_TYPE ObjectType, _In_opt_ POBJECT_HANDLE_INFORMATION HandleInformation, _Out_opt_ PHANDLE Handle);
NTKERNELAPIVOIDNTAPIObDereferenceObjectDeferDelete( _In_ PVOID Object);
#endif
//// Native Calls//NTSYSCALLAPINTSTATUSNTAPINtClose( _In_ HANDLE Handle);
__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtCloseObjectAuditAlarm( _In_ PUNICODE_STRING SubsystemName, _In_opt_ PVOID HandleId, _In_ BOOLEAN GenerateOnClose);
NTSYSCALLAPINTSTATUSNTAPINtCreateDirectoryObject( _Out_ PHANDLE DirectoryHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes);
NTSYSCALLAPINTSTATUSNTAPINtCreateSymbolicLinkObject( _Out_ PHANDLE SymbolicLinkHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes, _In_ PUNICODE_STRING Name);
__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtDeleteObjectAuditAlarm( _In_ PUNICODE_STRING SubsystemName, _In_opt_ PVOID HandleId, _In_ BOOLEAN GenerateOnClose);
NTSYSCALLAPINTSTATUSNTAPINtDuplicateObject( _In_ HANDLE SourceProcessHandle, _In_ HANDLE SourceHandle, _In_ HANDLE TargetProcessHandle, _Out_ PHANDLE TargetHandle, _In_ ACCESS_MASK DesiredAccess, _In_ ULONG HandleAttributes, _In_ ULONG Options);
NTSYSCALLAPINTSTATUSNTAPINtMakePermanentObject( _In_ HANDLE Object);
NTSYSCALLAPINTSTATUSNTAPINtMakeTemporaryObject( _In_ HANDLE Handle);
NTSYSCALLAPINTSTATUSNTAPINtOpenDirectoryObject( _Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes);
NTSYSCALLAPINTSTATUSNTAPINtOpenJobObject( _Out_ PHANDLE JobHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes);
NTSYSCALLAPINTSTATUSNTAPINtOpenSymbolicLinkObject( _Out_ PHANDLE SymbolicLinkHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes);
NTSYSCALLAPINTSTATUSNTAPINtQueryDirectoryObject( _In_ HANDLE DirectoryHandle, _Out_ PVOID Buffer, _In_ ULONG BufferLength, _In_ BOOLEAN ReturnSingleEntry, _In_ BOOLEAN RestartScan, _Inout_ PULONG Context, _Out_opt_ PULONG ReturnLength);
_IRQL_requires_max_(PASSIVE_LEVEL)__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtQueryObject( _In_opt_ HANDLE Handle, _In_ OBJECT_INFORMATION_CLASS ObjectInformationClass, _Out_writes_bytes_opt_(ObjectInformationLength) PVOID ObjectInformation, _In_ ULONG ObjectInformationLength, _Out_opt_ PULONG ReturnLength);
_IRQL_requires_max_(PASSIVE_LEVEL)__kernel_entryNTSYSCALLAPINTSTATUSNTAPINtQuerySecurityObject( _In_ HANDLE Handle, _In_ SECURITY_INFORMATION SecurityInformation, _Out_writes_bytes_opt_(Length) PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ ULONG Length, _Out_ PULONG LengthNeeded);
NTSYSCALLAPINTSTATUSNTAPINtQuerySymbolicLinkObject( _In_ HANDLE SymLinkObjHandle, _Out_ PUNICODE_STRING LinkTarget, _Out_opt_ PULONG DataWritten);
NTSYSCALLAPINTSTATUSNTAPINtSetInformationObject( _In_ HANDLE ObjectHandle, _In_ OBJECT_INFORMATION_CLASS ObjectInformationClass, _In_ PVOID ObjectInformation, _In_ ULONG Length);
NTSYSCALLAPINTSTATUSNTAPINtSetSecurityObject( _In_ HANDLE Handle, _In_ SECURITY_INFORMATION SecurityInformation, _In_ PSECURITY_DESCRIPTOR SecurityDescriptor);
NTSYSCALLAPINTSTATUSNTAPINtSignalAndWaitForSingleObject( _In_ HANDLE SignalObject, _In_ HANDLE WaitObject, _In_ BOOLEAN Alertable, _In_ PLARGE_INTEGER Time);
NTSYSCALLAPINTSTATUSNTAPINtWaitForMultipleObjects( _In_ ULONG Count, _In_ HANDLE Object[], _In_ WAIT_TYPE WaitType, _In_ BOOLEAN Alertable, _In_ PLARGE_INTEGER Time);
NTSTATUSNTAPINtWaitForMultipleObjects32( _In_ ULONG ObjectCount, _In_ PLONG Handles, _In_ WAIT_TYPE WaitType, _In_ BOOLEAN Alertable, _In_opt_ PLARGE_INTEGER TimeOut);
NTSYSCALLAPINTSTATUSNTAPINtWaitForSingleObject( _In_ HANDLE Object, _In_ BOOLEAN Alertable, _In_opt_ PLARGE_INTEGER Timeout);
NTSYSAPINTSTATUSNTAPIZwClose( _In_ HANDLE Handle);
NTSYSAPINTSTATUSNTAPIZwCloseObjectAuditAlarm( _In_ PUNICODE_STRING SubsystemName, _In_ PVOID HandleId, _In_ BOOLEAN GenerateOnClose);
NTSYSAPINTSTATUSNTAPIZwCreateDirectoryObject( _Out_ PHANDLE DirectoryHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes);
NTSYSAPINTSTATUSNTAPIZwCreateSymbolicLinkObject( _Out_ PHANDLE SymbolicLinkHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes, _In_ PUNICODE_STRING Name);
NTSYSAPINTSTATUSNTAPIZwDeleteObjectAuditAlarm( _In_ PUNICODE_STRING SubsystemName, _In_ PVOID HandleId, _In_ BOOLEAN GenerateOnClose);
_IRQL_requires_max_(PASSIVE_LEVEL)NTSYSAPINTSTATUSNTAPIZwDuplicateObject( _In_ HANDLE SourceProcessHandle, _In_ HANDLE SourceHandle, _In_opt_ HANDLE TargetProcessHandle, _Out_opt_ PHANDLE TargetHandle, _In_ ACCESS_MASK DesiredAccess, _In_ ULONG HandleAttributes, _In_ ULONG Options);
NTSYSAPINTSTATUSNTAPIZwMakePermanentObject( _In_ HANDLE Object);
NTSYSAPINTSTATUSNTAPIZwMakeTemporaryObject( _In_ HANDLE Handle);
NTSYSAPINTSTATUSNTAPIZwOpenDirectoryObject( _Out_ PHANDLE FileHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes);
NTSYSAPINTSTATUSNTAPIZwOpenJobObject( _Out_ PHANDLE JobHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes);
NTSYSAPINTSTATUSNTAPIZwOpenSymbolicLinkObject( _Out_ PHANDLE SymbolicLinkHandle, _In_ ACCESS_MASK DesiredAccess, _In_ POBJECT_ATTRIBUTES ObjectAttributes);
_IRQL_requires_max_(PASSIVE_LEVEL)NTSYSAPINTSTATUSNTAPIZwQueryDirectoryObject( _In_ HANDLE DirectoryHandle, _Out_ PVOID Buffer, _In_ ULONG BufferLength, _In_ BOOLEAN ReturnSingleEntry, _In_ BOOLEAN RestartScan, _Inout_ PULONG Context, _Out_opt_ PULONG ReturnLength);
NTSYSAPINTSTATUSNTAPIZwSetInformationObject( _In_ HANDLE ObjectHandle, _In_ OBJECT_INFORMATION_CLASS ObjectInformationClass, _In_ PVOID ObjectInformation, _In_ ULONG Length);
NTSYSAPINTSTATUSNTAPIZwSignalAndWaitForSingleObject( _In_ HANDLE SignalObject, _In_ HANDLE WaitObject, _In_ BOOLEAN Alertable, _In_opt_ PLARGE_INTEGER Time);
NTSYSAPINTSTATUSNTAPIZwWaitForMultipleObjects( _In_ ULONG Count, _In_ HANDLE Object[], _In_ WAIT_TYPE WaitType, _In_ BOOLEAN Alertable, _In_ PLARGE_INTEGER Time);
#ifdef NTOS_MODE_USER
_IRQL_requires_max_(PASSIVE_LEVEL)NTSYSAPINTSTATUSNTAPIZwQueryObject( _In_opt_ HANDLE Handle, _In_ OBJECT_INFORMATION_CLASS ObjectInformationClass, _Out_writes_bytes_opt_(ObjectInformationLength) PVOID ObjectInformation, _In_ ULONG ObjectInformationLength, _Out_opt_ PULONG ReturnLength);
_IRQL_requires_max_(PASSIVE_LEVEL)NTSYSAPINTSTATUSNTAPIZwQuerySecurityObject( _In_ HANDLE Handle, _In_ SECURITY_INFORMATION SecurityInformation, _Out_writes_bytes_to_(Length,*LengthNeeded) PSECURITY_DESCRIPTOR SecurityDescriptor, _In_ ULONG Length, _Out_ PULONG LengthNeeded);
_IRQL_requires_max_(PASSIVE_LEVEL)NTSYSAPINTSTATUSNTAPIZwQuerySymbolicLinkObject( _In_ HANDLE LinkHandle, _Inout_ PUNICODE_STRING LinkTarget, _Out_opt_ PULONG ReturnedLength);
_IRQL_requires_max_(PASSIVE_LEVEL)NTSYSAPINTSTATUSNTAPIZwSetSecurityObject( _In_ HANDLE Handle, _In_ SECURITY_INFORMATION SecurityInformation, _In_ PSECURITY_DESCRIPTOR SecurityDescriptor);
_When_(Timeout == NULL, _IRQL_requires_max_(APC_LEVEL))_When_(Timeout->QuadPart != 0, _IRQL_requires_max_(APC_LEVEL))_When_(Timeout->QuadPart == 0, _IRQL_requires_max_(DISPATCH_LEVEL))NTSYSAPINTSTATUSNTAPIZwWaitForSingleObject( _In_ HANDLE Handle, _In_ BOOLEAN Alertable, _In_opt_ PLARGE_INTEGER Timeout);
#endif /* NTOS_MODE_USER */
#ifdef __cplusplus}; // extern "C"#endif
#endif