&KdpContext);\r
}\r
\r
+VOID\r
+NTAPI\r
+KdpRestoreBreakpoint(IN PDBGKD_MANIPULATE_STATE64 State,\r
+ IN PSTRING Data,\r
+ IN PCONTEXT Context)\r
+{\r
+ PDBGKD_RESTORE_BREAKPOINT RestoreBp = &State->u.RestoreBreakPoint;\r
+ STRING Header;\r
+\r
+ /* Fill out the header */\r
+ Header.Length = sizeof(DBGKD_MANIPULATE_STATE64);\r
+ Header.Buffer = (PCHAR)State;\r
+ ASSERT(Data->Length == 0);\r
+\r
+ /* Get the version block */\r
+ if (KdpDeleteBreakpoint(RestoreBp->BreakPointHandle))\r
+ {\r
+ /* We're all good */\r
+ State->ReturnStatus = STATUS_SUCCESS;\r
+ }\r
+ else\r
+ {\r
+ /* We failed */\r
+ State->ReturnStatus = STATUS_UNSUCCESSFUL;\r
+ }\r
+\r
+ /* Send the packet */\r
+ KdSendPacket(PACKET_TYPE_KD_STATE_MANIPULATE,\r
+ &Header,\r
+ NULL,\r
+ &KdpContext);\r
+}\r
+\r
KCONTINUE_STATUS\r
NTAPI\r
KdpSendWaitContinue(IN ULONG PacketType,\r
case DbgKdRestoreBreakPointApi:\r
\r
/* FIXME: TODO */\r
- Ke386SetCr2(DbgKdRestoreBreakPointApi);\r
- while (TRUE);\r
+ KdpRestoreBreakpoint(&ManipulateState, &Data, Context);\r
break;\r
\r
case DbgKdContinueApi:\r
{\r
/* Reinitialize the Debugger */\r
KdInitSystem(0, NULL) ;\r
- //KdpRestoreAllBreakpoints();\r
+ KdpRestoreAllBreakpoints();\r
}\r
}\r
\r