#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
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
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