From 4baf0a90022f45d4618a3b8cc8f9533a28c1fb0f Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Tue, 21 Oct 2003 21:46:39 +0000 Subject: [PATCH] Implemented ObQueryObjectAuditingByHandle(). svn path=/trunk/; revision=6399 --- reactos/ntoskrnl/ntoskrnl.def | 4 ++-- reactos/ntoskrnl/ntoskrnl.edf | 4 ++-- reactos/ntoskrnl/ob/handle.c | 34 +++++++++++++++++++++++++++++++++- 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/reactos/ntoskrnl/ntoskrnl.def b/reactos/ntoskrnl/ntoskrnl.def index d8ace06c010..03952c4f2cc 100644 --- a/reactos/ntoskrnl/ntoskrnl.def +++ b/reactos/ntoskrnl/ntoskrnl.def @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.def,v 1.167 2003/09/25 20:02:09 ekohl Exp $ +; $Id: ntoskrnl.def,v 1.168 2003/10/21 21:46:39 ekohl Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -619,7 +619,7 @@ ObMakeTemporaryObject@4 ObOpenObjectByName@28 ObOpenObjectByPointer@28 ObQueryNameString@16 -;ObQueryObjectAuditingByHandle@8 +ObQueryObjectAuditingByHandle@8 @ObfDereferenceObject@4 @ObfReferenceObject@4 ObReferenceObjectByHandle@24 diff --git a/reactos/ntoskrnl/ntoskrnl.edf b/reactos/ntoskrnl/ntoskrnl.edf index 6a2ad560963..53fce71c112 100644 --- a/reactos/ntoskrnl/ntoskrnl.edf +++ b/reactos/ntoskrnl/ntoskrnl.edf @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.edf,v 1.154 2003/09/25 20:02:09 ekohl Exp $ +; $Id: ntoskrnl.edf,v 1.155 2003/10/21 21:46:39 ekohl Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -620,7 +620,7 @@ ObMakeTemporaryObject=ObMakeTemporaryObject@4 ObOpenObjectByName=ObOpenObjectByName@28 ObOpenObjectByPointer=ObOpenObjectByPointer@28 ObQueryNameString=ObQueryNameString@16 -;ObQueryObjectAuditingByHandle=ObQueryObjectAuditingByHandle@8 +ObQueryObjectAuditingByHandle=ObQueryObjectAuditingByHandle@8 ObfDereferenceObject=@ObfDereferenceObject@4 ObfReferenceObject=@ObfReferenceObject@4 ObReferenceObjectByHandle=ObReferenceObjectByHandle@24 diff --git a/reactos/ntoskrnl/ob/handle.c b/reactos/ntoskrnl/ob/handle.c index deda6d27b29..439eb3be83a 100644 --- a/reactos/ntoskrnl/ob/handle.c +++ b/reactos/ntoskrnl/ob/handle.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: handle.c,v 1.53 2003/10/21 15:50:51 ekohl Exp $ +/* $Id: handle.c,v 1.54 2003/10/21 21:46:02 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -684,6 +684,38 @@ NTSTATUS ObCreateHandle(PEPROCESS Process, } +/* + * @implemented + */ +NTSTATUS STDCALL +ObQueryObjectAuditingByHandle(IN HANDLE Handle, + OUT PBOOLEAN GenerateOnClose) +{ + PEPROCESS Process; + KIRQL oldIrql; + PHANDLE_REP HandleRep; + + DPRINT("ObQueryObjectAuditingByHandle(Handle %x)\n", Handle); + + Process = PsGetCurrentProcess(); + + KeAcquireSpinLock(&Process->HandleTable.ListLock, &oldIrql); + HandleRep = ObpGetObjectByHandle(&Process->HandleTable, + Handle); + if (HandleRep == NULL) + { + KeReleaseSpinLock(&Process->HandleTable.ListLock, oldIrql); + return STATUS_INVALID_HANDLE; + } + + *GenerateOnClose = (BOOLEAN)((ULONG_PTR)HandleRep->ObjectBody | OB_HANDLE_FLAG_AUDIT); + + KeReleaseSpinLock(&Process->HandleTable.ListLock, oldIrql); + + return STATUS_SUCCESS; +} + + /* * @implemented */