ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

dbgktypes.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.