3 Copyright (c) Alex Ionescu. All rights reserved.
11 Type definitions for the User Mode Debugging Facility.
15 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004
29 // Debug Object Access Masks
31 #define DEBUG_OBJECT_WAIT_STATE_CHANGE 0x0001
32 #define DEBUG_OBJECT_ADD_REMOVE_PROCESS 0x0002
33 #define DEBUG_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0F)
36 // Debug Object Information Classes for NtQueryDebugObject
38 typedef enum _DEBUGOBJECTINFOCLASS
40 DebugObjectUnusedInformation
,
41 DebugObjectKillProcessOnExitInformation
42 } DEBUGOBJECTINFOCLASS
, *PDEBUGOBJECTINFOCLASS
;
45 // Debug Object Information Structures
47 typedef struct _DEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION
49 ULONG KillProcessOnExit
;
50 } DEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION
, *PDEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION
;
52 #ifndef NTOS_MODE_USER
57 typedef struct _DBGK_DEBUG_OBJECT
61 LIST_ENTRY StateEventListEntry
;
67 UCHAR DebuggerInactive
:1;
68 UCHAR KillProcessOnExit
:1;
71 } DBGK_DEBUG_OBJECT
, *PDBGK_DEBUG_OBJECT
;
78 typedef enum _DBG_STATE
82 DbgCreateThreadStateChange
,
83 DbgCreateProcessStateChange
,
84 DbgExitThreadStateChange
,
85 DbgExitProcessStateChange
,
86 DbgExceptionStateChange
,
87 DbgBreakpointStateChange
,
88 DbgSingleStepStateChange
,
89 DbgLoadDllStateChange
,
90 DbgUnloadDllStateChange
91 } DBG_STATE
, *PDBG_STATE
;
94 // Debug Message Structures
96 typedef struct _DBGKM_EXCEPTION
98 EXCEPTION_RECORD ExceptionRecord
;
100 } DBGKM_EXCEPTION
, *PDBGKM_EXCEPTION
;
102 typedef struct _DBGKM_CREATE_THREAD
106 } DBGKM_CREATE_THREAD
, *PDBGKM_CREATE_THREAD
;
108 typedef struct _DBGKM_CREATE_PROCESS
113 ULONG DebugInfoFileOffset
;
115 DBGKM_CREATE_THREAD InitialThread
;
116 } DBGKM_CREATE_PROCESS
, *PDBGKM_CREATE_PROCESS
;
118 typedef struct _DBGKM_EXIT_THREAD
121 } DBGKM_EXIT_THREAD
, *PDBGKM_EXIT_THREAD
;
123 typedef struct _DBGKM_EXIT_PROCESS
126 } DBGKM_EXIT_PROCESS
, *PDBGKM_EXIT_PROCESS
;
128 typedef struct _DBGKM_LOAD_DLL
132 ULONG DebugInfoFileOffset
;
134 } DBGKM_LOAD_DLL
, *PDBGKM_LOAD_DLL
;
136 typedef struct _DBGKM_UNLOAD_DLL
139 } DBGKM_UNLOAD_DLL
, *PDBGKM_UNLOAD_DLL
;
142 // User-Mode Debug State Change Structure
144 typedef struct _DBGUI_WAIT_STATE_CHANGE
147 CLIENT_ID AppClientId
;
152 HANDLE HandleToThread
;
153 DBGKM_CREATE_THREAD NewThread
;
157 HANDLE HandleToProcess
;
158 HANDLE HandleToThread
;
159 DBGKM_CREATE_PROCESS NewProcess
;
161 DBGKM_EXIT_THREAD ExitThread
;
162 DBGKM_EXIT_PROCESS ExitProcess
;
163 DBGKM_EXCEPTION Exception
;
164 DBGKM_LOAD_DLL LoadDll
;
165 DBGKM_UNLOAD_DLL UnloadDll
;
167 } DBGUI_WAIT_STATE_CHANGE
, *PDBGUI_WAIT_STATE_CHANGE
;
172 typedef struct _DBGKM_MSG
179 DBGKM_EXCEPTION Exception
;
180 DBGKM_CREATE_THREAD CreateThread
;
181 DBGKM_CREATE_PROCESS CreateProcess
;
182 DBGKM_EXIT_THREAD ExitThread
;
183 DBGKM_EXIT_PROCESS ExitProcess
;
184 DBGKM_LOAD_DLL LoadDll
;
185 DBGKM_UNLOAD_DLL UnloadDll
;
187 } DBGKM_MSG
, *PDBGKM_MSG
;