diff --git a/reactos/include/ddk/obfuncs.h b/reactos/include/ddk/obfuncs.h index 3dd9fecf875..9fb2d224982 100644 --- a/reactos/include/ddk/obfuncs.h +++ b/reactos/include/ddk/obfuncs.h @@ -1,11 +1,53 @@ +#ifndef _INCLUDE_DDK_OBFUNCS_H +#define _INCLUDE_DDK_OBFUNCS_H /* OBJECT MANAGER ************************************************************/ NTSTATUS STDCALL -ObCreateObject(PHANDLE Handle, - ACCESS_MASK DesiredAccess, - POBJECT_ATTRIBUTES ObjectAttributes, - POBJECT_TYPE Type, - PVOID *Object); +ObAssignSecurity(IN PACCESS_STATE AccessState, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PVOID Object, + IN POBJECT_TYPE Type); + +/* +BOOLEAN STDCALL +ObCheckCreateObjectAccess(IN PVOID Object, + IN ACCESS_MASK DesiredAccess, + ULONG Param3, + ULONG Param4, + ULONG Param5, + IN KPROCESSOR_MODE AccessMode, + OUT PNTSTATUS AccessStatus); +*/ + +/* +BOOLEAN STDCALL +ObCheckObjectAccess(IN PVOID Object, + ULONG Param2, + ULONG Param3, + IN KPROCESSOR_MODE AccessMode, + OUT PACCESS_MODE GrantedAccess); +*/ + +NTSTATUS STDCALL +ObCreateObject(OUT PHANDLE Handle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN POBJECT_TYPE Type, + OUT PVOID *Object); + +#if 0 +/* original implementation */ +NTSTATUS STDCALL +ObCreateObject(IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL, + IN POBJECT_TYPE Type, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, + IN KPROCESSOR_MODE AccessMode, + IN OUT PVOID ParseContext OPTIONAL, + IN ULONG ObjectSize, + IN ULONG PagedPoolCharge OPTIONAL, + IN ULONG NonPagedPoolCharge OPTIONAL, + OUT PVOID *Object); +#endif VOID FASTCALL ObfDereferenceObject(IN PVOID Object); @@ -19,16 +61,29 @@ ObfReferenceObject(IN PVOID Object); #define ObReferenceObject(Object) \ ObfReferenceObject(Object) +/* +BOOLEAN STDCALL +ObFindHandleForObject(ULONG Param1, + ULONG Param2, + ULONG Param3, + ULONG Param4); +*/ + ULONG STDCALL ObGetObjectPointerCount(IN PVOID Object); NTSTATUS STDCALL -ObInsertObject(PVOID Object, - PACCESS_STATE PassedAccessState, - ACCESS_MASK DesiredAccess, - ULONG AdditionalReferences, - PVOID* ReferencedObject, - PHANDLE Handle); +ObGetObjectSecurity(IN PVOID Object, + OUT PSECURITY_DESCRIPTOR *SecurityDescriptor, + OUT PBOOLEAN MemoryAllocated); + +NTSTATUS STDCALL +ObInsertObject(IN PVOID Object, + IN PACCESS_STATE PassedAccessState OPTIONAL, + IN ACCESS_MASK DesiredAccess, + IN ULONG AdditionalReferences, + OUT PVOID* ReferencedObject OPTIONAL, + OUT PHANDLE Handle); VOID STDCALL ObMakeTemporaryObject(IN PVOID ObjectBody); @@ -36,7 +91,7 @@ ObMakeTemporaryObject(IN PVOID ObjectBody); NTSTATUS STDCALL ObOpenObjectByName(IN POBJECT_ATTRIBUTES ObjectAttributes, IN POBJECT_TYPE ObjectType, - IN PVOID ParseContext, + IN OUT PVOID ParseContext OPTIONAL, IN KPROCESSOR_MODE AccessMode, IN ACCESS_MASK DesiredAccess, IN PACCESS_STATE PassedAccessState, @@ -45,12 +100,22 @@ ObOpenObjectByName(IN POBJECT_ATTRIBUTES ObjectAttributes, NTSTATUS STDCALL ObOpenObjectByPointer(IN PVOID Object, IN ULONG HandleAttributes, - IN PACCESS_STATE PassedAccessState, - IN ACCESS_MASK DesiredAccess, - IN POBJECT_TYPE ObjectType, + IN PACCESS_STATE PassedAccessState OPTIONAL, + IN ACCESS_MASK DesiredAccess OPTIONAL, + IN POBJECT_TYPE ObjectType OPTIONAL, IN KPROCESSOR_MODE AccessMode, OUT PHANDLE Handle); +NTSTATUS STDCALL +ObQueryNameString(IN PVOID Object, + OUT POBJECT_NAME_INFORMATION ObjectNameInfo, + IN ULONG Length, + OUT PULONG ReturnLength); + +NTSTATUS STDCALL +ObQueryObjectAuditingByHandle(IN HANDLE Handle, + OUT PBOOLEAN GenerateOnClose); + /* * FUNCTION: Performs access validation on an object handle and if access * is granted returns a pointer to the object's body @@ -66,12 +131,12 @@ ObOpenObjectByPointer(IN PVOID Object, * RETURNS: Status */ NTSTATUS STDCALL -ObReferenceObjectByHandle(HANDLE Handle, - ACCESS_MASK DesiredAccess, - POBJECT_TYPE ObjectType, - KPROCESSOR_MODE AccessMode, - PVOID* Object, - POBJECT_HANDLE_INFORMATION HandleInfo); +ObReferenceObjectByHandle(IN HANDLE Handle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_TYPE ObjectType OPTIONAL, + IN KPROCESSOR_MODE AccessMode, + OUT PVOID* Object, + OUT POBJECT_HANDLE_INFORMATION HandleInfo OPTIONAL); /* * FUNCTION: Increments the reference count for a given object @@ -83,18 +148,33 @@ ObReferenceObjectByHandle(HANDLE Handle, * RETURNS: Status */ NTSTATUS STDCALL -ObReferenceObjectByPointer(PVOID Object, - ACCESS_MASK DesiredAccess, - POBJECT_TYPE ObjectType, - KPROCESSOR_MODE AccessMode); +ObReferenceObjectByPointer(IN PVOID Object, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_TYPE ObjectType, + IN KPROCESSOR_MODE AccessMode); NTSTATUS STDCALL -ObReferenceObjectByName(PUNICODE_STRING ObjectPath, - ULONG Attributes, - PACCESS_STATE PassedAccessState, - ACCESS_MASK DesiredAccess, - POBJECT_TYPE ObjectType, - KPROCESSOR_MODE AccessMode, - PVOID ParseContext, - PVOID* ObjectPtr); +ObReferenceObjectByName(IN PUNICODE_STRING ObjectPath, + IN ULONG Attributes, + IN PACCESS_STATE PassedAccessState OPTIONAL, + IN ACCESS_MASK DesiredAccess OPTIONAL, + IN POBJECT_TYPE ObjectType, + IN KPROCESSOR_MODE AccessMode, + IN OUT PVOID ParseContext OPTIONAL, + OUT PVOID* ObjectPtr); +VOID STDCALL +ObReleaseObjectSecurity(IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN BOOLEAN MemoryAllocated); + +/* +NTSTATUS STDCALL +ObSetSecurityDescriptorInfo(IN PVOID Object, + IN PSECURITY_INFORMATION SecurityInformation, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + ULONG Param4, + IN POOL_TYPE PoolType, + IN PGENERIC_MAPPING GenericMapping); +*/ + +#endif /* ndef _INCLUDE_DDK_OBFUNCS_H */ diff --git a/reactos/include/ddk/sefuncs.h b/reactos/include/ddk/sefuncs.h index 22c49224e6b..7325c5a32ec 100644 --- a/reactos/include/ddk/sefuncs.h +++ b/reactos/include/ddk/sefuncs.h @@ -1,6 +1,6 @@ #ifndef _INCLUDE_DDK_SEFUNCS_H #define _INCLUDE_DDK_SEFUNCS_H -/* $Id: sefuncs.h,v 1.16 2002/02/22 13:34:36 ekohl Exp $ */ +/* $Id: sefuncs.h,v 1.17 2002/02/22 17:57:17 ekohl Exp $ */ BOOLEAN STDCALL SeAccessCheck(IN PSECURITY_DESCRIPTOR SecurityDescriptor, @@ -54,6 +54,9 @@ SeCreateClientSecurity(IN struct _ETHREAD *Thread, NTSTATUS STDCALL SeDeassignSecurity(IN OUT PSECURITY_DESCRIPTOR* SecurityDescriptor); +VOID STDCALL +SeDeleteAccessState(IN PACCESS_STATE AccessState); + VOID STDCALL SeDeleteObjectAuditAlarm(IN PVOID Object, IN HANDLE Handle); diff --git a/reactos/ntoskrnl/ntoskrnl.def b/reactos/ntoskrnl/ntoskrnl.def index c396a37d844..ca9137aff1b 100644 --- a/reactos/ntoskrnl/ntoskrnl.def +++ b/reactos/ntoskrnl/ntoskrnl.def @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.def,v 1.128 2002/02/20 20:16:49 ekohl Exp $ +; $Id: ntoskrnl.def,v 1.129 2002/02/22 17:57:57 ekohl Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -554,14 +554,14 @@ NtVdmControl@8 NtW32Call@20 NtWaitForSingleObject@12 NtWriteFile@36 -;ObAssignSecurity@16 +ObAssignSecurity@16 ;ObCheckCreateObjectAccess@28 ;ObCheckObjectAccess@20 ;ObCreateObject@36 ObCreateObject@20 ;ObFindHandleForObject@20 -;ObGetObjectPointerCount@4 -;ObGetObjectSecurity@12 +ObGetObjectPointerCount@4 +ObGetObjectSecurity@12 ;ObInsertObject@24 ObMakeTemporaryObject@4 ObOpenObjectByName@28 @@ -573,7 +573,7 @@ ObOpenObjectByPointer@28 ObReferenceObjectByHandle@24 ObReferenceObjectByName@32 ObReferenceObjectByPointer@16 -;ObReleaseObjectSecurity@8 +ObReleaseObjectSecurity@8 ;ObSetSecurityDescriptorInfo@24 ;PfxFindPrefix ;PfxInitialize @@ -846,9 +846,9 @@ SePublicDefaultDacl DATA SeReleaseSubjectContext@4 ;SeSetAccessStateGenericMapping@8 ;SeSetSecurityDescriptorInfo@24 -;SeSinglePrivilegeCheck@12 +SeSinglePrivilegeCheck@12 SeSystemDefaultDacl DATA -;SeTokenImpersonationLevel@4 +SeTokenImpersonationLevel@4 SeTokenType@4 ;SeUnlockSubjectContext@4 ;SeUnregisterLogonSessionTerminatedRoutine@4 diff --git a/reactos/ntoskrnl/ntoskrnl.edf b/reactos/ntoskrnl/ntoskrnl.edf index e150e48f74c..2e00fb3332b 100644 --- a/reactos/ntoskrnl/ntoskrnl.edf +++ b/reactos/ntoskrnl/ntoskrnl.edf @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.edf,v 1.114 2002/02/20 20:16:49 ekohl Exp $ +; $Id: ntoskrnl.edf,v 1.115 2002/02/22 17:57:57 ekohl Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -554,14 +554,14 @@ NtVdmControl=NtVdmControl@8 NtW32Call=NtW32Call@20 NtWaitForSingleObject=NtWaitForSingleObject@12 NtWriteFile=NtWriteFile@36 -;ObAssignSecurity=ObAssignSecurity@16 +ObAssignSecurity=ObAssignSecurity@16 ;ObCheckCreateObjectAccess=ObCheckCreateObjectAccess@28 ;ObCheckObjectAccess=ObCheckObjectAccess@20 ;ObCreateObject=ObCreateObject@36 ObCreateObject=ObCreateObject@20 ;ObFindHandleForObject=ObFindHandleForObject@20 -;ObGetObjectPointerCount=ObGetObjectPointerCount@4 -;ObGetObjectSecurity=ObGetObjectSecurity@12 +ObGetObjectPointerCount=ObGetObjectPointerCount@4 +ObGetObjectSecurity=ObGetObjectSecurity@12 ;ObInsertObject=ObInsertObject@24 ObMakeTemporaryObject=ObMakeTemporaryObject@4 ObOpenObjectByName=ObOpenObjectByName@28 @@ -573,7 +573,7 @@ ObfReferenceObject=@ObfReferenceObject@4 ObReferenceObjectByHandle=ObReferenceObjectByHandle@24 ObReferenceObjectByName=ObReferenceObjectByName@32 ObReferenceObjectByPointer=ObReferenceObjectByPointer@16 -;ObReleaseObjectSecurity=ObReleaseObjectSecurity@8 +ObReleaseObjectSecurity=ObReleaseObjectSecurity@8 ;ObSetSecurityDescriptorInfo=ObSetSecurityDescriptorInfo@24 ;PfxFindPrefix ;PfxInitialize @@ -845,9 +845,9 @@ SePublicDefaultDacl DATA SeReleaseSubjectContext=SeReleaseSubjectContext@4 ;SeSetAccessStateGenericMapping=SeSetAccessStateGenericMapping@8 ;SeSetSecurityDescriptorInfo=SeSetSecurityDescriptorInfo@24 -;SeSinglePrivilegeCheck=SeSinglePrivilegeCheck@12 +SeSinglePrivilegeCheck=SeSinglePrivilegeCheck@12 SeSystemDefaultDacl DATA -;SeTokenImpersonationLevel=SeTokenImpersonationLevel@4 +SeTokenImpersonationLevel=SeTokenImpersonationLevel@4 SeTokenType=SeTokenType@4 ;SeUnlockSubjectContext=SeUnlockSubjectContext@4 ;SeUnregisterLogonSessionTerminatedRoutine=SeUnregisterLogonSessionTerminatedRoutine@4 diff --git a/reactos/ntoskrnl/ob/security.c b/reactos/ntoskrnl/ob/security.c index 5dfff6c6a59..cef5182186b 100644 --- a/reactos/ntoskrnl/ob/security.c +++ b/reactos/ntoskrnl/ob/security.c @@ -17,6 +17,33 @@ /* FUNCTIONS ***************************************************************/ +NTSTATUS STDCALL +ObAssignSecurity(IN PACCESS_STATE AccessState, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PVOID Object, + IN POBJECT_TYPE Type) +{ + UNIMPLEMENTED; +} + + +NTSTATUS STDCALL +ObGetObjectSecurity(IN PVOID Object, + OUT PSECURITY_DESCRIPTOR *SecurityDescriptor, + OUT PBOOLEAN MemoryAllocated) +{ + UNIMPLEMENTED; +} + + +VOID STDCALL +ObReleaseObjectSecurity(IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN BOOLEAN MemoryAllocated) +{ + UNIMPLEMENTED; +} + + NTSTATUS STDCALL NtQuerySecurityObject(IN HANDLE ObjectHandle, IN CINT SecurityObjectInformationClass, @@ -67,5 +94,4 @@ NtSetSecurityObject(IN HANDLE Handle, UNIMPLEMENTED; } - - +/* EOF */