mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 12:55:43 +00:00
[NTOS:KD] Pass PreviousMode down to KdpPrintString, since ExGetPreviousMode is not accurate. CORE-14103
This commit is contained in:
parent
7b95fcf93d
commit
7e8de26164
3 changed files with 14 additions and 7 deletions
|
@ -194,7 +194,8 @@ ULONG
|
||||||
NTAPI
|
NTAPI
|
||||||
KdpPrintString(
|
KdpPrintString(
|
||||||
_In_reads_bytes_(Length) PCHAR UnsafeString,
|
_In_reads_bytes_(Length) PCHAR UnsafeString,
|
||||||
_In_ ULONG Length);
|
_In_ ULONG Length,
|
||||||
|
_In_ KPROCESSOR_MODE PreviousMode);
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
NTAPI
|
NTAPI
|
||||||
|
|
|
@ -569,7 +569,8 @@ ULONG
|
||||||
NTAPI
|
NTAPI
|
||||||
KdpPrintString(
|
KdpPrintString(
|
||||||
_In_reads_bytes_(Length) PCHAR UnsafeString,
|
_In_reads_bytes_(Length) PCHAR UnsafeString,
|
||||||
_In_ ULONG Length)
|
_In_ ULONG Length,
|
||||||
|
_In_ KPROCESSOR_MODE PreviousMode)
|
||||||
{
|
{
|
||||||
PLIST_ENTRY CurrentEntry;
|
PLIST_ENTRY CurrentEntry;
|
||||||
PKD_DISPATCH_TABLE CurrentTable;
|
PKD_DISPATCH_TABLE CurrentTable;
|
||||||
|
@ -580,7 +581,7 @@ KdpPrintString(
|
||||||
|
|
||||||
Length = min(Length, sizeof(StringBuffer));
|
Length = min(Length, sizeof(StringBuffer));
|
||||||
|
|
||||||
if (ExGetPreviousMode() != KernelMode)
|
if (PreviousMode != KernelMode)
|
||||||
{
|
{
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
|
|
|
@ -41,14 +41,15 @@ ULONG
|
||||||
NTAPI
|
NTAPI
|
||||||
KdpServiceDispatcher(ULONG Service,
|
KdpServiceDispatcher(ULONG Service,
|
||||||
PVOID Buffer1,
|
PVOID Buffer1,
|
||||||
ULONG Buffer1Length)
|
ULONG Buffer1Length,
|
||||||
|
KPROCESSOR_MODE PreviousMode)
|
||||||
{
|
{
|
||||||
ULONG Result = 0;
|
ULONG Result = 0;
|
||||||
|
|
||||||
switch (Service)
|
switch (Service)
|
||||||
{
|
{
|
||||||
case BREAKPOINT_PRINT: /* DbgPrint */
|
case BREAKPOINT_PRINT: /* DbgPrint */
|
||||||
Result = KdpPrintString(Buffer1, Buffer1Length);
|
Result = KdpPrintString(Buffer1, Buffer1Length, PreviousMode);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if DBG
|
#if DBG
|
||||||
|
@ -145,7 +146,8 @@ KdpEnterDebuggerException(IN PKTRAP_FRAME TrapFrame,
|
||||||
/* Print the string */
|
/* Print the string */
|
||||||
KdpServiceDispatcher(BREAKPOINT_PRINT,
|
KdpServiceDispatcher(BREAKPOINT_PRINT,
|
||||||
(PVOID)ExceptionRecord->ExceptionInformation[1],
|
(PVOID)ExceptionRecord->ExceptionInformation[1],
|
||||||
ExceptionRecord->ExceptionInformation[2]);
|
ExceptionRecord->ExceptionInformation[2],
|
||||||
|
PreviousMode);
|
||||||
|
|
||||||
/* Return success */
|
/* Return success */
|
||||||
KeSetContextReturnRegister(Context, STATUS_SUCCESS);
|
KeSetContextReturnRegister(Context, STATUS_SUCCESS);
|
||||||
|
@ -493,7 +495,10 @@ KdSystemDebugControl(IN SYSDBG_COMMAND Command,
|
||||||
IN KPROCESSOR_MODE PreviousMode)
|
IN KPROCESSOR_MODE PreviousMode)
|
||||||
{
|
{
|
||||||
/* HACK */
|
/* HACK */
|
||||||
return KdpServiceDispatcher(Command, InputBuffer, InputBufferLength);
|
return KdpServiceDispatcher(Command,
|
||||||
|
InputBuffer,
|
||||||
|
InputBufferLength,
|
||||||
|
PreviousMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
PKDEBUG_ROUTINE KiDebugRoutine = KdpEnterDebuggerException;
|
PKDEBUG_ROUTINE KiDebugRoutine = KdpEnterDebuggerException;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue