1 /*++ NDK Version: 0098 2 3 Copyright (c) Alex Ionescu. All rights reserved. 4 5 Header Name: 6 7 kdtypes.h 8 9 Abstract: 10 11 Type definitions for the Kernel Debugger. 12 13 Author: 14 15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006 16 17 --*/ 18 19 #ifndef _KDTYPES_H 20 #define _KDTYPES_H 21 22 // 23 // Dependencies 24 // 25 #include <umtypes.h> 26 27 // 28 // Debug Filter Levels 29 // 30 #define DPFLTR_ERROR_LEVEL 0 31 #define DPFLTR_WARNING_LEVEL 1 32 #define DPFLTR_TRACE_LEVEL 2 33 #define DPFLTR_INFO_LEVEL 3 34 #define DPFLTR_MASK 0x80000000 35 36 // 37 // Debug Status Codes 38 // 39 #define DBG_STATUS_CONTROL_C 1 40 #define DBG_STATUS_SYSRQ 2 41 #define DBG_STATUS_BUGCHECK_FIRST 3 42 #define DBG_STATUS_BUGCHECK_SECOND 4 43 #define DBG_STATUS_FATAL 5 44 #define DBG_STATUS_DEBUG_CONTROL 6 45 #define DBG_STATUS_WORKER 7 46 47 // 48 // DebugService Control Types 49 // 50 #define BREAKPOINT_BREAK 0 51 #define BREAKPOINT_PRINT 1 52 #define BREAKPOINT_PROMPT 2 53 #define BREAKPOINT_LOAD_SYMBOLS 3 54 #define BREAKPOINT_UNLOAD_SYMBOLS 4 55 #define BREAKPOINT_COMMAND_STRING 5 56 57 // 58 // Debug Control Codes for NtSystemDebugcontrol 59 // 60 typedef enum _SYSDBG_COMMAND 61 { 62 SysDbgQueryModuleInformation = 0, 63 SysDbgQueryTraceInformation = 1, 64 SysDbgSetTracepoint = 2, 65 SysDbgSetSpecialCall = 3, 66 SysDbgClearSpecialCalls = 4, 67 SysDbgQuerySpecialCalls = 5, 68 SysDbgBreakPoint = 6, 69 SysDbgQueryVersion = 7, 70 SysDbgReadVirtual = 8, 71 SysDbgWriteVirtual = 9, 72 SysDbgReadPhysical = 10, 73 SysDbgWritePhysical = 11, 74 SysDbgReadControlSpace = 12, 75 SysDbgWriteControlSpace = 13, 76 SysDbgReadIoSpace = 14, 77 SysDbgWriteIoSpace = 15, 78 SysDbgReadMsr = 16, 79 SysDbgWriteMsr = 17, 80 SysDbgReadBusData = 18, 81 SysDbgWriteBusData = 19, 82 SysDbgCheckLowMemory = 20, 83 SysDbgEnableKernelDebugger = 21, 84 SysDbgDisableKernelDebugger = 22, 85 SysDbgGetAutoKdEnable = 23, 86 SysDbgSetAutoKdEnable = 24, 87 SysDbgGetPrintBufferSize = 25, 88 SysDbgSetPrintBufferSize = 26, 89 SysDbgGetKdUmExceptionEnable = 27, 90 SysDbgSetKdUmExceptionEnable = 28, 91 SysDbgGetTriageDump = 29, 92 SysDbgGetKdBlockEnable = 30, 93 SysDbgSetKdBlockEnable = 31, 94 SysDbgRegisterForUmBreakInfo = 32, 95 SysDbgGetUmBreakPid = 33, 96 SysDbgClearUmBreakPid = 34, 97 SysDbgGetUmAttachPid = 35, 98 SysDbgClearUmAttachPid = 36, 99 } SYSDBG_COMMAND; 100 101 // 102 // System Debugger Types 103 // 104 typedef struct _SYSDBG_PHYSICAL 105 { 106 PHYSICAL_ADDRESS Address; 107 PVOID Buffer; 108 ULONG Request; 109 } SYSDBG_PHYSICAL, *PSYSDBG_PHYSICAL; 110 111 typedef struct _SYSDBG_VIRTUAL 112 { 113 PVOID Address; 114 PVOID Buffer; 115 ULONG Request; 116 } SYSDBG_VIRTUAL, *PSYSDBG_VIRTUAL; 117 118 typedef struct _SYSDBG_CONTROL_SPACE 119 { 120 ULONGLONG Address; 121 PVOID Buffer; 122 ULONG Request; 123 ULONG Processor; 124 } SYSDBG_CONTROL_SPACE, *PSYSDBG_CONTROL_SPACE; 125 126 typedef struct _SYSDBG_IO_SPACE 127 { 128 ULONGLONG Address; 129 PVOID Buffer; 130 ULONG Request; 131 INTERFACE_TYPE InterfaceType; 132 ULONG BusNumber; 133 ULONG AddressSpace; 134 } SYSDBG_IO_SPACE, *PSYSDBG_IO_SPACE; 135 136 typedef struct _SYSDBG_BUS_DATA 137 { 138 ULONG Address; 139 PVOID Buffer; 140 ULONG Request; 141 BUS_DATA_TYPE BusDataType; 142 ULONG BusNumber; 143 ULONG SlotNumber; 144 } SYSDBG_BUS_DATA, *PSYSDBG_BUS_DATA; 145 146 typedef struct _SYSDBG_MSR 147 { 148 ULONG Address; 149 ULONGLONG Data; 150 } SYSDBG_MSR, *PSYSDBG_MSR; 151 152 typedef struct _SYSDBG_TRIAGE_DUMP 153 { 154 ULONG Flags; 155 ULONG BugCheckCode; 156 ULONG_PTR BugCheckParam1; 157 ULONG_PTR BugCheckParam2; 158 ULONG_PTR BugCheckParam3; 159 ULONG_PTR BugCheckParam4; 160 ULONG ProcessHandles; 161 ULONG ThreadHandles; 162 PHANDLE Handles; 163 } SYSDBG_TRIAGE_DUMP, *PSYSDBG_TRIAGE_DUMP; 164 165 // 166 // KD Structures 167 // 168 typedef struct _KD_SYMBOLS_INFO 169 { 170 PVOID BaseOfDll; 171 ULONG_PTR ProcessId; 172 ULONG CheckSum; 173 ULONG SizeOfImage; 174 } KD_SYMBOLS_INFO, *PKD_SYMBOLS_INFO; 175 176 #endif // _KDTYPES_H 177