Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygendbgktypes.h
Go to the documentation of this file.
00001 /*++ NDK Version: 0098 00002 00003 Copyright (c) Alex Ionescu. All rights reserved. 00004 00005 Header Name: 00006 00007 dbgktypes.h 00008 00009 Abstract: 00010 00011 Type definitions for the User Mode Debugging Facility. 00012 00013 Author: 00014 00015 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006 00016 00017 --*/ 00018 00019 #ifndef _DBGKTYPES_H 00020 #define _DBGKTYPES_H 00021 00022 // 00023 // Dependencies 00024 // 00025 #include <umtypes.h> 00026 #include <lpctypes.h> 00027 00028 // 00029 // Debug Object Access Masks 00030 // 00031 #define DEBUG_OBJECT_WAIT_STATE_CHANGE 0x0001 00032 #define DEBUG_OBJECT_ADD_REMOVE_PROCESS 0x0002 00033 #define DEBUG_OBJECT_SET_INFORMATION 0x0004 00034 #define DEBUG_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0F) 00035 00036 // 00037 // Debug Event Flags 00038 // 00039 #define DEBUG_EVENT_READ (0x01) 00040 #define DEBUG_EVENT_NOWAIT (0x02) 00041 #define DEBUG_EVENT_INACTIVE (0x04) 00042 #define DEBUG_EVENT_RELEASE (0x08) 00043 #define DEBUG_EVENT_PROTECT_FAILED (0x10) 00044 #define DEBUG_EVENT_SUSPEND (0x20) 00045 00046 // 00047 // NtCreateDebugObject Flags 00048 // 00049 #define DBGK_KILL_PROCESS_ON_EXIT (0x1) 00050 #define DBGK_ALL_FLAGS (DBGK_KILL_PROCESS_ON_EXIT) 00051 00052 // 00053 // Debug Object Information Classes for NtQueryDebugObject 00054 // 00055 typedef enum _DEBUGOBJECTINFOCLASS 00056 { 00057 DebugObjectUnusedInformation, 00058 DebugObjectKillProcessOnExitInformation 00059 } DEBUGOBJECTINFOCLASS, *PDEBUGOBJECTINFOCLASS; 00060 00061 // 00062 // Debug Message API Number 00063 // 00064 typedef enum _DBGKM_APINUMBER 00065 { 00066 DbgKmExceptionApi = 0, 00067 DbgKmCreateThreadApi = 1, 00068 DbgKmCreateProcessApi = 2, 00069 DbgKmExitThreadApi = 3, 00070 DbgKmExitProcessApi = 4, 00071 DbgKmLoadDllApi = 5, 00072 DbgKmUnloadDllApi = 6, 00073 DbgKmErrorReportApi = 7, 00074 DbgKmMaxApiNumber = 8, 00075 } DBGKM_APINUMBER; 00076 00077 // 00078 // Debug Object Information Structures 00079 // 00080 typedef struct _DEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION 00081 { 00082 ULONG KillProcessOnExit; 00083 } DEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION, *PDEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION; 00084 00085 #ifndef NTOS_MODE_USER 00086 00087 // 00088 // Debug Object 00089 // 00090 typedef struct _DEBUG_OBJECT 00091 { 00092 KEVENT EventsPresent; 00093 FAST_MUTEX Mutex; 00094 LIST_ENTRY EventList; 00095 union 00096 { 00097 ULONG Flags; 00098 struct 00099 { 00100 UCHAR DebuggerInactive:1; 00101 UCHAR KillProcessOnExit:1; 00102 }; 00103 }; 00104 } DEBUG_OBJECT, *PDEBUG_OBJECT; 00105 00106 #endif 00107 00108 // 00109 // Debug States 00110 // 00111 typedef enum _DBG_STATE 00112 { 00113 DbgIdle, 00114 DbgReplyPending, 00115 DbgCreateThreadStateChange, 00116 DbgCreateProcessStateChange, 00117 DbgExitThreadStateChange, 00118 DbgExitProcessStateChange, 00119 DbgExceptionStateChange, 00120 DbgBreakpointStateChange, 00121 DbgSingleStepStateChange, 00122 DbgLoadDllStateChange, 00123 DbgUnloadDllStateChange 00124 } DBG_STATE, *PDBG_STATE; 00125 00126 // 00127 // Debug Message Structures 00128 // 00129 typedef struct _DBGKM_EXCEPTION 00130 { 00131 EXCEPTION_RECORD ExceptionRecord; 00132 ULONG FirstChance; 00133 } DBGKM_EXCEPTION, *PDBGKM_EXCEPTION; 00134 00135 typedef struct _DBGKM_CREATE_THREAD 00136 { 00137 ULONG SubSystemKey; 00138 PVOID StartAddress; 00139 } DBGKM_CREATE_THREAD, *PDBGKM_CREATE_THREAD; 00140 00141 typedef struct _DBGKM_CREATE_PROCESS 00142 { 00143 ULONG SubSystemKey; 00144 HANDLE FileHandle; 00145 PVOID BaseOfImage; 00146 ULONG DebugInfoFileOffset; 00147 ULONG DebugInfoSize; 00148 DBGKM_CREATE_THREAD InitialThread; 00149 } DBGKM_CREATE_PROCESS, *PDBGKM_CREATE_PROCESS; 00150 00151 typedef struct _DBGKM_EXIT_THREAD 00152 { 00153 NTSTATUS ExitStatus; 00154 } DBGKM_EXIT_THREAD, *PDBGKM_EXIT_THREAD; 00155 00156 typedef struct _DBGKM_EXIT_PROCESS 00157 { 00158 NTSTATUS ExitStatus; 00159 } DBGKM_EXIT_PROCESS, *PDBGKM_EXIT_PROCESS; 00160 00161 typedef struct _DBGKM_LOAD_DLL 00162 { 00163 HANDLE FileHandle; 00164 PVOID BaseOfDll; 00165 ULONG DebugInfoFileOffset; 00166 ULONG DebugInfoSize; 00167 PVOID NamePointer; 00168 } DBGKM_LOAD_DLL, *PDBGKM_LOAD_DLL; 00169 00170 typedef struct _DBGKM_UNLOAD_DLL 00171 { 00172 PVOID BaseAddress; 00173 } DBGKM_UNLOAD_DLL, *PDBGKM_UNLOAD_DLL; 00174 00175 // 00176 // User-Mode Debug State Change Structure 00177 // 00178 typedef struct _DBGUI_WAIT_STATE_CHANGE 00179 { 00180 DBG_STATE NewState; 00181 CLIENT_ID AppClientId; 00182 union 00183 { 00184 struct 00185 { 00186 HANDLE HandleToThread; 00187 DBGKM_CREATE_THREAD NewThread; 00188 } CreateThread; 00189 struct 00190 { 00191 HANDLE HandleToProcess; 00192 HANDLE HandleToThread; 00193 DBGKM_CREATE_PROCESS NewProcess; 00194 } CreateProcessInfo; 00195 DBGKM_EXIT_THREAD ExitThread; 00196 DBGKM_EXIT_PROCESS ExitProcess; 00197 DBGKM_EXCEPTION Exception; 00198 DBGKM_LOAD_DLL LoadDll; 00199 DBGKM_UNLOAD_DLL UnloadDll; 00200 } StateInfo; 00201 } DBGUI_WAIT_STATE_CHANGE, *PDBGUI_WAIT_STATE_CHANGE; 00202 00203 // 00204 // LPC Debug Message 00205 // 00206 typedef struct _DBGKM_MSG 00207 { 00208 PORT_MESSAGE h; 00209 DBGKM_APINUMBER ApiNumber; 00210 NTSTATUS ReturnedStatus; 00211 union 00212 { 00213 DBGKM_EXCEPTION Exception; 00214 DBGKM_CREATE_THREAD CreateThread; 00215 DBGKM_CREATE_PROCESS CreateProcess; 00216 DBGKM_EXIT_THREAD ExitThread; 00217 DBGKM_EXIT_PROCESS ExitProcess; 00218 DBGKM_LOAD_DLL LoadDll; 00219 DBGKM_UNLOAD_DLL UnloadDll; 00220 }; 00221 } DBGKM_MSG, *PDBGKM_MSG; 00222 00223 #ifndef NTOS_MODE_USER 00224 00225 // 00226 // Debug Event 00227 // 00228 typedef struct _DEBUG_EVENT 00229 { 00230 LIST_ENTRY EventList; 00231 KEVENT ContinueEvent; 00232 CLIENT_ID ClientId; 00233 PEPROCESS Process; 00234 PETHREAD Thread; 00235 NTSTATUS Status; 00236 ULONG Flags; 00237 PETHREAD BackoutThread; 00238 DBGKM_MSG ApiMsg; 00239 } DEBUG_EVENT, *PDEBUG_EVENT; 00240 00241 00242 #endif 00243 00244 #endif Generated on Sat May 26 2012 04:29:28 for ReactOS by
1.7.6.1
|