#include <ntoskrnl.h>
#include <debug.h>
Go to the source code of this file.
|
VOID NTAPI | KdpGetStateChange (IN PDBGKD_MANIPULATE_STATE64 State, IN PCONTEXT Context) |
|
VOID NTAPI | KdpSetContextState (IN PDBGKD_ANY_WAIT_STATE_CHANGE WaitStateChange, IN PCONTEXT Context) |
|
NTSTATUS NTAPI | KdpSysReadMsr (_In_ ULONG Msr, _Out_ PULONGLONG MsrValue) |
|
NTSTATUS NTAPI | KdpSysWriteMsr (_In_ ULONG Msr, _In_ PULONGLONG MsrValue) |
|
NTSTATUS NTAPI | KdpSysReadBusData (_In_ BUS_DATA_TYPE BusDataType, _In_ ULONG BusNumber, _In_ ULONG SlotNumber, _In_ ULONG Offset, _Out_writes_bytes_(Length) PVOID Buffer, _In_ ULONG Length, _Out_ PULONG ActualLength) |
|
NTSTATUS NTAPI | KdpSysWriteBusData (_In_ BUS_DATA_TYPE BusDataType, _In_ ULONG BusNumber, _In_ ULONG SlotNumber, _In_ ULONG Offset, _In_reads_bytes_(Length) PVOID Buffer, _In_ ULONG Length, _Out_ PULONG ActualLength) |
|
NTSTATUS NTAPI | KdpSysReadControlSpace (_In_ ULONG Processor, _In_ ULONG64 BaseAddress, _Out_writes_bytes_(Length) PVOID Buffer, _In_ ULONG Length, _Out_ PULONG ActualLength) |
|
NTSTATUS NTAPI | KdpSysWriteControlSpace (_In_ ULONG Processor, _In_ ULONG64 BaseAddress, _In_reads_bytes_(Length) PVOID Buffer, _In_ ULONG Length, _Out_ PULONG ActualLength) |
|
NTSTATUS NTAPI | KdpSysReadIoSpace (_In_ INTERFACE_TYPE InterfaceType, _In_ ULONG BusNumber, _In_ ULONG AddressSpace, _In_ ULONG64 IoAddress, _Out_writes_bytes_(DataSize) PVOID DataValue, _In_ ULONG DataSize, _Out_ PULONG ActualDataSize) |
|
NTSTATUS NTAPI | KdpSysWriteIoSpace (_In_ INTERFACE_TYPE InterfaceType, _In_ ULONG BusNumber, _In_ ULONG AddressSpace, _In_ ULONG64 IoAddress, _In_reads_bytes_(DataSize) PVOID DataValue, _In_ ULONG DataSize, _Out_ PULONG ActualDataSize) |
|
NTSTATUS NTAPI | KdpSysCheckLowMemory (IN ULONG Flags) |
|
NTSTATUS NTAPI | KdpAllowDisable (VOID) |
|
◆ NDEBUG
◆ UNIMPLEMENTED
◆ KdpAllowDisable()
Definition at line 372 of file kdx64.c.
373{
375
376
378 {
380
381
382
385 }
386
387
389}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
PKPRCB KiProcessorBlock[]
KPROCESSOR_STATE ProcessorState
KSPECIAL_REGISTERS SpecialRegisters
#define STATUS_ACCESS_DENIED
◆ KdpGetStateChange()
Definition at line 22 of file kdx64.c.
24{
27
28
30 {
31
32 if (
State->u.Continue2.ControlSet.TraceFlag)
33 {
34
36 }
37 else
38 {
39
41 }
42
43
45 {
46
49 State->u.Continue2.ControlSet.Dr7;
51 }
52
53
54 if (
State->u.Continue2.ControlSet.CurrentSymbolStart != 1)
55 {
56
58 State->u.Continue2.ControlSet.CurrentSymbolStart;
60 }
61 }
62}
#define NT_SUCCESS(StatCode)
ULONG_PTR KdpCurrentSymbolEnd
ULONG_PTR KdpCurrentSymbolStart
◆ KdpSetContextState()
Definition at line 66 of file kdx64.c.
68{
70
71
73 KernelDr6;
75 KernelDr7;
76
77
78 WaitStateChange->ControlReport.SegCs = (
USHORT)
Context->SegCs;
79 WaitStateChange->ControlReport.SegDs = (
USHORT)
Context->SegDs;
80 WaitStateChange->ControlReport.SegEs = (
USHORT)
Context->SegEs;
81 WaitStateChange->ControlReport.SegFs = (
USHORT)
Context->SegFs;
82
83
84 WaitStateChange->ControlReport.EFlags =
Context->EFlags;
85
86
89 {
91 }
92}
FORCEINLINE struct _KPRCB * KeGetCurrentPrcb(VOID)
#define REPORT_INCLUDES_SEGS
#define REPORT_STANDARD_CS
◆ KdpSysCheckLowMemory()
Definition at line 364 of file kdx64.c.
365{
368}
#define STATUS_UNSUCCESSFUL
◆ KdpSysReadBusData()
◆ KdpSysReadControlSpace()
Definition at line 166 of file kdx64.c.
172{
176
178 {
180
181 ControlStart = &Pcr;
182 *ActualLength =
sizeof(
PVOID);
183 break;
184
186
187 ControlStart = &Prcb;
188 *ActualLength =
sizeof(
PVOID);
189 break;
190
192
195 break;
196
198
200 *ActualLength =
sizeof(
PVOID);
201 break;
202
203 default:
204 *ActualLength = 0;
207 }
208
209
211
212
214}
struct _KSPECIAL_REGISTERS KSPECIAL_REGISTERS
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
_In_ ULONG _In_ ULONG _In_ ULONG Length
struct _KTHREAD * CurrentThread
#define RtlCopyMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
#define AMD64_DEBUG_CONTROL_SPACE_KPRCB
#define AMD64_DEBUG_CONTROL_SPACE_KSPECIAL
#define AMD64_DEBUG_CONTROL_SPACE_KPCR
#define AMD64_DEBUG_CONTROL_SPACE_KTHREAD
◆ KdpSysReadIoSpace()
Definition at line 250 of file kdx64.c.
258{
259
261 {
262
263 *ActualDataSize = 0;
265 }
266
267
269 {
270
271 *ActualDataSize = 0;
273 }
274
276 {
278
280 break;
281
283
285 break;
286
288
290 break;
291
292 default:
293
294 *ActualDataSize = 0;
296 }
297
298
300
301
303}
ULONG NTAPI READ_PORT_ULONG(IN PULONG Port)
USHORT NTAPI READ_PORT_USHORT(IN PUSHORT Port)
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
#define STATUS_DATATYPE_MISALIGNMENT
#define READ_PORT_UCHAR(p)
#define STATUS_INVALID_PARAMETER
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID InterfaceType
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
_In_ ULONG _In_ PHYSICAL_ADDRESS _Inout_ PULONG AddressSpace
◆ KdpSysReadMsr()
Definition at line 96 of file kdx64.c.
99{
100
102 {
104 }
106 {
108 }
110
112}
#define EXCEPTION_EXECUTE_HANDLER
PPC_QUAL unsigned long long __readmsr()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
#define STATUS_NO_SUCH_DEVICE
◆ KdpSysWriteBusData()
◆ KdpSysWriteControlSpace()
Definition at line 218 of file kdx64.c.
224{
227
229 {
231
234 break;
235
236 default:
237 *ActualLength = 0;
240 }
241
242
244
246}
◆ KdpSysWriteIoSpace()
Definition at line 307 of file kdx64.c.
315{
316
318 {
319
320 *ActualDataSize = 0;
322 }
323
324
326 {
327
328 *ActualDataSize = 0;
330 }
331
333 {
335
337 break;
338
340
342 break;
343
345
347 break;
348
349 default:
350
351 *ActualDataSize = 0;
353 }
354
355
357
358
360}
VOID NTAPI WRITE_PORT_USHORT(IN PUSHORT Port, IN USHORT Value)
VOID NTAPI WRITE_PORT_ULONG(IN PULONG Port, IN ULONG Value)
#define WRITE_PORT_UCHAR(p, d)
◆ KdpSysWriteMsr()
Definition at line 116 of file kdx64.c.
119{
120
122 {
124 }
126 {
128 }
130
132}
PPC_QUAL void __writemsr(const unsigned long Value)