- Update NDK with proper (when possible) RTL structure names that were previously...
[reactos.git] / reactos / include / ndk / dbgktypes.h
1 /*
2 * PROJECT: ReactOS Native Headers
3 * FILE: include/ndk/dbgktypes.h
4 * PURPOSE: Definitions for User-Mode Kernel Debugging not in DDK/IFS
5 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
6 * UPDATE HISTORY:
7 * Created 25/06/05
8 */
9
10 #ifndef _DBGKTYPES_H
11 #define _DBGKTYPES_H
12
13 /* DEPENDENCIES **************************************************************/
14
15 /* EXPORTED DATA *************************************************************/
16
17 /* CONSTANTS *****************************************************************/
18 #define DEBUG_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0F)
19 #define DEBUG_OBJECT_WAIT_STATE_CHANGE 0x0001
20 #define DEBUG_OBJECT_ADD_REMOVE_PROCESS 0x0002
21
22 /* ENUMERATIONS **************************************************************/
23
24 typedef enum _DEBUGOBJECTINFOCLASS
25 {
26 DebugObjectUnusedInformation,
27 DebugObjectKillProcessOnExitInformation
28 } DEBUGOBJECTINFOCLASS, *PDEBUGOBJECTINFOCLASS;
29
30 /* TYPES *********************************************************************/
31
32 typedef struct _DEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION
33 {
34 ULONG KillProcessOnExit;
35 } DEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION, *
36 PDEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION;
37
38 #ifndef NTOS_MODE_USER
39 typedef struct _DBGK_DEBUG_OBJECT
40 {
41 KEVENT Event;
42 FAST_MUTEX Mutex;
43 LIST_ENTRY StateEventListEntry;
44 union
45 {
46 ULONG Flags;
47 struct
48 {
49 UCHAR DebuggerInactive:1;
50 UCHAR KillProcessOnExit:1;
51 };
52 };
53 } DBGK_DEBUG_OBJECT, *PDBGK_DEBUG_OBJECT;
54 #endif
55
56 typedef enum _DBG_STATE
57 {
58 DbgIdle,
59 DbgReplyPending,
60 DbgCreateThreadStateChange,
61 DbgCreateProcessStateChange,
62 DbgExitThreadStateChange,
63 DbgExitProcessStateChange,
64 DbgExceptionStateChange,
65 DbgBreakpointStateChange,
66 DbgSingleStepStateChange,
67 DbgLoadDllStateChange,
68 DbgUnloadDllStateChange
69 } DBG_STATE, *PDBG_STATE;
70
71 typedef struct _DBGKM_EXCEPTION
72 {
73 EXCEPTION_RECORD ExceptionRecord;
74 ULONG FirstChance;
75 } DBGKM_EXCEPTION, *PDBGKM_EXCEPTION;
76
77 typedef struct _DBGKM_CREATE_THREAD
78 {
79 ULONG SubSystemKey;
80 PVOID StartAddress;
81 } DBGKM_CREATE_THREAD, *PDBGKM_CREATE_THREAD;
82
83 typedef struct _DBGKM_CREATE_PROCESS
84 {
85 ULONG SubSystemKey;
86 HANDLE FileHandle;
87 PVOID BaseOfImage;
88 ULONG DebugInfoFileOffset;
89 ULONG DebugInfoSize;
90 DBGKM_CREATE_THREAD InitialThread;
91 } DBGKM_CREATE_PROCESS, *PDBGKM_CREATE_PROCESS;
92
93 typedef struct _DBGKM_EXIT_THREAD
94 {
95 NTSTATUS ExitStatus;
96 } DBGKM_EXIT_THREAD, *PDBGKM_EXIT_THREAD;
97
98 typedef struct _DBGKM_EXIT_PROCESS
99 {
100 NTSTATUS ExitStatus;
101 } DBGKM_EXIT_PROCESS, *PDBGKM_EXIT_PROCESS;
102
103 typedef struct _DBGKM_LOAD_DLL
104 {
105 HANDLE FileHandle;
106 PVOID BaseOfDll;
107 ULONG DebugInfoFileOffset;
108 ULONG DebugInfoSize;
109 } DBGKM_LOAD_DLL, *PDBGKM_LOAD_DLL;
110
111 typedef struct _DBGKM_UNLOAD_DLL
112 {
113 PVOID BaseAddress;
114 } DBGKM_UNLOAD_DLL, *PDBGKM_UNLOAD_DLL;
115
116 typedef struct _DBGUI_WAIT_STATE_CHANGE
117 {
118 DBG_STATE NewState;
119 CLIENT_ID AppClientId;
120 union
121 {
122 struct
123 {
124 HANDLE HandleToThread;
125 DBGKM_CREATE_THREAD NewThread;
126 } CreateThread;
127 struct
128 {
129 HANDLE HandleToProcess;
130 HANDLE HandleToThread;
131 DBGKM_CREATE_PROCESS NewProcess;
132 } CreateProcessInfo;
133 DBGKM_EXIT_THREAD ExitThread;
134 DBGKM_EXIT_PROCESS ExitProcess;
135 DBGKM_EXCEPTION Exception;
136 DBGKM_LOAD_DLL LoadDll;
137 DBGKM_UNLOAD_DLL UnloadDll;
138 } StateInfo;
139 } DBGUI_WAIT_STATE_CHANGE, *PDBGUI_WAIT_STATE_CHANGE;
140
141 typedef struct _DBGKM_MSG
142 {
143 PORT_MESSAGE h;
144 ULONG Opcode;
145 ULONG Status;
146 union
147 {
148 DBGKM_EXCEPTION Exception;
149 DBGKM_CREATE_THREAD CreateThread;
150 DBGKM_CREATE_PROCESS CreateProcess;
151 DBGKM_EXIT_THREAD ExitThread;
152 DBGKM_EXIT_PROCESS ExitProcess;
153 DBGKM_LOAD_DLL LoadDll;
154 DBGKM_UNLOAD_DLL UnloadDll;
155 };
156 } DBGKM_MSG, *PDBGKM_MSG;
157
158 #endif