- We now tell WinDBG to load kernel symbols and WinDBG replies (!) with DbgKdGetVersi...
[reactos.git] / reactos / include / reactos / windbgkd.h
index d4e1fbf..9ecb450 100644 (file)
@@ -1,6 +1,11 @@
 #ifndef _WINDBGKD_\r
 #define _WINDBGKG_\r
 \r
+//\r
+// Dependencies\r
+//\r
+#include "wdbgexts.h"\r
+\r
 //\r
 // Packet Size and Control Stream Size\r
 //\r
@@ -135,6 +140,46 @@ typedef struct _KD_CONTEXT
     BOOLEAN KdpControlCPending;\r
 } KD_CONTEXT, *PKD_CONTEXT;\r
 \r
+//\r
+// Control Sets for Supported Architectures\r
+//\r
+#include <pshpack4.h>\r
+typedef struct _X86_DBGKD_CONTROL_SET\r
+{\r
+    ULONG TraceFlag;\r
+    ULONG Dr7;\r
+    ULONG CurrentSymbolStart;\r
+    ULONG CurrentSymbolEnd;\r
+} X86_DBGKD_CONTROL_SET, *PX86_DBGKD_CONTROL_SET;\r
+\r
+typedef struct _IA64_DBGKD_CONTROL_SET\r
+{\r
+    ULONG Continue;\r
+    ULONG64 CurrentSymbolStart;\r
+    ULONG64 CurrentSymbolEnd;\r
+} IA64_DBGKD_CONTROL_SET, *PIA64_DBGKD_CONTROL_SET;\r
+\r
+typedef struct _AMD64_DBGKD_CONTROL_SET\r
+{\r
+    ULONG TraceFlag;\r
+    ULONG64 Dr7;\r
+    ULONG64 CurrentSymbolStart;\r
+    ULONG64 CurrentSymbolEnd;\r
+} AMD64_DBGKD_CONTROL_SET, *PAMD64_DBGKD_CONTROL_SET;\r
+\r
+typedef struct _DBGKD_ANY_CONTROL_SET\r
+{\r
+    union\r
+    {\r
+        X86_DBGKD_CONTROL_SET X86ControlSet;\r
+        IA64_DBGKD_CONTROL_SET IA64ControlSet;\r
+        AMD64_DBGKD_CONTROL_SET Amd64ControlSet;\r
+    };\r
+} DBGKD_ANY_CONTROL_SET, *PDBGKD_ANY_CONTROL_SET;\r
+#include <poppack.h>\r
+\r
+typedef X86_DBGKD_CONTROL_SET DBGKD_CONTROL_SET;\r
+\r
 //\r
 // DBGKM Structure for Exceptions\r
 //\r
@@ -226,4 +271,193 @@ typedef struct _DBGKD_WAIT_STATE_CHANGE64
     CONTEXT Context;\r
 } DBGKD_WAIT_STATE_CHANGE64, *PDBGKD_WAIT_STATE_CHANGE64;\r
 \r
+//\r
+// DBGKD Manipulate Structures\r
+//\r
+typedef struct _DBGKD_READ_MEMORY64\r
+{\r
+    ULONG64 TargetBaseAddress;\r
+    ULONG TransferCount;\r
+    ULONG ActualBytesRead;\r
+} DBGKD_READ_MEMORY64, *PDBGKD_READ_MEMORY64;\r
+\r
+typedef struct _DBGKD_WRITE_MEMORY64\r
+{\r
+    ULONG64 TargetBaseAddress;\r
+    ULONG TransferCount;\r
+    ULONG ActualBytesWritten;\r
+} DBGKD_WRITE_MEMORY64, *PDBGKD_WRITE_MEMORY64;\r
+\r
+typedef struct _DBGKD_GET_CONTEXT\r
+{\r
+    ULONG Unused;\r
+} DBGKD_GET_CONTEXT, *PDBGKD_GET_CONTEXT;\r
+\r
+typedef struct _DBGKD_SET_CONTEXT\r
+{\r
+    ULONG ContextFlags;\r
+} DBGKD_SET_CONTEXT, *PDBGKD_SET_CONTEXT;\r
+\r
+typedef struct _DBGKD_WRITE_BREAKPOINT64\r
+{\r
+    ULONG64 BreakPointAddress;\r
+    ULONG BreakPointHandle;\r
+} DBGKD_WRITE_BREAKPOINT64, *PDBGKD_WRITE_BREAKPOINT64;\r
+\r
+typedef struct _DBGKD_RESTORE_BREAKPOINT\r
+{\r
+    ULONG BreakPointHandle;\r
+} DBGKD_RESTORE_BREAKPOINT, *PDBGKD_RESTORE_BREAKPOINT;\r
+\r
+typedef struct _DBGKD_CONTINUE\r
+{\r
+    NTSTATUS ContinueStatus;\r
+} DBGKD_CONTINUE, *PDBGKD_CONTINUE;\r
+\r
+#include <pshpack4.h>\r
+typedef struct _DBGKD_CONTINUE2\r
+{\r
+    NTSTATUS ContinueStatus;\r
+    union\r
+    {\r
+        DBGKD_CONTROL_SET ControlSet;\r
+        DBGKD_ANY_CONTROL_SET AnyControlSet;\r
+    };\r
+} DBGKD_CONTINUE2, *PDBGKD_CONTINUE2;\r
+#include <poppack.h>\r
+\r
+typedef struct _DBGKD_READ_WRITE_IO64\r
+{\r
+    ULONG64 IoAddress;\r
+    ULONG DataSize;\r
+    ULONG DataValue;\r
+} DBGKD_READ_WRITE_IO64, *PDBGKD_READ_WRITE_IO64;\r
+\r
+typedef struct _DBGKD_READ_WRITE_IO_EXTENDED64\r
+{\r
+    ULONG DataSize;\r
+    ULONG InterfaceType;\r
+    ULONG BusNumber;\r
+    ULONG AddressSpace;\r
+    ULONG64 IoAddress;\r
+    ULONG DataValue;\r
+} DBGKD_READ_WRITE_IO_EXTENDED64, *PDBGKD_READ_WRITE_IO_EXTENDED64;\r
+\r
+typedef struct _DBGKD_READ_WRITE_MSR\r
+{\r
+    ULONG Msr;\r
+    ULONG DataValueLow;\r
+    ULONG DataValueHigh;\r
+} DBGKD_READ_WRITE_MSR, *PDBGKD_READ_WRITE_MSR;\r
+\r
+typedef struct _DBGKD_QUERY_SPECIAL_CALLS\r
+{\r
+    ULONG NumberOfSpecialCalls;\r
+} DBGKD_QUERY_SPECIAL_CALLS, *PDBGKD_QUERY_SPECIAL_CALLS;\r
+\r
+typedef struct _DBGKD_SET_SPECIAL_CALL64\r
+{\r
+    ULONG64 SpecialCall;\r
+} DBGKD_SET_SPECIAL_CALL64, *PDBGKD_SET_SPECIAL_CALL64;\r
+\r
+typedef struct _DBGKD_SET_INTERNAL_BREAKPOINT64\r
+{\r
+    ULONG64 BreakpointAddress;\r
+    ULONG Flags;\r
+} DBGKD_SET_INTERNAL_BREAKPOINT64, *PDBGKD_SET_INTERNAL_BREAKPOINT64;\r
+\r
+typedef struct _DBGKD_GET_INTERNAL_BREAKPOINT64\r
+{\r
+    ULONG64 BreakpointAddress;\r
+    ULONG Flags;\r
+    ULONG Calls;\r
+    ULONG MaxCallsPerPeriod;\r
+    ULONG MinInstructions;\r
+    ULONG MaxInstructions;\r
+    ULONG TotalInstructions;\r
+} DBGKD_GET_INTERNAL_BREAKPOINT64, *PDBGKD_GET_INTERNAL_BREAKPOINT64;\r
+\r
+typedef struct _DBGKD_BREAKPOINTEX\r
+{\r
+    ULONG BreakPointCount;\r
+    NTSTATUS ContinueStatus;\r
+} DBGKD_BREAKPOINTEX, *PDBGKD_BREAKPOINTEX;\r
+\r
+typedef struct _DBGKD_SEARCH_MEMORY\r
+{\r
+    union\r
+    {\r
+        ULONG64 SearchAddress;\r
+        ULONG64 FoundAddress;\r
+    };\r
+    ULONG64 SearchLength;\r
+    ULONG PatternLength;\r
+} DBGKD_SEARCH_MEMORY, *PDBGKD_SEARCH_MEMORY;\r
+\r
+typedef struct _DBGKD_GET_SET_BUS_DATA\r
+{\r
+    ULONG BusDataType;\r
+    ULONG BusNumber;\r
+    ULONG SlotNumber;\r
+    ULONG Offset;\r
+    ULONG Length;\r
+} DBGKD_GET_SET_BUS_DATA, *PDBGKD_GET_SET_BUS_DATA;\r
+\r
+typedef struct _DBGKD_FILL_MEMORY\r
+{\r
+    ULONG64 Address;\r
+    ULONG Length;\r
+    USHORT Flags;\r
+    USHORT PatternLength;\r
+} DBGKD_FILL_MEMORY, *PDBGKD_FILL_MEMORY;\r
+\r
+typedef struct _DBGKD_QUERY_MEMORY\r
+{\r
+    ULONG64 Address;\r
+    ULONG64 Reserved;\r
+    ULONG AddressSpace;\r
+    ULONG Flags;\r
+} DBGKD_QUERY_MEMORY, *PDBGKD_QUERY_MEMORY;\r
+\r
+typedef struct _DBGKD_SWITCH_PARTITION\r
+{\r
+    ULONG Partition;\r
+} DBGKD_SWITCH_PARTITION;\r
+\r
+//\r
+// DBGKD Structure for Manipulate\r
+//\r
+typedef struct _DBGKD_MANIPULATE_STATE64\r
+{\r
+    ULONG ApiNumber;\r
+    USHORT ProcessorLevel;\r
+    USHORT Processor;\r
+    NTSTATUS ReturnStatus;\r
+    union\r
+    {\r
+        DBGKD_READ_MEMORY64 ReadMemory;\r
+        DBGKD_WRITE_MEMORY64 WriteMemory;\r
+        DBGKD_GET_CONTEXT GetContext;\r
+        DBGKD_SET_CONTEXT SetContext;\r
+        DBGKD_WRITE_BREAKPOINT64 WriteBreakPoint;\r
+        DBGKD_RESTORE_BREAKPOINT RestoreBreakPoint;\r
+        DBGKD_CONTINUE Continue;\r
+        DBGKD_CONTINUE2 Continue2;\r
+        DBGKD_READ_WRITE_IO64 ReadWriteIo;\r
+        DBGKD_READ_WRITE_IO_EXTENDED64 ReadWriteIoExtended;\r
+        DBGKD_QUERY_SPECIAL_CALLS QuerySpecialCalls;\r
+        DBGKD_SET_SPECIAL_CALL64 SetSpecialCall;\r
+        DBGKD_SET_INTERNAL_BREAKPOINT64 SetInternalBreakpoint;\r
+        DBGKD_GET_INTERNAL_BREAKPOINT64 GetInternalBreakpoint;\r
+        DBGKD_GET_VERSION64 GetVersion64;\r
+        DBGKD_BREAKPOINTEX BreakPointEx;\r
+        DBGKD_READ_WRITE_MSR ReadWriteMsr;\r
+        DBGKD_SEARCH_MEMORY SearchMemory;\r
+        DBGKD_GET_SET_BUS_DATA GetSetBusData;\r
+        DBGKD_FILL_MEMORY FillMemory;\r
+        DBGKD_QUERY_MEMORY QueryMemory;\r
+        DBGKD_SWITCH_PARTITION SwitchPartition;\r
+    } u;\r
+} DBGKD_MANIPULATE_STATE64, *PDBGKD_MANIPULATE_STATE64;\r
+\r
 #endif\r