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,