From 1996b84faef50244b2fc6ada77a7da52c31664ef Mon Sep 17 00:00:00 2001 From: Stefan Ginsberg Date: Wed, 15 Jul 2009 14:01:15 +0000 Subject: [PATCH] - The 4th parameter of NtCreateDebugObject is not a BOOLEAN -- it is a ULONG, meaning it could contain several flags (but only 0x1 seems to be valid). Add DBGK_KILL_PROCESS_ON_EXIT as this flag and use it. svn path=/trunk/; revision=41969 --- reactos/dll/ntdll/dbg/dbgui.c | 2 +- reactos/include/ndk/dbgkfuncs.h | 2 +- reactos/include/ndk/dbgktypes.h | 6 ++++++ reactos/ntoskrnl/dbgk/dbgkobj.c | 7 +++++-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/reactos/dll/ntdll/dbg/dbgui.c b/reactos/dll/ntdll/dbg/dbgui.c index 376b09d35d6..b27a5e2cc3e 100644 --- a/reactos/dll/ntdll/dbg/dbgui.c +++ b/reactos/dll/ntdll/dbg/dbgui.c @@ -33,7 +33,7 @@ DbgUiConnectToDbg(VOID) return ZwCreateDebugObject(&NtCurrentTeb()->DbgSsReserved[1], DEBUG_OBJECT_ALL_ACCESS, &ObjectAttributes, - TRUE); + DBGK_KILL_PROCESS_ON_EXIT); } /* diff --git a/reactos/include/ndk/dbgkfuncs.h b/reactos/include/ndk/dbgkfuncs.h index a00efca82cd..1e2b1bb964a 100644 --- a/reactos/include/ndk/dbgkfuncs.h +++ b/reactos/include/ndk/dbgkfuncs.h @@ -43,7 +43,7 @@ NtCreateDebugObject( OUT PHANDLE DebugHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, - IN BOOLEAN KillProcessOnExit + IN ULONG Flags ); NTSYSCALLAPI diff --git a/reactos/include/ndk/dbgktypes.h b/reactos/include/ndk/dbgktypes.h index daf536bc12f..0be007dc67b 100644 --- a/reactos/include/ndk/dbgktypes.h +++ b/reactos/include/ndk/dbgktypes.h @@ -43,6 +43,12 @@ Author: #define DEBUG_EVENT_PROTECT_FAILED (0x10) #define DEBUG_EVENT_SUSPEND (0x20) +// +// NtCreateDebugObject Flags +// +#define DBGK_KILL_PROCESS_ON_EXIT (0x1) +#define DBGK_ALL_FLAGS (DBGK_KILL_PROCESS_ON_EXIT) + // // Debug Object Information Classes for NtQueryDebugObject // diff --git a/reactos/ntoskrnl/dbgk/dbgkobj.c b/reactos/ntoskrnl/dbgk/dbgkobj.c index 528b9c94511..13676884150 100644 --- a/reactos/ntoskrnl/dbgk/dbgkobj.c +++ b/reactos/ntoskrnl/dbgk/dbgkobj.c @@ -1512,7 +1512,7 @@ NTAPI NtCreateDebugObject(OUT PHANDLE DebugHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, - IN BOOLEAN KillProcessOnExit) + IN ULONG Flags) { KPROCESSOR_MODE PreviousMode = ExGetPreviousMode(); PDEBUG_OBJECT DebugObject; @@ -1537,6 +1537,9 @@ NtCreateDebugObject(OUT PHANDLE DebugHandle, if (!NT_SUCCESS(Status)) return Status; } + /* Check for invalid flags */ + if (Flags & ~DBGK_ALL_FLAGS) return STATUS_INVALID_PARAMETER; + /* Create the Object */ Status = ObCreateObject(PreviousMode, DbgkDebugObjectType, @@ -1561,7 +1564,7 @@ NtCreateDebugObject(OUT PHANDLE DebugHandle, FALSE); /* Set the Flags */ - DebugObject->KillProcessOnExit = KillProcessOnExit; + DebugObject->Flags = Flags; /* Insert it */ Status = ObInsertObject((PVOID)DebugObject,