- Implement the entire kernel-mode native interface of Debug Objects, minus a few missing operations in NtWaitForDebugEvent:

- NtCreateDebugObject, NtDebugContinue, NtDebugActiveProcess, NtRemoveProcessDebug, NtSetInformationDebugObject, NtWaitForDebugEvent.
- Of course, the entire backend is stubbed out.
- Implement Debug object initialization (not called yet) and close(not done) and delete (done) callbacks.

svn path=/trunk/; revision=24572
This commit is contained in:
Alex Ionescu
2006-10-19 07:04:21 +00:00
parent 42d7cdbd64
commit aef24e2a4a
3 changed files with 661 additions and 58 deletions
+19
View File
@@ -1099,6 +1099,25 @@ extern "C" {
#define STATUS_CLUSTER_NETWORK_NOT_INTERNAL ((NTSTATUS)0xC0130016L)
#define STATUS_CLUSTER_POISONED ((NTSTATUS)0xC0130017L)
/*
* Debug codes
*/
#define DBG_EXCEPTION_HANDLED ((NTSTATUS)0x00010001)
#define DBG_CONTINUE ((NTSTATUS)0x00010002)
#define DBG_REPLY_LATER ((NTSTATUS)0x40010001)
#define DBG_UNABLE_TO_PROVIDE_HANDLE ((NTSTATUS)0x40010002)
#define DBG_TERMINATE_THREAD ((NTSTATUS)0x40010003)
#define DBG_TERMINATE_PROCESS ((NTSTATUS)0x40010004)
#define DBG_CONTROL_C ((NTSTATUS)0x40010005)
#define DBG_PRINTEXCEPTION_C ((NTSTATUS)0x40010006)
#define DBG_RIPEXCEPTION ((NTSTATUS)0x40010007)
#define DBG_CONTROL_BREAK ((NTSTATUS)0x40010008)
#define DBG_COMMAND_EXCEPTION ((NTSTATUS)0x40010009)
#define DBG_EXCEPTION_NOT_HANDLED ((NTSTATUS)0x80010001)
#define DBG_NO_STATE_CHANGE ((NTSTATUS)0xC0010001)
#define DBG_APP_NOT_IDLE ((NTSTATUS)0xC0010002)
#ifdef __cplusplus
}
#endif
+24 -2
View File
@@ -30,6 +30,7 @@ Author:
//
#define DEBUG_OBJECT_WAIT_STATE_CHANGE 0x0001
#define DEBUG_OBJECT_ADD_REMOVE_PROCESS 0x0002
#define DEBUG_OBJECT_SET_INFORMATION 0x0004
#define DEBUG_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0F)
//
@@ -172,8 +173,8 @@ typedef struct _DBGUI_WAIT_STATE_CHANGE
typedef struct _DBGKM_MSG
{
PORT_MESSAGE h;
ULONG Opcode;
ULONG Status;
ULONG ApiNumber;
ULONG ReturnedStatus;
union
{
DBGKM_EXCEPTION Exception;
@@ -186,4 +187,25 @@ typedef struct _DBGKM_MSG
};
} DBGKM_MSG, *PDBGKM_MSG;
#ifndef NTOS_MODE_USER
//
// Debug Event
//
typedef struct _DEBUG_EVENT
{
LIST_ENTRY EventList;
KEVENT ContinueEvent;
CLIENT_ID ClientId;
PEPROCESS Process;
PETHREAD Thread;
NTSTATUS Status;
ULONG Flags;
PETHREAD BackoutThread;
DBGKM_MSG ApiMsg;
} DEBUG_EVENT, *PDEBUG_EVENT;
#endif
#endif