ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
February 2007
----- 2024 -----
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
16 participants
265 discussions
Start a n
N
ew thread
[ion] 25852: - KPROCESSOR_STATE is not 4-byte aligned. - Fail physical memory reads for now. - Use the right kernel load address. - Generate image name when loading boot symbols. Now WinDBG sees "ntoskrnl.exe". - Fix KiSaveProcessorControlState and KiRestoreProcessorControlSate. The latter doesn't freeze the CPU anymore so it's enabled, and the former doesn't cause WinDBG to panic anymore and display weird data.
by ion@svn.reactos.org
Author: ion Date: Tue Feb 20 06:22:30 2007 New Revision: 25852 URL:
http://svn.reactos.org/svn/reactos?rev=25852&view=rev
Log: - KPROCESSOR_STATE is not 4-byte aligned. - Fail physical memory reads for now. - Use the right kernel load address. - Generate image name when loading boot symbols. Now WinDBG sees "ntoskrnl.exe". - Fix KiSaveProcessorControlState and KiRestoreProcessorControlSate. The latter doesn't freeze the CPU anymore so it's enabled, and the former doesn't cause WinDBG to panic anymore and display weird data. Modified: branches/alex-kd-branch/reactos/include/ndk/i386/ketypes.h branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdinit.c branches/alex-kd-branch/reactos/ntoskrnl/ke/i386/cpu.c Modified: branches/alex-kd-branch/reactos/include/ndk/i386/ketypes.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/include/…
============================================================================== --- branches/alex-kd-branch/reactos/include/ndk/i386/ketypes.h (original) +++ branches/alex-kd-branch/reactos/include/ndk/i386/ketypes.h Tue Feb 20 06:22:30 2007 @@ -350,7 +350,6 @@ // // Processor State Data // -#pragma pack(push,4) typedef struct _KPROCESSOR_STATE { CONTEXT ContextFrame; @@ -360,6 +359,7 @@ // // Processor Region Control Block // +#pragma pack(push,4) typedef struct _KPRCB { USHORT MinorVersion; Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c Tue Feb 20 06:22:30 2007 @@ -464,6 +464,7 @@ case DbgKdReadPhysicalMemoryApi: /* FIXME: TODO */ + goto fail; Ke386SetCr2(DbgKdReadPhysicalMemoryApi); while (TRUE); break; @@ -653,6 +654,7 @@ /* Setup an empty message, with failure */ while (TRUE); +fail: Data.Length = 0; ManipulateState.ReturnStatus = STATUS_UNSUCCESSFUL; Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdinit.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdinit.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdinit.c Tue Feb 20 06:22:30 2007 @@ -68,7 +68,7 @@ ANSI_STRING ImageName; PLDR_DATA_TABLE_ENTRY LdrEntry; PLIST_ENTRY NextEntry; - ULONG i; + ULONG i, j; CHAR NameBuffer[256]; /* Check if this is Phase 1 */ @@ -132,7 +132,7 @@ InLoadOrderLinks); /* Save the Kernel Base */ - LdrEntry->DllBase = (PVOID)PsNtosImageBase; + PsNtosImageBase = (ULONG)LdrEntry->DllBase; KdVersionBlock.KernBase = (ULONGLONG)(LONG_PTR)LdrEntry->DllBase; /* Check if we have a command line */ @@ -230,6 +230,11 @@ InLoadOrderLinks); /* Generate the image name */ + for (j = 0; j < LdrEntry->BaseDllName.Length / 2; j++) + { + /* Do cheap Unicode to ANSI conversion */ + NameBuffer[j] = (CHAR)LdrEntry->BaseDllName.Buffer[j]; + } /* Load symbols for image */ RtlInitAnsiString(&ImageName, NameBuffer); Modified: branches/alex-kd-branch/reactos/ntoskrnl/ke/i386/cpu.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/ke/i386/cpu.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/ke/i386/cpu.c Tue Feb 20 06:22:30 2007 @@ -678,7 +678,6 @@ NTAPI KiRestoreProcessorControlState(PKPROCESSOR_STATE ProcessorState) { - return; /* Restore the CR registers */ __writecr0(ProcessorState->SpecialRegisters.Cr0); Ke386SetCr2(ProcessorState->SpecialRegisters.Cr2); @@ -698,8 +697,8 @@ // // Restore GDT, IDT, LDT and TSS // - Ke386SetGlobalDescriptorTable(ProcessorState->SpecialRegisters.Gdtr); - Ke386SetInterruptDescriptorTable(ProcessorState->SpecialRegisters.Idtr); + Ke386SetGlobalDescriptorTable(ProcessorState->SpecialRegisters.Gdtr.Base); + Ke386SetInterruptDescriptorTable(ProcessorState->SpecialRegisters.Idtr.Base); Ke386SetTr(ProcessorState->SpecialRegisters.Tr); Ke386SetLocalDescriptorTable(ProcessorState->SpecialRegisters.Ldtr); } @@ -725,8 +724,8 @@ Ke386SetDr7(0); /* Save GDT, IDT, LDT and TSS */ - Ke386GetGlobalDescriptorTable(ProcessorState->SpecialRegisters.Gdtr); - Ke386GetInterruptDescriptorTable(ProcessorState->SpecialRegisters.Idtr); + Ke386GetGlobalDescriptorTable(ProcessorState->SpecialRegisters.Gdtr.Base); + Ke386GetInterruptDescriptorTable(ProcessorState->SpecialRegisters.Idtr.Base); Ke386GetTr(ProcessorState->SpecialRegisters.Tr); Ke386GetLocalDescriptorTable(ProcessorState->SpecialRegisters.Ldtr); }
17 years, 8 months
1
0
0
0
[ion] 25851: - Implement DbgKdClearAllInternalBreakpointsApi - Implement KdpGetContext for DbgKdGetContextApi. - WinDBG now goes to Phase 2 connection and prints out: Windows Server 2003 Kernel Version 3790 UP Checked x86 compatible Built by: 20070215-r25797 Kernel base = 0x80100000 PsLoadedModuleList = 0x80112230
by ion@svn.reactos.org
Author: ion Date: Tue Feb 20 05:12:39 2007 New Revision: 25851 URL:
http://svn.reactos.org/svn/reactos?rev=25851&view=rev
Log: - Implement DbgKdClearAllInternalBreakpointsApi - Implement KdpGetContext for DbgKdGetContextApi. - WinDBG now goes to Phase 2 connection and prints out: Windows Server 2003 Kernel Version 3790 UP Checked x86 compatible Built by: 20070215-r25797 Kernel base = 0x80100000 PsLoadedModuleList = 0x80112230 Modified: branches/alex-kd-branch/reactos/ntoskrnl/include/internal/kd.h branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c Modified: branches/alex-kd-branch/reactos/ntoskrnl/include/internal/kd.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/include/internal/kd.h (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/include/internal/kd.h Tue Feb 20 05:12:39 2007 @@ -209,3 +209,4 @@ extern ULONG KdpBreakpointInstruction; extern BOOLEAN KdpOweBreakpoint; extern BOOLEAN BreakpointsSuspended; +extern ULONG KdpNumInternalBreakpoints; Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c Tue Feb 20 05:12:39 2007 @@ -276,6 +276,57 @@ &KdpContext); } +VOID +NTAPI +KdpGetContext(IN PDBGKD_MANIPULATE_STATE64 State, + IN PSTRING Data, + IN PCONTEXT Context) +{ + STRING Header; + PVOID ControlStart; + + /* Setup the header */ + Header.Length = sizeof(DBGKD_MANIPULATE_STATE64); + Header.Buffer = (PCHAR)State; + ASSERT(Data->Length == 0); + + /* Make sure that this is a valid request */ + if (State->Processor < KeNumberProcessors) + { + /* Check if the request is for this CPU */ + if (State->Processor == KeGetCurrentPrcb()->Number) + { + /* We're just copying our own context */ + ControlStart = Context; + } + else + { + /* SMP not yet handled */ + ControlStart = NULL; + while (TRUE); + } + + /* Copy the memory */ + RtlCopyMemory(Data->Buffer, ControlStart, sizeof(CONTEXT)); + Data->Length = sizeof(CONTEXT); + + /* Finish up */ + State->ReturnStatus = STATUS_SUCCESS; + } + else + { + /* Invalid request */ + State->ReturnStatus = STATUS_UNSUCCESSFUL; + } + + /* Send the reply */ + KdSendPacket(PACKET_TYPE_KD_STATE_MANIPULATE, + &Header, + Data, + &KdpContext); +} + + KCONTINUE_STATUS NTAPI KdpSendWaitContinue(IN ULONG PacketType, @@ -339,8 +390,7 @@ case DbgKdGetContextApi: /* FIXME: TODO */ - Ke386SetCr2(DbgKdGetContextApi); - while (TRUE); + KdpGetContext(&ManipulateState, &Data, Context); break; case DbgKdSetContextApi: @@ -573,9 +623,8 @@ case DbgKdClearAllInternalBreakpointsApi: - /* FIXME: TODO */ - Ke386SetCr2(DbgKdClearAllInternalBreakpointsApi); - while (TRUE); + /* Just clear the counter */ + KdpNumInternalBreakpoints = 0; break; case DbgKdFillMemoryApi: Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c Tue Feb 20 05:12:39 2007 @@ -52,6 +52,7 @@ ULONG KdpBreakpointInstruction = 0xCC; BOOLEAN KdpOweBreakpoint; BOOLEAN BreakpointsSuspended; +ULONG KdpNumInternalBreakpoints; // // Time Slip Support
17 years, 8 months
1
0
0
0
[ion] 25850: - Add kdbreak.c with the following APIs: KdpLowWriteContent, KdpLowRestoreBreakpoint, KdpDeleteBreakpoint, KdpDeleteBreakpointRange, KdpRestoreAllBreakpoints. Adding breakpoints not yet supported. - Enable kdinit.c call to KdpRestoreAllBreakpoints. - Add breakpoint table and data. - Support DbgKdRestoreBreakpointApi. Now we get DbgKdClearAllInternalBreakpointsApi.
by ion@svn.reactos.org
Author: ion Date: Tue Feb 20 05:00:01 2007 New Revision: 25850 URL:
http://svn.reactos.org/svn/reactos?rev=25850&view=rev
Log: - Add kdbreak.c with the following APIs: KdpLowWriteContent, KdpLowRestoreBreakpoint, KdpDeleteBreakpoint, KdpDeleteBreakpointRange, KdpRestoreAllBreakpoints. Adding breakpoints not yet supported. - Enable kdinit.c call to KdpRestoreAllBreakpoints. - Add breakpoint table and data. - Support DbgKdRestoreBreakpointApi. Now we get DbgKdClearAllInternalBreakpointsApi. Added: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdbreak.c Modified: branches/alex-kd-branch/reactos/ntoskrnl/include/internal/kd.h branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c branches/alex-kd-branch/reactos/ntoskrnl/ntoskrnl.rbuild Modified: branches/alex-kd-branch/reactos/ntoskrnl/include/internal/kd.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/include/internal/kd.h (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/include/internal/kd.h Tue Feb 20 05:00:01 2007 @@ -1,3 +1,19 @@ +typedef struct _BREAKPOINT_ENTRY +{ + ULONG Flags; + PKPROCESS Process; + PVOID Address; + UCHAR Content; +} BREAKPOINT_ENTRY, *PBREAKPOINT_ENTRY; + +typedef enum _KDP_BREAKPOINT_FLAGS +{ + KdpBreakpointActive = 1, + KdpBreakpointPending = 2, + KdpBreakpointSuspended = 4, + KdpBreakpointExpired = 8 +} KDP_BREAKPOINT_FLAGS; + typedef BOOLEAN (NTAPI *PKDEBUG_ROUTINE)( @@ -142,6 +158,18 @@ IN PKD_SYMBOLS_INFO SymbolInfo, IN BOOLEAN Unload, IN OUT PCONTEXT Context +); + +VOID +NTAPI +KdpRestoreAllBreakpoints( + VOID +); + +BOOLEAN +NTAPI +KdpDeleteBreakpoint( + IN ULONG BpEntry ); extern DBGKD_GET_VERSION64 KdVersionBlock; @@ -177,3 +205,7 @@ extern ULONG Kd_WIN2000_Mask; extern PULONG KdComponentTable[104]; extern CHAR KdpMessageBuffer[4096], KdpPathBuffer[4096]; +extern BREAKPOINT_ENTRY KdpBreakpointTable[20]; +extern ULONG KdpBreakpointInstruction; +extern BOOLEAN KdpOweBreakpoint; +extern BOOLEAN BreakpointsSuspended; Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c Tue Feb 20 05:00:01 2007 @@ -243,6 +243,39 @@ &KdpContext); } +VOID +NTAPI +KdpRestoreBreakpoint(IN PDBGKD_MANIPULATE_STATE64 State, + IN PSTRING Data, + IN PCONTEXT Context) +{ + PDBGKD_RESTORE_BREAKPOINT RestoreBp = &State->u.RestoreBreakPoint; + STRING Header; + + /* Fill out the header */ + Header.Length = sizeof(DBGKD_MANIPULATE_STATE64); + Header.Buffer = (PCHAR)State; + ASSERT(Data->Length == 0); + + /* Get the version block */ + if (KdpDeleteBreakpoint(RestoreBp->BreakPointHandle)) + { + /* We're all good */ + State->ReturnStatus = STATUS_SUCCESS; + } + else + { + /* We failed */ + State->ReturnStatus = STATUS_UNSUCCESSFUL; + } + + /* Send the packet */ + KdSendPacket(PACKET_TYPE_KD_STATE_MANIPULATE, + &Header, + NULL, + &KdpContext); +} + KCONTINUE_STATUS NTAPI KdpSendWaitContinue(IN ULONG PacketType, @@ -327,8 +360,7 @@ case DbgKdRestoreBreakPointApi: /* FIXME: TODO */ - Ke386SetCr2(DbgKdRestoreBreakPointApi); - while (TRUE); + KdpRestoreBreakpoint(&ManipulateState, &Data, Context); break; case DbgKdContinueApi: @@ -862,7 +894,7 @@ { /* Reinitialize the Debugger */ KdInitSystem(0, NULL) ; - //KdpRestoreAllBreakpoints(); + KdpRestoreAllBreakpoints(); } } Added: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdbreak.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdbreak.c (added) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdbreak.c Tue Feb 20 05:00:01 2007 @@ -1,0 +1,149 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: ntoskrnl/kd64/kdbreak.c + * PURPOSE: KD64 Breakpoint Support + * PROGRAMMERS: Alex Ionescu (alex.ionescu(a)reactos.org) + */ + +/* INCLUDES ******************************************************************/ + +#include <ntoskrnl.h> +#define NDEBUG +#include <debug.h> + +/* FUNCTIONS *****************************************************************/ + +BOOLEAN +NTAPI +KdpLowWriteContent(IN ULONG BpIndex) +{ + /* Make sure that the breakpoint is actually active */ + if (KdpBreakpointTable[BpIndex].Flags & KdpBreakpointPending) + { + /* So we have a valid breakpoint, but it hasn't been used yet... */ + KdpBreakpointTable[BpIndex].Flags &= ~KdpBreakpointPending; + return TRUE; + } + + /* Is the original instruction an INT3 anyway? */ + if (KdpBreakpointTable[BpIndex].Content == KdpBreakpointInstruction) + { + /* Then leave it that way... */ + return TRUE; + } + + /* We have an active breakpoint with an instruction to bring back. Do it. */ + RtlCopyMemory(KdpBreakpointTable[BpIndex].Address, + &KdpBreakpointTable[BpIndex].Content, + sizeof(UCHAR)); + + /* Everything went fine, return */ + return TRUE; +} + +BOOLEAN +NTAPI +KdpLowRestoreBreakpoint(IN ULONG BpIndex) +{ + /* Were we not able to remove it earlier? */ + if (KdpBreakpointTable[BpIndex].Flags & KdpBreakpointExpired) + { + /* Well then, we'll just re-use it and return success! */ + KdpBreakpointTable[BpIndex].Flags &= ~KdpBreakpointExpired; + return TRUE; + } + + /* Are we merely writing an INT3 on top of another INT3? */ + if (KdpBreakpointTable[BpIndex].Content == KdpBreakpointInstruction) + { + /* Nothing to do then... */ + return TRUE; + } + + /* Ok, we actually have to overwrite the instruction now */ + RtlCopyMemory(KdpBreakpointTable[BpIndex].Address, + &KdpBreakpointInstruction, + sizeof(UCHAR)); + + /* Clear any possible previous pending flag and return success */ + KdpBreakpointTable[BpIndex].Flags &= ~KdpBreakpointPending; + return TRUE; +} + +BOOLEAN +NTAPI +KdpDeleteBreakpoint(IN ULONG BpEntry) +{ + ULONG BpIndex = BpEntry - 1; + + /* Check for invalid breakpoint entry */ + if (!(BpEntry) || (BpEntry > 20)) return FALSE; + + /* If the specified breakpoint table entry is not valid, then return FALSE. */ + if (!KdpBreakpointTable[BpIndex].Flags) return FALSE; + + /* Check if the breakpoint is suspended */ + if (KdpBreakpointTable[BpIndex].Flags & KdpBreakpointSuspended) + { + /* Check if breakpoint is not ...? */ + if (!(KdpBreakpointTable[BpIndex].Flags & KdpBreakpointExpired)) + { + /* Invalidate it and return success */ + KdpBreakpointTable[BpIndex].Flags = 0; + return TRUE; + } + } + + /* Restore original data, then invalidate it and return success */ + if (KdpLowWriteContent(BpIndex)) KdpBreakpointTable[BpIndex].Flags = 0; + return TRUE; +} + +BOOLEAN +NTAPI +KdpDeleteBreakpointRange(IN PVOID Base, + IN PVOID Limit) +{ + ULONG BpIndex; + BOOLEAN Return = FALSE; + + /* Loop the breakpoint table */ + for (BpIndex = 0; BpIndex < 20; BpIndex++) + { + /* Make sure that the breakpoint is active and matches the range. */ + if ((KdpBreakpointTable[BpIndex].Flags & KdpBreakpointActive) && + ((KdpBreakpointTable[BpIndex].Address >= Base) && + (KdpBreakpointTable[BpIndex].Address <= Limit))) + { + /* Delete it */ + Return = Return || KdpDeleteBreakpoint(BpIndex + 1); + } + } + + /* Return to caller */ + return Return; +} + +VOID +NTAPI +KdpRestoreAllBreakpoints(VOID) +{ + ULONG BpIndex; + + /* No more suspended Breakpoints */ + BreakpointsSuspended = FALSE; + + /* Loop the breakpoints */ + for (BpIndex = 0; BpIndex < 20; BpIndex++ ) + { + /* Check if they are valid, suspended breakpoints */ + if ((KdpBreakpointTable[BpIndex].Flags & KdpBreakpointActive) && + (KdpBreakpointTable[BpIndex].Flags & KdpBreakpointSuspended)) + { + /* Unsuspend them */ + KdpBreakpointTable[BpIndex].Flags &= ~KdpBreakpointSuspended; + KdpLowRestoreBreakpoint(BpIndex); + } + } +} Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c Tue Feb 20 05:00:01 2007 @@ -44,6 +44,14 @@ BOOLEAN KdEnteredDebugger; ULONG KdDisableCount; LARGE_INTEGER KdPerformanceCounterRate; + +// +// Breakpoint Data +// +BREAKPOINT_ENTRY KdpBreakpointTable[20]; +ULONG KdpBreakpointInstruction = 0xCC; +BOOLEAN KdpOweBreakpoint; +BOOLEAN BreakpointsSuspended; // // Time Slip Support Modified: branches/alex-kd-branch/reactos/ntoskrnl/ntoskrnl.rbuild URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/ntoskrnl.rbuild (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/ntoskrnl.rbuild Tue Feb 20 05:00:01 2007 @@ -195,6 +195,7 @@ </directory> <directory name="kd64"> <file>kdapi.c</file> + <file>kdbreak.c</file> <file>kddata.c</file> <file>kdinit.c</file> <file>kdlock.c</file>
17 years, 8 months
1
0
0
0
[ion] 25849: - Add a bunch of hacks to KdpReadVirtualMemory to make it work for now. - Fix bugs in KdpGetVersion, KdpReadVirtualMemory. - Implement KdpReadControlSpace. - Fix setting kernel range address instead of kernel image load address. - WinDBG is slowly trying to talk with us. Now it wants to restore breakpoints since it thinks this is the same machine I was debugging last night.
by ion@svn.reactos.org
Author: ion Date: Tue Feb 20 04:13:22 2007 New Revision: 25849 URL:
http://svn.reactos.org/svn/reactos?rev=25849&view=rev
Log: - Add a bunch of hacks to KdpReadVirtualMemory to make it work for now. - Fix bugs in KdpGetVersion, KdpReadVirtualMemory. - Implement KdpReadControlSpace. - Fix setting kernel range address instead of kernel image load address. - WinDBG is slowly trying to talk with us. Now it wants to restore breakpoints since it thinks this is the same machine I was debugging last night. Modified: branches/alex-kd-branch/reactos/include/psdk/wdbgexts.h branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdinit.c Modified: branches/alex-kd-branch/reactos/include/psdk/wdbgexts.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/include/…
============================================================================== --- branches/alex-kd-branch/reactos/include/psdk/wdbgexts.h (original) +++ branches/alex-kd-branch/reactos/include/psdk/wdbgexts.h Tue Feb 20 04:13:22 2007 @@ -20,7 +20,7 @@ #define DBGKD_VERS_FLAG_HSS 0x0010 #define DBGKD_VERS_FLAG_PARTITIONS 0x0020 -#define KDBG_TAG TAG('G', 'B', 'D', 'K') +#define KDBG_TAG TAG('K', 'D', 'B', 'G') typedef struct _DBGKD_GET_VERSION64 { Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c Tue Feb 20 04:13:22 2007 @@ -104,7 +104,7 @@ STRING Header; /* Fill out the header */ - Header.Length = sizeof(DBGKD_GET_VERSION64); + Header.Length = sizeof(DBGKD_MANIPULATE_STATE64); Header.Buffer = (PCHAR)State; /* Get the version block */ @@ -121,6 +121,9 @@ &KdpContext); } + +BOOLEAN VirtCalled = FALSE; + VOID NTAPI KdpReadVirtualMemory(IN PDBGKD_MANIPULATE_STATE64 State, @@ -129,6 +132,7 @@ { STRING Header; ULONG Length = State->u.ReadMemory.TransferCount; + NTSTATUS Status = STATUS_SUCCESS; /* Validate length */ if (Length > (PACKET_MAX_SIZE - sizeof(DBGKD_MANIPULATE_STATE64))) @@ -137,18 +141,38 @@ Length = PACKET_MAX_SIZE - sizeof(DBGKD_MANIPULATE_STATE64); } - /* Copy data */ - RtlCopyMemory(Data->Buffer, - (PVOID)(ULONG_PTR)State->u.ReadMemory.TargetBaseAddress, - Length); +#if 0 + if (!MmIsAddressValid((PVOID)(ULONG_PTR)State->u.ReadMemory.TargetBaseAddress)) + { + Ke386SetCr2(State->u.ReadMemory.TargetBaseAddress); + while (TRUE); + } +#endif + + if ((ULONG_PTR)State->u.ReadMemory.TargetBaseAddress < KSEG0_BASE) + { + Length = 0; + Status = STATUS_UNSUCCESSFUL; + } + else if ((ULONG_PTR)State->u.ReadMemory.TargetBaseAddress >= (ULONG_PTR)SharedUserData) + { + Length = 0; + Status = STATUS_UNSUCCESSFUL; + } + else + { + RtlCopyMemory(Data->Buffer, + (PVOID)(ULONG_PTR)State->u.ReadMemory.TargetBaseAddress, + Length); + } + + /* Fill out the header */ Data->Length = Length; - - /* Fill out the header */ - Header.Length = sizeof(DBGKD_GET_VERSION64); + Header.Length = sizeof(DBGKD_MANIPULATE_STATE64); Header.Buffer = (PCHAR)State; /* Fill out the state */ - State->ReturnStatus = STATUS_SUCCESS; + State->ReturnStatus = Status; State->u.ReadMemory.ActualBytesRead = Length; /* Send the packet */ @@ -158,6 +182,66 @@ &KdpContext); } +VOID +NTAPI +KdpReadControlSpace(IN PDBGKD_MANIPULATE_STATE64 State, + IN PSTRING Data, + IN PCONTEXT Context) +{ + PDBGKD_READ_MEMORY64 ReadMemory = &State->u.ReadMemory; + STRING Header; + ULONG Length, RealLength; + PVOID ControlStart; + + /* Setup the header */ + Header.Length = sizeof(DBGKD_MANIPULATE_STATE64); + Header.Buffer = (PCHAR)State; + ASSERT(Data->Length == 0); + + /* Check the length requested */ + Length = ReadMemory->TransferCount; + if (Length > (PACKET_MAX_SIZE - sizeof(DBGKD_MANIPULATE_STATE64))) + { + /* Use maximum allowed */ + Length = PACKET_MAX_SIZE - sizeof(DBGKD_MANIPULATE_STATE64); + } + + /* Make sure that this is a valid request */ + if (((ULONG)ReadMemory->TargetBaseAddress < sizeof(KPROCESSOR_STATE)) && + (State->Processor < KeNumberProcessors)) + { + /* Get the actual length */ + RealLength = sizeof(KPROCESSOR_STATE) - + (ULONG_PTR)ReadMemory->TargetBaseAddress; + if (RealLength < Length) Length = RealLength; + + /* Set the proper address */ + ControlStart = (PVOID)((ULONG_PTR)ReadMemory->TargetBaseAddress + + (ULONG_PTR)&KiProcessorBlock[State->Processor]-> + ProcessorState); + + /* Copy the memory */ + RtlCopyMemory(Data->Buffer, ControlStart, Length); + Data->Length = Length; + + /* Finish up */ + State->ReturnStatus = STATUS_SUCCESS; + ReadMemory->ActualBytesRead = Data->Length; + } + else + { + /* Invalid request */ + Data->Length = 0; + State->ReturnStatus = STATUS_UNSUCCESSFUL; + ReadMemory->ActualBytesRead = 0; + } + + /* Send the reply */ + KdSendPacket(PACKET_TYPE_KD_STATE_MANIPULATE, + &Header, + Data, + &KdpContext); +} KCONTINUE_STATUS NTAPI @@ -209,6 +293,7 @@ /* Read virtual memory */ KdpReadVirtualMemory(&ManipulateState, &Data, Context); + VirtCalled = TRUE; break; case DbgKdWriteVirtualMemoryApi: @@ -255,9 +340,8 @@ case DbgKdReadControlSpaceApi: - /* FIXME: TODO */ - Ke386SetCr2(DbgKdReadControlSpaceApi); - while (TRUE); + /* Read control space */ + KdpReadControlSpace(&ManipulateState, &Data, Context); break; case DbgKdWriteControlSpaceApi: Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c Tue Feb 20 04:13:22 2007 @@ -15,27 +15,6 @@ VOID NTAPI RtlpBreakWithStatusInstruction(VOID); /* GLOBALS *******************************************************************/ - -// -// Debugger Version Block -// -DBGKD_GET_VERSION64 KdVersionBlock = -{ - 0, - 0, - DBGKD_64BIT_PROTOCOL_VERSION2, - KD_SECONDARY_VERSION_DEFAULT, - DBGKD_VERS_FLAG_DATA, - IMAGE_FILE_MACHINE_I386, - PACKET_TYPE_MAX, - 0, - 0, - DBGKD_SIMULATION_NONE, - {0}, - 0, - 0, - 0 -}; // // Debugger State @@ -320,6 +299,27 @@ // LIST_ENTRY KdpDebuggerDataListHead; KSPIN_LOCK KdpDataSpinLock; + +// +// Debugger Version and Data Block +// +DBGKD_GET_VERSION64 KdVersionBlock = +{ + 0, + 0, + DBGKD_64BIT_PROTOCOL_VERSION2, + KD_SECONDARY_VERSION_DEFAULT, + DBGKD_VERS_FLAG_DATA, + IMAGE_FILE_MACHINE_I386, + PACKET_TYPE_MAX, + 0, + 0, + DBGKD_SIMULATION_NONE, + {0}, + 0, + 0, + 0 +}; KDDEBUGGER_DATA64 KdDebuggerDataBlock = { {{0}}, Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdinit.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdinit.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdinit.c Tue Feb 20 04:13:22 2007 @@ -132,7 +132,8 @@ InLoadOrderLinks); /* Save the Kernel Base */ - KdVersionBlock.KernBase =(ULONGLONG)(LONG_PTR)LdrEntry->DllBase; + LdrEntry->DllBase = (PVOID)PsNtosImageBase; + KdVersionBlock.KernBase = (ULONGLONG)(LONG_PTR)LdrEntry->DllBase; /* Check if we have a command line */ CommandLine = LoaderBlock->LoadOptions; @@ -179,7 +180,7 @@ } /* Set the Kernel Base in the Data Block */ - KdDebuggerDataBlock.KernBase = (ULONG_PTR)PsNtosImageBase; + KdDebuggerDataBlock.KernBase = (ULONGLONG)(LONG_PTR)KdVersionBlock.KernBase; /* Initialize the debugger if requested */ if ((EnableKd) && (NT_SUCCESS(KdDebuggerInitialize0(LoaderBlock))))
17 years, 8 months
1
0
0
0
[gedmurphy] 25848: add chars to the edit box when either double clicked or the select button is hit
by gedmurphy@svn.reactos.org
Author: gedmurphy Date: Tue Feb 20 02:56:16 2007 New Revision: 25848 URL:
http://svn.reactos.org/svn/reactos?rev=25848&view=rev
Log: add chars to the edit box when either double clicked or the select button is hit Modified: trunk/reactos/base/applications/charmap/about.c trunk/reactos/base/applications/charmap/charmap.c trunk/reactos/base/applications/charmap/lrgcell.c trunk/reactos/base/applications/charmap/map.c trunk/reactos/base/applications/charmap/precomp.h Modified: trunk/reactos/base/applications/charmap/about.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/charmap/…
============================================================================== --- trunk/reactos/base/applications/charmap/about.c (original) +++ trunk/reactos/base/applications/charmap/about.c Tue Feb 20 02:56:16 2007 @@ -7,52 +7,57 @@ WPARAM wParam, LPARAM lParam) { - HWND hLicenseEditWnd; - HICON hIcon = NULL; - TCHAR strLicense[700]; + static HICON hIcon = NULL; switch (message) { - case WM_INITDIALOG: + case WM_INITDIALOG: + { + HWND hLicenseEditWnd; + TCHAR strLicense[700]; - hIcon = LoadImage(hInstance, - MAKEINTRESOURCE(IDI_ICON), - IMAGE_ICON, - 16, - 16, - 0); + hIcon = LoadImage(hInstance, + MAKEINTRESOURCE(IDI_ICON), + IMAGE_ICON, + 16, + 16, + 0); - SendMessage(hDlg, - WM_SETICON, - ICON_SMALL, - (LPARAM)hIcon); + SendMessage(hDlg, + WM_SETICON, + ICON_SMALL, + (LPARAM)hIcon); - hLicenseEditWnd = GetDlgItem(hDlg, - IDC_LICENSE_EDIT); + hLicenseEditWnd = GetDlgItem(hDlg, + IDC_LICENSE_EDIT); - LoadString(hInstance, - IDS_LICENSE, - strLicense, - sizeof(strLicense) / sizeof(TCHAR)); + LoadString(hInstance, + IDS_LICENSE, + strLicense, + sizeof(strLicense) / sizeof(TCHAR)); - SetWindowText(hLicenseEditWnd, - strLicense); - return TRUE; - - case WM_COMMAND: - if ((LOWORD(wParam) == IDOK) || (LOWORD(wParam) == IDCANCEL)) - { - DestroyIcon(hIcon); - EndDialog(hDlg, - LOWORD(wParam)); + SetWindowText(hLicenseEditWnd, + strLicense); return TRUE; } - break; + case WM_COMMAND: + { + if ((LOWORD(wParam) == IDOK) || (LOWORD(wParam) == IDCANCEL)) + { + DestroyIcon(hIcon); + EndDialog(hDlg, + LOWORD(wParam)); + return TRUE; + } + + break; + } } return FALSE; } + VOID ShowAboutDlg(HWND hWndParent) Modified: trunk/reactos/base/applications/charmap/charmap.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/charmap/…
============================================================================== --- trunk/reactos/base/applications/charmap/charmap.c (original) +++ trunk/reactos/base/applications/charmap/charmap.c Tue Feb 20 02:56:16 2007 @@ -75,11 +75,10 @@ ReleaseDC(hwndCombo, hdc); - /* set default to Arial */ SendMessage(hwndCombo, - CB_SELECTSTRING, - -1, - (LPARAM)_T("Arial")); + CB_SETCURSEL, + 0, + 0); } @@ -105,7 +104,7 @@ { SendMessage(hCombo, WM_GETTEXT, - 31, + Len + 1, (LPARAM)lpFontName); hMap = GetDlgItem(hDlg, IDC_FONTMAP); @@ -115,6 +114,58 @@ 0, (LPARAM)lpFontName); } + } +} + + +static VOID +AddCharToSelection(HWND hText, + TCHAR ch) +{ + LPTSTR lpText; + INT Len = GetWindowTextLength(hText); + + if (Len != 0) + { + lpText = HeapAlloc(GetProcessHeap(), + 0, + (Len + 2) * sizeof(TCHAR)); + + if (lpText) + { + LPTSTR lpStr = lpText; + + SendMessage(hText, + WM_GETTEXT, + Len + 1, + (LPARAM)lpStr); + + lpStr += Len; + *lpStr = ch; + lpStr++; + *lpStr = _T('\0'); + + SendMessage(hText, + WM_SETTEXT, + 0, + (LPARAM)lpText); + + HeapFree(GetProcessHeap(), + 0, + lpText); + } + } + else + { + TCHAR szText[2]; + + szText[0] = ch; + szText[1] = _T('\0'); + + SendMessage(hText, + WM_SETTEXT, + 0, + (LPARAM)szText); } } @@ -204,6 +255,19 @@ } break; + case IDC_SELECT: + { + TCHAR ch; + HWND hMap = GetDlgItem(hDlg, IDC_FONTMAP); + + ch = SendMessage(hMap, FM_GETCHAR, 0, 0); + + AddCharToSelection(GetDlgItem(hDlg, IDC_TEXTBOX), + ch); + + break; + } + case IDOK: EndDialog(hDlg, 0); break; @@ -222,6 +286,29 @@ } break; + case WM_NOTIFY: + { + LPMAPNOTIFY lpnm = (LPMAPNOTIFY)lParam; + + switch (lpnm->hdr.idFrom) + { + case IDC_FONTMAP: + { + switch (lpnm->hdr.code) + { + case FM_SETCHAR: + { + AddCharToSelection(GetDlgItem(hDlg, IDC_TEXTBOX), + lpnm->ch); + } + break; + } + } + break; + } + } + break; + default: return FALSE; } Modified: trunk/reactos/base/applications/charmap/lrgcell.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/charmap/…
============================================================================== --- trunk/reactos/base/applications/charmap/lrgcell.c (original) +++ trunk/reactos/base/applications/charmap/lrgcell.c Tue Feb 20 02:56:16 2007 @@ -11,7 +11,8 @@ LPTSTR lpFontName; INT Len; - hCombo = GetDlgItem(infoPtr->hParent, IDC_FONTCOMBO); + hCombo = GetDlgItem(infoPtr->hParent, + IDC_FONTCOMBO); Len = GetWindowTextLength(hCombo); @@ -28,12 +29,14 @@ 31, (LPARAM)lpFontName); - ZeroMemory(&lf, sizeof(lf)); + ZeroMemory(&lf, + sizeof(lf)); hdc = GetDC(infoPtr->hLrgWnd); lf.lfHeight = GetDeviceCaps(hdc, LOGPIXELSY) / 2; - ReleaseDC(infoPtr->hLrgWnd, hdc); + ReleaseDC(infoPtr->hLrgWnd, + hdc); lf.lfCharSet = DEFAULT_CHARSET; lstrcpy(lf.lfFaceName, Modified: trunk/reactos/base/applications/charmap/map.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/charmap/…
============================================================================== --- trunk/reactos/base/applications/charmap/map.c (original) +++ trunk/reactos/base/applications/charmap/map.c Tue Feb 20 02:56:16 2007 @@ -72,7 +72,6 @@ FillGrid(PMAP infoPtr, HDC hdc) { - //GLYPHSET gs; HFONT hOldFont; TCHAR ch; INT x, y; @@ -191,6 +190,34 @@ InvalidateRect(infoPtr->hMapWnd, NULL, TRUE); +} + + +static LRESULT +NotifyParentOfSelection(PMAP infoPtr, + UINT code, + TCHAR ch) +{ + LRESULT Ret = 0; + + if (infoPtr->hParent != NULL) + { + MAPNOTIFY mnmh; + + mnmh.hdr.hwndFrom = infoPtr->hMapWnd; + mnmh.hdr.idFrom = GetWindowLongPtr(infoPtr->hMapWnd, + GWLP_ID); + mnmh.hdr.code = code; + + mnmh.ch = ch; + + Ret = SendMessage(infoPtr->hParent, + WM_NOTIFY, + (WPARAM)mnmh.hdr.idFrom, + (LPARAM)&mnmh); + } + + return Ret; } @@ -430,6 +457,16 @@ break; } + case WM_LBUTTONDBLCLK: + { + NotifyParentOfSelection(infoPtr, + FM_SETCHAR, + infoPtr->pActiveCell->ch); + + + break; + } + case WM_VSCROLL: { OnVScroll(infoPtr, @@ -451,6 +488,11 @@ lpFontName); break; + } + + case FM_GETCHAR: + { + return infoPtr->pActiveCell->ch; } case WM_PAINT: @@ -485,12 +527,13 @@ return Ret; } + BOOL RegisterMapClasses(HINSTANCE hInstance) { WNDCLASS wc = {0}; - //wc.style = CS_DBLCLKS; + wc.style = CS_DBLCLKS; wc.lpfnWndProc = MapWndProc; wc.cbWndExtra = sizeof(PMAP); wc.hInstance = hInstance; Modified: trunk/reactos/base/applications/charmap/precomp.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/charmap/…
============================================================================== --- trunk/reactos/base/applications/charmap/precomp.h (original) +++ trunk/reactos/base/applications/charmap/precomp.h Tue Feb 20 02:56:16 2007 @@ -12,9 +12,10 @@ #define YLARGE 25 #define FM_SETFONT (WM_USER + 1) +#define FM_GETCHAR (WM_USER + 2) +#define FM_SETCHAR (WM_USER + 3) extern HINSTANCE hInstance; - typedef struct _CELL { @@ -39,9 +40,17 @@ INT iPage; } MAP, *PMAP; +typedef struct { + NMHDR hdr; + TCHAR ch; +} MAPNOTIFY, *LPMAPNOTIFY; + + +LRESULT CALLBACK LrgCellWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); + VOID ShowAboutDlg(HWND hWndParent); BOOL RegisterMapClasses(HINSTANCE hInstance); VOID UnregisterMapClasses(HINSTANCE hInstance); -#endif /* __DEVMGMT_PRECOMP_H */ +#endif /* __CHARMAP_PRECOMP_H */
17 years, 8 months
1
0
0
0
[ion] 25847: - Create ntverp.h and common.ver files. These are the standard files used by the NT/DDK build systems and we should try to support them as well instead of re-defining everything our own way (especially if we want to build ddk-compatible drivers later on). - Made init.c use version data from ntverp.h instead of hard-coding. - Defined NT 5.2.3790.1830 as the version we report. - Fixed up .rc file to be correct and match DDK-sytnax/style. - For now only the kernel uses this new version
by ion@svn.reactos.org
Author: ion Date: Tue Feb 20 01:28:50 2007 New Revision: 25847 URL:
http://svn.reactos.org/svn/reactos?rev=25847&view=rev
Log: - Create ntverp.h and common.ver files. These are the standard files used by the NT/DDK build systems and we should try to support them as well instead of re-defining everything our own way (especially if we want to build ddk-compatible drivers later on). - Made init.c use version data from ntverp.h instead of hard-coding. - Defined NT 5.2.3790.1830 as the version we report. - Fixed up .rc file to be correct and match DDK-sytnax/style. - For now only the kernel uses this new versionning scheme, but we should change the build system later to use this for every component. Added: branches/alex-kd-branch/reactos/include/psdk/common.ver branches/alex-kd-branch/reactos/include/psdk/ntverp.h Modified: branches/alex-kd-branch/reactos/include/ddk/ntifs.h branches/alex-kd-branch/reactos/ntoskrnl/ex/init.c branches/alex-kd-branch/reactos/ntoskrnl/include/ntoskrnl.h branches/alex-kd-branch/reactos/ntoskrnl/mm/process.c branches/alex-kd-branch/reactos/ntoskrnl/ntoskrnl.rc branches/alex-kd-branch/reactos/ntoskrnl/rtl/misc.c Modified: branches/alex-kd-branch/reactos/include/ddk/ntifs.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/include/…
============================================================================== --- branches/alex-kd-branch/reactos/include/ddk/ntifs.h (original) +++ branches/alex-kd-branch/reactos/include/ddk/ntifs.h Tue Feb 20 01:28:50 2007 @@ -44,7 +44,9 @@ #pragma pack(push,4) +#ifndef VER_PRODUCTBUILD #define VER_PRODUCTBUILD 10000 +#endif #ifndef NTSYSAPI #define NTSYSAPI Added: branches/alex-kd-branch/reactos/include/psdk/common.ver URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/include/…
============================================================================== --- branches/alex-kd-branch/reactos/include/psdk/common.ver (added) +++ branches/alex-kd-branch/reactos/include/psdk/common.ver Tue Feb 20 01:28:50 2007 @@ -1,0 +1,207 @@ +/* + * PROJECT: ReactOS + * LICENSE: GPL - See COPYING in the top level directory + * FILE: include/psdk/common.ver + * PURPOSE: Common Version File. + * PROGRAMMERS: Alex Ionescu (alex.ionescu(a)reactos.org) + */ + +// +// Copyright Year +// +#ifndef VER_LEGALCOPYRIGHT_YEARS +#define VER_LEGALCOPYRIGHT_YEARS "2007" +#endif + +// +// Copyright String +// +#ifndef VER_LEGALCOPYRIGHT_STR +#if defined(RC_INVOKED) && !defined(WIN16) +#define VER_LEGALCOPYRIGHT_STR L"\251 ReactOS Foundation. All rights reserved." +#else +#define VER_LEGALCOPYRIGHT_STR "Copyright (c) ReactOS Foundation. All rights reserved." +#endif +#endif + +// +// Product Name String +// +#ifndef VER_PRODUCTNAME_STR +#ifdef RC_INVOKED +#define VER_PRODUCTNAME_STR L"ReactOS\256 Operating System" +#else +#define VER_PRODUCTNAME_STR "ReactOS (R) Operating System" +#endif +#endif + +// +// The File Version is the same as the Product Version +// +#ifndef VER_FILEVERSION +#define VER_FILEVERSION VER_PRODUCTVERSION +#endif +#ifndef VER_FILEVERSION_STR +#define VER_FILEVERSION_STR VER_PRODUCTVERSION_STR +#endif + +// +// If no Original Name was given, use the Internal NAme +// +#ifndef VER_ORIGINALFILENAME_STR +#define VER_ORIGINALFILENAME_STR VER_INTERNALNAME_STR +#endif + +// +// Allow tagging a Build by Machine/Date +// +#if defined(__BUILDMACHINE__) +#if defined(__BUILDDATE__) +#define B2(x,y) " (" #x "." #y ")" +#define B1(x,y) B2(x, y) +#define BUILD_MACHINE_TAG B1(__BUILDMACHINE__, __BUILDDATE__) +#else +#define B2(x) " built by: " #x +#define B1(x) B2(x) +#define BUILD_MACHINE_TAG B1(__BUILDMACHINE__) +#endif +#if defined(__BUILDMACHINE_LEN__) +#if __BUILDMACHINE_LEN__ >= 25 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG +#elif __BUILDMACHINE_LEN__ == 24 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 23 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 22 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 21 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 20 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 19 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 18 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 17 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 16 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 15 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 14 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 13 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 12 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 11 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 10 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 9 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 8 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 7 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 6 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 5 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 4 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 3 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 2 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#elif __BUILDMACHINE_LEN__ == 1 +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG " " +#else +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG +#endif +#else +#define BUILD_MACHINE_TAG_PADDED BUILD_MACHINE_TAG +#endif +#else +#define BUILD_MACHINE_TAG +#define BUILD_MACHINE_TAG_PADDED +#endif + +// +// Set default neutral Unicode Language ID +// +#ifndef VER_VERSION_UNICODE_LANG +#define VER_VERSION_UNICODE_LANG "000004B0" +#endif + +// +// Set default netural ANSI Language ID +// +#ifndef VER_VERSION_ANSI_LANG +#define VER_VERSION_ANSI_LANG "000004E4" +#endif + +// +// Set default netural translation ID +// +#ifndef VER_VERSION_TRANSLATION +#define VER_VERSION_TRANSLATION 0x0000, 0x04B0 +#endif + +// +// Make sure the Resource Compiler called us. +// If so, then build the actual version resource. +// +#ifdef RC_INVOKED + +VS_VERSION_INFO VERSIONINFO +FILEVERSION VER_FILEVERSION +PRODUCTVERSION VER_PRODUCTVERSION +FILEFLAGSMASK VER_FILEFLAGSMASK +FILEFLAGS VER_FILEFLAGS +FILEOS VER_FILEOS +FILETYPE VER_FILETYPE +FILESUBTYPE VER_FILESUBTYPE +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK VER_VERSION_UNICODE_LANG + BEGIN + VALUE "CompanyName", VER_COMPANYNAME_STR + VALUE "FileDescription", VER_FILEDESCRIPTION_STR + VALUE "FileVersion", VER_FILEVERSION_STR BUILD_MACHINE_TAG_PADDED + VALUE "InternalName", VER_INTERNALNAME_STR + VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR + VALUE "OriginalFilename",VER_ORIGINALFILENAME_STR + VALUE "ProductName", VER_PRODUCTNAME_STR + VALUE "ProductVersion", VER_PRODUCTVERSION_STR +#ifdef VER_OLESELFREGISTER + VALUE "OleSelfRegister", "\0" +#endif + END + +#ifdef VER_ANSICP + BLOCK VER_VERSION_ANSI_LANG + BEGIN + VALUE "CompanyName", VER_COMPANYNAME_STR + VALUE "FileDescription", VER_FILEDESCRIPTION_STR EXPORT_TAG + VALUE "FileVersion", VER_FILEVERSION_STR + VALUE "InternalName", VER_INTERNALNAME_STR + VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR + VALUE "OriginalFilename",VER_ORIGINALFILENAME_STR + VALUE "ProductName", VER_PRODUCTNAME_STR + VALUE "ProductVersion", VER_PRODUCTVERSION_STR +#ifdef VER_OLESELFREGISTER + VALUE "OleSelfRegister", "\0" +#endif + END +#endif + END + + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", VER_VERSION_TRANSLATION + END +END + +#endif Added: branches/alex-kd-branch/reactos/include/psdk/ntverp.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/include/…
============================================================================== --- branches/alex-kd-branch/reactos/include/psdk/ntverp.h (added) +++ branches/alex-kd-branch/reactos/include/psdk/ntverp.h Tue Feb 20 01:28:50 2007 @@ -1,0 +1,151 @@ +/* + * PROJECT: ReactOS + * LICENSE: GPL - See COPYING in the top level directory + * FILE: include/psdk/ntverp.h + * PURPOSE: Master Version File. + * This file should be modified only by the official builder + * to update VERSION, VER_PRODUCTVERSION, VER_PRODUCTVERSION_ + * STR and VER_PRODUCTBETA_STR values. + * The VER_PRODUCTBUILD lines must contain the product + * comments and end with the build#<CR><LF>. + * The VER_PRODUCTBETA_STR lines must contain the product + * comments and end with "somestring"<CR><LF. + * PROGRAMMERS: Alex Ionescu (alex.ionescu(a)reactos.org) + */ + +// +// Windows NT Build 3790.1830 +// +#define VER_PRODUCTBUILD 3790 +#define VER_PRODUCTBUILD_QFE 1830 + +// +// Windows NT Version 5.2 +// +#define VER_PRODUCTMAJORVERSION 5 +#define VER_PRODUCTMINORVERSION 2 +#define VER_PRODUCTVERSION_W (0x0502) +#define VER_PRODUCTVERSION_DW (0x05020000 | VER_PRODUCTBUILD) + +// +// Not a beta +// +#define VER_PRODUCTBETA_STR "" + +// +// ANSI String Generating Macros +// +#define VER_PRODUCTVERSION_MAJORMINOR2(x,y) \ + #x "." #y +#define VER_PRODUCTVERSION_MAJORMINOR1(x,y) \ + VER_PRODUCTVERSION_MAJORMINOR2(x, y) +#define VER_PRODUCTVERSION_STRING \ + VER_PRODUCTVERSION_MAJORMINOR1(VER_PRODUCTMAJORVERSION, VER_PRODUCTMINORVERSION) + +// +// Unicode String Generating Macros +// +#define LVER_PRODUCTVERSION_MAJORMINOR2(x,y)\ + L#x L"." L#y +#define LVER_PRODUCTVERSION_MAJORMINOR1(x,y)\ + LVER_PRODUCTVERSION_MAJORMINOR2(x, y) +#define LVER_PRODUCTVERSION_STRING \ + LVER_PRODUCTVERSION_MAJORMINOR1(VER_PRODUCTMAJORVERSION, VER_PRODUCTMINORVERSION) + +// +// Full Product Version +// +#define VER_PRODUCTVERSION \ + VER_PRODUCTMAJORVERSION,VER_PRODUCTMINORVERSION,VER_PRODUCTBUILD,VER_PRODUCTBUILD_QFE + +// +// Padding for ANSI Version String +// +#if (VER_PRODUCTBUILD < 10) +#define VER_BPAD "000" +#elif (VER_PRODUCTBUILD < 100) +#define VER_BPAD "00" +#elif (VER_PRODUCTBUILD < 1000) +#define VER_BPAD "0" +#else +#define VER_BPAD +#endif + +// +// Padding for Unicode Version String +// +#if (VER_PRODUCTBUILD < 10) +#define LVER_BPAD L"000" +#elif (VER_PRODUCTBUILD < 100) +#define LVER_BPAD L"00" +#elif (VER_PRODUCTBUILD < 1000) +#define LVER_BPAD L"0" +#else +#define LVER_BPAD +#endif + +// +// ANSI Product Version String +// +#define VER_PRODUCTVERSION_STR2(x,y) \ + VER_PRODUCTVERSION_STRING "." VER_BPAD #x "." #y +#define VER_PRODUCTVERSION_STR1(x,y) \ + VER_PRODUCTVERSION_STR2(x, y) +#define VER_PRODUCTVERSION_STR \ + VER_PRODUCTVERSION_STR1(VER_PRODUCTBUILD, VER_PRODUCTBUILD_QFE) + +// +// Unicode Product Version String +// +#define LVER_PRODUCTVERSION_STR2(x,y) \ + LVER_PRODUCTVERSION_STRING L"." LVER_BPAD L#x L"." L#y +#define LVER_PRODUCTVERSION_STR1(x,y) \ + LVER_PRODUCTVERSION_STR2(x, y) +#define LVER_PRODUCTVERSION_STR \ + LVER_PRODUCTVERSION_STR1(VER_PRODUCTBUILD, VER_PRODUCTBUILD_QFE) + +// +// Debug Flag +// +#if DBG +#define VER_DEBUG VS_FF_DEBUG +#else +#define VER_DEBUG 0 +#endif + +// +// Beta Flag +// +#if BETA +#define VER_PRERELEASE VS_FF_PRERELEASE +#else +#define VER_PRERELEASE 0 +#endif + +// +// Internal Flag +// +#if OFFICIAL_BUILD +#define VER_PRIVATE 0 +#else +#define VER_PRIVATE VS_FF_PRIVATEBUILD +#endif + +// +// Other Flags +// +#define VER_FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#define VER_FILEOS VOS_NT_WINDOWS32 +#define VER_FILEFLAGS (VER_PRERELEASE | \ + VER_DEBUG | \ + VER_PRIVATE) + +// +// Company and Trademarks +// +#define VER_COMPANYNAME_STR \ + "ReactOS(R) Foundation" +#define VER_PRODUCTNAME_STR \ + "ReactOS(R) Operating System" +#define VER_LEGALTRADEMARKS_STR \ + "ReactOS(R) is a registered trademark of the ReactOS Foundation." Modified: branches/alex-kd-branch/reactos/ntoskrnl/ex/init.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/ex/init.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/ex/init.c Tue Feb 20 01:28:50 2007 @@ -14,16 +14,18 @@ #include <debug.h> //#include <ntoskrnl/cm/newcm.h> #include "ntoskrnl/cm/cm.h" +#include <ntverp.h> /* DATA **********************************************************************/ -#define BUILD_OSCSDVERSION(major, minor) (((major & 0xFF) << 8) | (minor & 0xFF)) - /* NT Version Info */ -ULONG NtMajorVersion = 5; -ULONG NtMinorVersion = 0; -ULONG NtOSCSDVersion = BUILD_OSCSDVERSION(4, 0); -ULONG NtBuildNumber = KERNEL_VERSION_BUILD; +ULONG NtMajorVersion = VER_PRODUCTMAJORVERSION; +ULONG NtMinorVersion = VER_PRODUCTMINORVERSION; +#if DBG +ULONG NtBuildNumber = VER_PRODUCTBUILD | 0xC0000000; +#else +ULONG NtBuildNumber = VER_PRODUCTBUILD; +#endif /* NT System Info */ ULONG NtGlobalFlag; Modified: branches/alex-kd-branch/reactos/ntoskrnl/include/ntoskrnl.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/include/ntoskrnl.h (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/include/ntoskrnl.h Tue Feb 20 01:28:50 2007 @@ -8,13 +8,14 @@ /* INCLUDES ******************************************************************/ -/* Always target Windows 2003 Service Pack 1 */ +/* Version Data */ +#include <ntverp.h> #define _WIN32_WINNT _WIN32_WINNT_WS03 #define NTDDI_VERSION NTDDI_WS03SP1 + +/* DDK/IFS/NDK Headers */ #define NTKERNELAPI #define NOEXTAPI - -/* DDK/IFS/NDK Headers */ #include <ntifs.h> #undef _KPROCESS #undef _EPROCESS @@ -42,10 +43,8 @@ #include <pseh/pseh.h> /* ReactOS Headers */ -#include <reactos/version.h> -#include <reactos/resource.h> +#include <reactos/buildno.h> #include <reactos/bugcodes.h> -#include <reactos/rossym.h> #define ExRaiseStatus RtlRaiseStatus #include <reactos/probe.h> Modified: branches/alex-kd-branch/reactos/ntoskrnl/mm/process.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/mm/process.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/mm/process.c Tue Feb 20 01:28:50 2007 @@ -15,8 +15,8 @@ extern ULONG NtMajorVersion; extern ULONG NtMinorVersion; -extern ULONG NtOSCSDVersion; -extern ULONG NtGlobalFlag; +extern ULONG CmNtCSDVersion; +extern ULONG NtBuildNumber; extern MM_SYSTEMSIZE MmSystemSize; #define MM_HIGHEST_VAD_ADDRESS \ @@ -329,9 +329,9 @@ /* Default Version Data (could get changed below) */ Peb->OSMajorVersion = NtMajorVersion; Peb->OSMinorVersion = NtMinorVersion; - Peb->OSBuildNumber = 2195; + Peb->OSBuildNumber = (USHORT)(NtBuildNumber & 0x3FFF); Peb->OSPlatformId = 2; /* VER_PLATFORM_WIN32_NT */ - Peb->OSCSDVersion = NtOSCSDVersion; + Peb->OSCSDVersion = CmNtCSDVersion; /* Heap and Debug Data */ Peb->NumberOfProcessors = KeNumberProcessors; Modified: branches/alex-kd-branch/reactos/ntoskrnl/ntoskrnl.rc URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/ntoskrnl.rc (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/ntoskrnl.rc Tue Feb 20 01:28:50 2007 @@ -1,22 +1,38 @@ -/* $Id$ */ +/* + * PROJECT: ReactOS + * LICENSE: GPL - See COPYING in the top level directory + * FILE: ntoskrnl/ntoskrnl.rc + * PURPOSE: Kernel Resource File + * PROGRAMMERS: Alex Ionescu (alex.ionescu(a)reactos.org) + */ +#include <winver.h> +#include <ntverp.h> -#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Kernel & System\0" -#define REACTOS_STR_INTERNAL_NAME "ntoskrnl\0" -#define REACTOS_STR_ORIGINAL_FILENAME "ntoskrnl.exe\0" -#include <reactos/version.rc> +// +// Version Data +// +#define VER_FILETYPE VFT_DRV +#define VER_FILESUBTYPE VFT2_DRV_SYSTEM +#define VER_FILEDESCRIPTION_STR "NT Kernel & System" +#define VER_INTERNALNAME_STR "ntoskrnl.exe" +#define VER_ORIGINALFILENAME_STR "ntoskrnl.exe" +#define VER_LANGNEUTRAL +#include "common.ver" +// +// Bug Codes and Bitmaps +// #include "bugcodes.rc" - -1 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/1.bmp" -2 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/2.bmp" -3 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/3.bmp" -4 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/4.bmp" -5 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/5.bmp" -6 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/6.bmp" -7 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/7.bmp" -8 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/8.bmp" -13 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/13.bmp" -14 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/14.bmp" -15 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/15.bmp" -16 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/16.bmp" -17 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/17.bmp" +1 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/1.bmp" +2 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/2.bmp" +3 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/3.bmp" +4 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/4.bmp" +5 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/5.bmp" +6 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/6.bmp" +7 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/7.bmp" +8 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/8.bmp" +13 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/13.bmp" +14 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/14.bmp" +15 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/15.bmp" +16 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/16.bmp" +17 BITMAP DISCARDABLE "ntoskrnl/inbv/logo/17.bmp" Modified: branches/alex-kd-branch/reactos/ntoskrnl/rtl/misc.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/rtl/misc.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/rtl/misc.c Tue Feb 20 01:28:50 2007 @@ -16,10 +16,9 @@ /* GLOBALS *******************************************************************/ -extern ULONG NtGlobalFlag; extern ULONG NtMajorVersion; extern ULONG NtMinorVersion; -extern ULONG NtOSCSDVersion; +extern ULONG CmNtCSDVersion; /* FUNCTIONS *****************************************************************/ @@ -47,12 +46,12 @@ lpVersionInformation->dwMinorVersion = NtMinorVersion; lpVersionInformation->dwBuildNumber = NtBuildNumber; lpVersionInformation->dwPlatformId = VER_PLATFORM_WIN32_NT; - if(((NtOSCSDVersion >> 8) & 0xFF) != 0) + if(((CmNtCSDVersion >> 8) & 0xFF) != 0) { int i = _snwprintf(lpVersionInformation->szCSDVersion, (sizeof(lpVersionInformation->szCSDVersion) / sizeof(lpVersionInformation->szCSDVersion[0])) - 1, L"Service Pack %d", - ((NtOSCSDVersion >> 8) & 0xFF)); + ((CmNtCSDVersion >> 8) & 0xFF)); lpVersionInformation->szCSDVersion[i] = L'\0'; } else @@ -62,8 +61,8 @@ if (lpVersionInformation->dwOSVersionInfoSize == sizeof(OSVERSIONINFOEXW)) { RTL_OSVERSIONINFOEXW *InfoEx = (RTL_OSVERSIONINFOEXW *)lpVersionInformation; - InfoEx->wServicePackMajor = (USHORT)(NtOSCSDVersion >> 8) & 0xFF; - InfoEx->wServicePackMinor = (USHORT)(NtOSCSDVersion & 0xFF); + InfoEx->wServicePackMajor = (USHORT)(CmNtCSDVersion >> 8) & 0xFF; + InfoEx->wServicePackMinor = (USHORT)(CmNtCSDVersion & 0xFF); InfoEx->wSuiteMask = (USHORT)SharedUserData->SuiteMask; InfoEx->wProductType = SharedUserData->NtProductType; }
17 years, 8 months
1
0
0
0
[ion] 25846: - Implement KdpSysGetVersion, KdpGetVersion, KdpReadVirtualMemory. - Fix bugs in KdInitSystem; some 64-bit pointers must be sign-extneded, not zero-extended (thanks Myria!) - Properly read kernel base instead of kernel stack. - Fix compile issue due to incorrect KiBugCheckData definition. - WinDBG reports: "Connected to Windows Vista 16199 x86 compatible target, ptr64 FALSE. Kernel Debugger connection established. (Initial Breakpoint requested)"
by ion@svn.reactos.org
Author: ion Date: Tue Feb 20 00:30:26 2007 New Revision: 25846 URL:
http://svn.reactos.org/svn/reactos?rev=25846&view=rev
Log: - Implement KdpSysGetVersion, KdpGetVersion, KdpReadVirtualMemory. - Fix bugs in KdInitSystem; some 64-bit pointers must be sign-extneded, not zero-extended (thanks Myria!) - Properly read kernel base instead of kernel stack. - Fix compile issue due to incorrect KiBugCheckData definition. - WinDBG reports: "Connected to Windows Vista 16199 x86 compatible target, ptr64 FALSE. Kernel Debugger connection established. (Initial Breakpoint requested)" Modified: branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ke.h branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdinit.c Modified: branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ke.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ke.h (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ke.h Tue Feb 20 00:30:26 2007 @@ -151,7 +151,7 @@ extern UCHAR KiDebugRegisterContextOffsets[9]; extern ULONG KiFreezeFlag; extern ULONG KeTimeIncrement; -extern PVOID KiBugCheckData; +extern ULONG_PTR KiBugCheckData[5]; /* MACROS *************************************************************************/ Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c Tue Feb 20 00:30:26 2007 @@ -89,12 +89,82 @@ } } -BOOLEAN +VOID +NTAPI +KdpSysGetVersion(IN PDBGKD_GET_VERSION64 Version) +{ + /* Copy the version block */ + RtlCopyMemory(Version, &KdVersionBlock, sizeof(DBGKD_GET_VERSION64)); +} + +VOID +NTAPI +KdpGetVersion(IN PDBGKD_MANIPULATE_STATE64 State) +{ + STRING Header; + + /* Fill out the header */ + Header.Length = sizeof(DBGKD_GET_VERSION64); + Header.Buffer = (PCHAR)State; + + /* Get the version block */ + KdpSysGetVersion(&State->u.GetVersion64); + + /* Fill out the state */ + State->ApiNumber = DbgKdGetVersionApi; + State->ReturnStatus = STATUS_SUCCESS; + + /* Send the packet */ + KdSendPacket(PACKET_TYPE_KD_STATE_MANIPULATE, + &Header, + NULL, + &KdpContext); +} + +VOID +NTAPI +KdpReadVirtualMemory(IN PDBGKD_MANIPULATE_STATE64 State, + IN PSTRING Data, + IN PCONTEXT Context) +{ + STRING Header; + ULONG Length = State->u.ReadMemory.TransferCount; + + /* Validate length */ + if (Length > (PACKET_MAX_SIZE - sizeof(DBGKD_MANIPULATE_STATE64))) + { + /* Overflow, set it to maximum possible */ + Length = PACKET_MAX_SIZE - sizeof(DBGKD_MANIPULATE_STATE64); + } + + /* Copy data */ + RtlCopyMemory(Data->Buffer, + (PVOID)(ULONG_PTR)State->u.ReadMemory.TargetBaseAddress, + Length); + Data->Length = Length; + + /* Fill out the header */ + Header.Length = sizeof(DBGKD_GET_VERSION64); + Header.Buffer = (PCHAR)State; + + /* Fill out the state */ + State->ReturnStatus = STATUS_SUCCESS; + State->u.ReadMemory.ActualBytesRead = Length; + + /* Send the packet */ + KdSendPacket(PACKET_TYPE_KD_STATE_MANIPULATE, + &Header, + Data, + &KdpContext); +} + + +KCONTINUE_STATUS NTAPI KdpSendWaitContinue(IN ULONG PacketType, IN PSTRING SendHeader, IN PSTRING SendData OPTIONAL, - IN OUT PCONTEXT ContextRecord) + IN OUT PCONTEXT Context) { STRING Data, Header; DBGKD_MANIPULATE_STATE64 ManipulateState; @@ -113,7 +183,7 @@ KdSendPacket(PacketType, SendHeader, SendData, &KdpContext); /* If the debugger isn't present anymore, just return success */ - if (KdDebuggerNotPresent) return TRUE; + if (KdDebuggerNotPresent) return ContinueSuccess; /* Main processing Loop */ for (;;) @@ -122,7 +192,6 @@ do { /* Wait to get a reply to our packet */ - ManipulateState.ApiNumber = 0xFFFFFFFF; RecvCode = KdReceivePacket(PACKET_TYPE_KD_STATE_MANIPULATE, &Header, &Data, @@ -138,9 +207,8 @@ { case DbgKdReadVirtualMemoryApi: - /* FIXME: TODO */ - Ke386SetCr2(DbgKdReadVirtualMemoryApi); - while (TRUE); + /* Read virtual memory */ + KdpReadVirtualMemory(&ManipulateState, &Data, Context); break; case DbgKdWriteVirtualMemoryApi: @@ -292,9 +360,8 @@ case DbgKdGetVersionApi: - /* FIXME: TODO */ - Ke386SetCr2(DbgKdGetVersionApi); - while (TRUE); + /* Get version data */ + KdpGetVersion(&ManipulateState); break; case DbgKdWriteBreakPointExApi: Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c Tue Feb 20 00:30:26 2007 @@ -340,7 +340,7 @@ {0}, // ExpNumberOfPagedPools {PtrToUlong(&KeTimeIncrement)}, {PtrToUlong(&KeBugcheckCallbackListHead)}, - {PtrToUlong(&KiBugCheckData)}, + {PtrToUlong(KiBugCheckData)}, {PtrToUlong(&IopErrorLogListHead)}, {PtrToUlong(&ObpRootDirectoryObject)}, {PtrToUlong(&ObpTypeObjectType)}, Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdinit.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdinit.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdinit.c Tue Feb 20 00:30:26 2007 @@ -109,8 +109,8 @@ #endif /* Save Pointers to Loaded Module List and Debugger Data */ - KdVersionBlock.PsLoadedModuleList = (ULONG64)&PsLoadedModuleList; - KdVersionBlock.DebuggerDataList = (ULONG64)&KdpDebuggerDataListHead; + KdVersionBlock.PsLoadedModuleList = (ULONGLONG)(LONG_PTR)&PsLoadedModuleList; + KdVersionBlock.DebuggerDataList = (ULONGLONG)(LONG_PTR)&KdpDebuggerDataListHead; /* Set protocol limits */ KdVersionBlock.MaxStateChange = DbgKdMaximumStateChange - @@ -126,8 +126,13 @@ /* Check if we have a loader block */ if (LoaderBlock) { + /* Get the image entry */ + LdrEntry = CONTAINING_RECORD(LoaderBlock->LoadOrderListHead.Flink, + LDR_DATA_TABLE_ENTRY, + InLoadOrderLinks); + /* Save the Kernel Base */ - KdVersionBlock.KernBase = (ULONG64)LoaderBlock->KernelStack; + KdVersionBlock.KernBase =(ULONGLONG)(LONG_PTR)LdrEntry->DllBase; /* Check if we have a command line */ CommandLine = LoaderBlock->LoadOptions; @@ -167,14 +172,14 @@ else { /* Called from a bugcheck...Save the Kernel Base */ - KdVersionBlock.KernBase = PsNtosImageBase; + KdVersionBlock.KernBase = (ULONGLONG)(LONG_PTR)PsNtosImageBase; /* Unconditionally enable KD */ EnableKd = TRUE; } /* Set the Kernel Base in the Data Block */ - KdDebuggerDataBlock.KernBase = KdVersionBlock.KernBase; + KdDebuggerDataBlock.KernBase = (ULONG_PTR)PsNtosImageBase; /* Initialize the debugger if requested */ if ((EnableKd) && (NT_SUCCESS(KdDebuggerInitialize0(LoaderBlock))))
17 years, 8 months
1
0
0
0
[ion] 25845: - Create GCC_ULONG64 type to hack around a bug in GCC which is incapable of creating entries for externals at compile-time for 64-bit pointers. - Rename NameSpaceRoot to ObpRootDirectoryObject, IopLogListHead to IopErrorLogListHead, BugcheckCallbackListHead to KeBugcheckCallbackListHead, BugcheckReasonCallbackListHead to KeBugcheckReasonCallbackListHead, ObTypeObjectType to ObpTypeObjectType. - Fill out KdDebuggerDataBlock with the variables that ROS currently supports. Most Mm vari
by ion@svn.reactos.org
Author: ion Date: Mon Feb 19 21:52:23 2007 New Revision: 25845 URL:
http://svn.reactos.org/svn/reactos?rev=25845&view=rev
Log: - Create GCC_ULONG64 type to hack around a bug in GCC which is incapable of creating entries for externals at compile-time for 64-bit pointers. - Rename NameSpaceRoot to ObpRootDirectoryObject, IopLogListHead to IopErrorLogListHead, BugcheckCallbackListHead to KeBugcheckCallbackListHead, BugcheckReasonCallbackListHead to KeBugcheckReasonCallbackListHead, ObTypeObjectType to ObpTypeObjectType. - Fill out KdDebuggerDataBlock with the variables that ROS currently supports. Most Mm variables we don't have yet -- it's unknown how much this will hurt WinDBG compatibility/functionality. - Add KdPrint circular buffer and buffer location/data variables. Modified: branches/alex-kd-branch/reactos/include/ndk/asm.h branches/alex-kd-branch/reactos/include/psdk/wdbgexts.h branches/alex-kd-branch/reactos/lib/rtl/i386/debug_asm.S branches/alex-kd-branch/reactos/ntoskrnl/cm/regobj.c branches/alex-kd-branch/reactos/ntoskrnl/ex/init.c branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ex.h branches/alex-kd-branch/reactos/ntoskrnl/include/internal/io.h branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ke.h branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ob.h branches/alex-kd-branch/reactos/ntoskrnl/io/iomgr/error.c branches/alex-kd-branch/reactos/ntoskrnl/io/iomgr/iomgr.c branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c branches/alex-kd-branch/reactos/ntoskrnl/ke/bug.c branches/alex-kd-branch/reactos/ntoskrnl/ke/krnlinit.c branches/alex-kd-branch/reactos/ntoskrnl/ob/obinit.c branches/alex-kd-branch/reactos/ntoskrnl/ob/oblife.c branches/alex-kd-branch/reactos/ntoskrnl/ob/obname.c Modified: branches/alex-kd-branch/reactos/include/ndk/asm.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/include/…
============================================================================== --- branches/alex-kd-branch/reactos/include/ndk/asm.h (original) +++ branches/alex-kd-branch/reactos/include/ndk/asm.h Mon Feb 19 21:52:23 2007 @@ -503,6 +503,7 @@ #define CBSTACK_STACK 0x0 #define CBSTACK_TRAP_FRAME 0x4 #define CBSTACK_CALLBACK_STACK 0x8 +#define CBSTACK_EBP 0x18 #define CBSTACK_RESULT 0x20 #define CBSTACK_RESULT_LENGTH 0x24 Modified: branches/alex-kd-branch/reactos/include/psdk/wdbgexts.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/include/…
============================================================================== --- branches/alex-kd-branch/reactos/include/psdk/wdbgexts.h (original) +++ branches/alex-kd-branch/reactos/include/psdk/wdbgexts.h Mon Feb 19 21:52:23 2007 @@ -47,92 +47,98 @@ ULONG Size; } DBGKD_DEBUG_DATA_HEADER64, *PDBGKD_DEBUG_DATA_HEADER64; +typedef union _GCC_ULONG64 +{ + ULONG_PTR Pointer; + ULONG64 RealPointer; +} GCC_ULONG64, *PGCC_ULONG64; + typedef struct _KDDEBUGGER_DATA64 { DBGKD_DEBUG_DATA_HEADER64 Header; ULONG64 KernBase; - ULONG64 BreakpointWithStatus; + GCC_ULONG64 BreakpointWithStatus; ULONG64 SavedContext; USHORT ThCallbackStack; USHORT NextCallback; USHORT FramePointer; USHORT PaeEnabled:1; - ULONG64 KiCallUserMode; - ULONG64 KeUserCallbackDispatcher; - ULONG64 PsLoadedModuleList; - ULONG64 PsActiveProcessHead; - ULONG64 PspCidTable; - ULONG64 ExpSystemResourcesList; - ULONG64 ExpPagedPoolDescriptor; - ULONG64 ExpNumberOfPagedPools; - ULONG64 KeTimeIncrement; - ULONG64 KeBugCheckCallbackListHead; - ULONG64 KiBugcheckData; - ULONG64 IopErrorLogListHead; - ULONG64 ObpRootDirectoryObject; - ULONG64 ObpTypeObjectType; - ULONG64 MmSystemCacheStart; - ULONG64 MmSystemCacheEnd; - ULONG64 MmSystemCacheWs; - ULONG64 MmPfnDatabase; - ULONG64 MmSystemPtesStart; - ULONG64 MmSystemPtesEnd; - ULONG64 MmSubsectionBase; - ULONG64 MmNumberOfPagingFiles; - ULONG64 MmLowestPhysicalPage; - ULONG64 MmHighestPhysicalPage; - ULONG64 MmNumberOfPhysicalPages; - ULONG64 MmMaximumNonPagedPoolInBytes; - ULONG64 MmNonPagedSystemStart; - ULONG64 MmNonPagedPoolStart; - ULONG64 MmNonPagedPoolEnd; - ULONG64 MmPagedPoolStart; - ULONG64 MmPagedPoolEnd; - ULONG64 MmPagedPoolInformation; + GCC_ULONG64 KiCallUserMode; + GCC_ULONG64 KeUserCallbackDispatcher; + GCC_ULONG64 PsLoadedModuleList; + GCC_ULONG64 PsActiveProcessHead; + GCC_ULONG64 PspCidTable; + GCC_ULONG64 ExpSystemResourcesList; + GCC_ULONG64 ExpPagedPoolDescriptor; + GCC_ULONG64 ExpNumberOfPagedPools; + GCC_ULONG64 KeTimeIncrement; + GCC_ULONG64 KeBugCheckCallbackListHead; + GCC_ULONG64 KiBugcheckData; + GCC_ULONG64 IopErrorLogListHead; + GCC_ULONG64 ObpRootDirectoryObject; + GCC_ULONG64 ObpTypeObjectType; + GCC_ULONG64 MmSystemCacheStart; + GCC_ULONG64 MmSystemCacheEnd; + GCC_ULONG64 MmSystemCacheWs; + GCC_ULONG64 MmPfnDatabase; + GCC_ULONG64 MmSystemPtesStart; + GCC_ULONG64 MmSystemPtesEnd; + GCC_ULONG64 MmSubsectionBase; + GCC_ULONG64 MmNumberOfPagingFiles; + GCC_ULONG64 MmLowestPhysicalPage; + GCC_ULONG64 MmHighestPhysicalPage; + GCC_ULONG64 MmNumberOfPhysicalPages; + GCC_ULONG64 MmMaximumNonPagedPoolInBytes; + GCC_ULONG64 MmNonPagedSystemStart; + GCC_ULONG64 MmNonPagedPoolStart; + GCC_ULONG64 MmNonPagedPoolEnd; + GCC_ULONG64 MmPagedPoolStart; + GCC_ULONG64 MmPagedPoolEnd; + GCC_ULONG64 MmPagedPoolInformation; ULONG64 MmPageSize; - ULONG64 MmSizeOfPagedPoolInBytes; - ULONG64 MmTotalCommitLimit; - ULONG64 MmTotalCommittedPages; - ULONG64 MmSharedCommit; - ULONG64 MmDriverCommit; - ULONG64 MmProcessCommit; - ULONG64 MmPagedPoolCommit; - ULONG64 MmExtendedCommit; - ULONG64 MmZeroedPageListHead; - ULONG64 MmFreePageListHead; - ULONG64 MmStandbyPageListHead; - ULONG64 MmModifiedPageListHead; - ULONG64 MmModifiedNoWritePageListHead; - ULONG64 MmAvailablePages; - ULONG64 MmResidentAvailablePages; - ULONG64 PoolTrackTable; - ULONG64 NonPagedPoolDescriptor; - ULONG64 MmHighestUserAddress; - ULONG64 MmSystemRangeStart; - ULONG64 MmUserProbeAddress; - ULONG64 KdPrintCircularBuffer; - ULONG64 KdPrintCircularBufferEnd; - ULONG64 KdPrintWritePointer; - ULONG64 KdPrintRolloverCount; - ULONG64 MmLoadedUserImageList; - ULONG64 NtBuildLab; - ULONG64 KiNormalSystemCall; - ULONG64 KiProcessorBlock; - ULONG64 MmUnloadedDrivers; - ULONG64 MmLastUnloadedDriver; - ULONG64 MmTriageActionTaken; - ULONG64 MmSpecialPoolTag; - ULONG64 KernelVerifier; - ULONG64 MmVerifierData; - ULONG64 MmAllocatedNonPagedPool; - ULONG64 MmPeakCommitment; - ULONG64 MmTotalCommitLimitMaximum; - ULONG64 CmNtCSDVersion; - ULONG64 MmPhysicalMemoryBlock; - ULONG64 MmSessionBase; - ULONG64 MmSessionSize; - ULONG64 MmSystemParentTablePage; - ULONG64 MmVirtualTranslationBase; + GCC_ULONG64 MmSizeOfPagedPoolInBytes; + GCC_ULONG64 MmTotalCommitLimit; + GCC_ULONG64 MmTotalCommittedPages; + GCC_ULONG64 MmSharedCommit; + GCC_ULONG64 MmDriverCommit; + GCC_ULONG64 MmProcessCommit; + GCC_ULONG64 MmPagedPoolCommit; + GCC_ULONG64 MmExtendedCommit; + GCC_ULONG64 MmZeroedPageListHead; + GCC_ULONG64 MmFreePageListHead; + GCC_ULONG64 MmStandbyPageListHead; + GCC_ULONG64 MmModifiedPageListHead; + GCC_ULONG64 MmModifiedNoWritePageListHead; + GCC_ULONG64 MmAvailablePages; + GCC_ULONG64 MmResidentAvailablePages; + GCC_ULONG64 PoolTrackTable; + GCC_ULONG64 NonPagedPoolDescriptor; + GCC_ULONG64 MmHighestUserAddress; + GCC_ULONG64 MmSystemRangeStart; + GCC_ULONG64 MmUserProbeAddress; + GCC_ULONG64 KdPrintCircularBuffer; + GCC_ULONG64 KdPrintCircularBufferEnd; + GCC_ULONG64 KdPrintWritePointer; + GCC_ULONG64 KdPrintRolloverCount; + GCC_ULONG64 MmLoadedUserImageList; + GCC_ULONG64 NtBuildLab; + GCC_ULONG64 KiNormalSystemCall; + GCC_ULONG64 KiProcessorBlock; + GCC_ULONG64 MmUnloadedDrivers; + GCC_ULONG64 MmLastUnloadedDriver; + GCC_ULONG64 MmTriageActionTaken; + GCC_ULONG64 MmSpecialPoolTag; + GCC_ULONG64 KernelVerifier; + GCC_ULONG64 MmVerifierData; + GCC_ULONG64 MmAllocatedNonPagedPool; + GCC_ULONG64 MmPeakCommitment; + GCC_ULONG64 MmTotalCommitLimitMaximum; + GCC_ULONG64 CmNtCSDVersion; + GCC_ULONG64 MmPhysicalMemoryBlock; + GCC_ULONG64 MmSessionBase; + GCC_ULONG64 MmSessionSize; + GCC_ULONG64 MmSystemParentTablePage; + GCC_ULONG64 MmVirtualTranslationBase; USHORT OffsetKThreadNextProcessor; USHORT OffsetKThreadTeb; USHORT OffsetKThreadKernelStack; @@ -154,9 +160,9 @@ USHORT OffsetPrcbProcStateContext; USHORT OffsetPrcbNumber; USHORT SizeEThread; - ULONG64 KdPrintCircularBufferPtr; - ULONG64 KdPrintBufferSize; - ULONG64 KeLoaderBlock; + GCC_ULONG64 KdPrintCircularBufferPtr; + GCC_ULONG64 KdPrintBufferSize; + GCC_ULONG64 KeLoaderBlock; USHORT SizePcr; USHORT OffsetPcrSelfPcr; USHORT OffsetPcrCurrentPrcb; @@ -177,9 +183,9 @@ USHORT GdtTss; USHORT Gdt64R3CmCode; USHORT Gdt64R3CmTeb; - ULONG64 IopNumTriageDumpDataBlocks; - ULONG64 IopTriageDumpDataBlocks; - ULONG64 VfCrashDataBlock; + GCC_ULONG64 IopNumTriageDumpDataBlocks; + GCC_ULONG64 IopTriageDumpDataBlocks; + GCC_ULONG64 VfCrashDataBlock; } KDDEBUGGER_DATA64, *PKDDEBUGGER_DATA64; #endif Modified: branches/alex-kd-branch/reactos/lib/rtl/i386/debug_asm.S URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/lib/rtl/…
============================================================================== --- branches/alex-kd-branch/reactos/lib/rtl/i386/debug_asm.S (original) +++ branches/alex-kd-branch/reactos/lib/rtl/i386/debug_asm.S Mon Feb 19 21:52:23 2007 @@ -16,6 +16,7 @@ .globl _DebugService@20 .globl _DebugService2@12 .globl _DbgBreakPointNoBugCheck@0 +.globl _RtlpBreakWithStatusInstruction@0 /* FUNCTIONS ***************************************************************/ @@ -35,6 +36,8 @@ .func DbgBreakPointWithStatus@4 _DbgBreakPointWithStatus@4: mov eax, [esp+4] + +_RtlpBreakWithStatusInstruction@0: int 3 ret 4 .endfunc Modified: branches/alex-kd-branch/reactos/ntoskrnl/cm/regobj.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/cm/regobj.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/cm/regobj.c Mon Feb 19 21:52:23 2007 @@ -172,11 +172,11 @@ if (ObjectCreateInfo->RootDirectory == NULL) { - ObReferenceObjectByPointer(NameSpaceRoot, + ObReferenceObjectByPointer(ObpRootDirectoryObject, DIRECTORY_TRAVERSE, CmiKeyType, ObjectCreateInfo->ProbeMode); - CurrentObject = NameSpaceRoot; + CurrentObject = ObpRootDirectoryObject; } else { @@ -312,7 +312,7 @@ if (Status == STATUS_REPARSE) { /* reparse the object path */ - NextObject = NameSpaceRoot; + NextObject = ObpRootDirectoryObject; current = PathString.Buffer; ObReferenceObjectByPointer(NextObject, Modified: branches/alex-kd-branch/reactos/ntoskrnl/ex/init.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/ex/init.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/ex/init.c Mon Feb 19 21:52:23 2007 @@ -24,8 +24,18 @@ ULONG NtMinorVersion = 0; ULONG NtOSCSDVersion = BUILD_OSCSDVERSION(4, 0); ULONG NtBuildNumber = KERNEL_VERSION_BUILD; + +/* NT System Info */ ULONG NtGlobalFlag; ULONG ExSuiteMask; + +/* Cm Version Info */ +ULONG CmNtSpBuildNumber; +ULONG CmNtCSDVersion; +ULONG CmNtCSDReleaseType; +UNICODE_STRING CmVersionString; +UNICODE_STRING CmCSDVersionString; +CHAR NtBuildLab[] = KERNEL_VERSION_BUILD_STR; /* Init flags and settings */ ULONG ExpInitializationPhase; Modified: branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ex.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ex.h (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ex.h Mon Feb 19 21:52:23 2007 @@ -18,9 +18,12 @@ extern LIST_ENTRY ExpFirmwareTableProviderListHead; extern BOOLEAN ExpIsWinPEMode; extern ULONG NtGlobalFlag; +extern LIST_ENTRY ExpSystemResourcesList; ULONG ExpAnsiCodePageDataOffset, ExpOemCodePageDataOffset; ULONG ExpUnicodeCaseTableDataOffset; PVOID ExpNlsSectionPointer; +extern CHAR NtBuildLab[]; +extern ULONG CmNtCSDVersion; typedef struct _EXHANDLE { Modified: branches/alex-kd-branch/reactos/ntoskrnl/include/internal/io.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/include/internal/io.h (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/include/internal/io.h Mon Feb 19 21:52:23 2007 @@ -968,6 +968,7 @@ extern GENERIC_MAPPING IopFileMapping; extern POBJECT_TYPE _IoFileObjectType; extern HAL_DISPATCH _HalDispatchTable; +extern LIST_ENTRY IopErrorLogListHead; // // Inlined Functions Modified: branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ke.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ke.h (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ke.h Mon Feb 19 21:52:23 2007 @@ -126,7 +126,7 @@ extern UCHAR KiTimeIncrementShiftCount; extern ULONG KiTimeLimitIsrMicroseconds; extern ULONG KiServiceLimit; -extern LIST_ENTRY BugcheckCallbackListHead, BugcheckReasonCallbackListHead; +extern LIST_ENTRY KeBugcheckCallbackListHead, KeBugcheckReasonCallbackListHead; extern KSPIN_LOCK BugCheckCallbackLock; extern KDPC KiTimerExpireDpc; extern KTIMER_TABLE_ENTRY KiTimerTableListHead[TIMER_TABLE_SIZE]; @@ -150,6 +150,8 @@ extern UCHAR KiDebugRegisterTrapOffsets[9]; extern UCHAR KiDebugRegisterContextOffsets[9]; extern ULONG KiFreezeFlag; +extern ULONG KeTimeIncrement; +extern PVOID KiBugCheckData; /* MACROS *************************************************************************/ Modified: branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ob.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ob.h (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/include/internal/ob.h Mon Feb 19 21:52:23 2007 @@ -503,8 +503,8 @@ extern KEVENT ObpDefaultObject; extern POBJECT_TYPE ObpTypeObjectType; extern POBJECT_TYPE ObSymbolicLinkType; -extern POBJECT_TYPE ObTypeObjectType; -extern POBJECT_DIRECTORY NameSpaceRoot; +extern POBJECT_TYPE ObpTypeObjectType; +extern POBJECT_DIRECTORY ObpRootDirectoryObject; extern POBJECT_DIRECTORY ObpTypeDirectoryObject; extern PHANDLE_TABLE ObpKernelHandleTable; extern WORK_QUEUE_ITEM ObpReaperWorkItem; Modified: branches/alex-kd-branch/reactos/ntoskrnl/io/iomgr/error.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/io/iomgr/error.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/io/iomgr/error.c Mon Feb 19 21:52:23 2007 @@ -23,7 +23,7 @@ /* GLOBALS *******************************************************************/ LONG IopTotalLogSize; -LIST_ENTRY IopLogListHead; +LIST_ENTRY IopErrorLogListHead; KSPIN_LOCK IopLogListLock; BOOLEAN IopLogWorkerRunning; @@ -59,7 +59,7 @@ /* Acquire the lock and check if the list is empty */ KeAcquireSpinLock(&IopLogListLock, &OldIrql); - if (IsListEmpty(&IopLogListHead)) + if (IsListEmpty(&IopErrorLogListHead)) { /* List is empty, disable the worker and return NULL */ IopLogWorkerRunning = FALSE; @@ -68,7 +68,7 @@ else { /* Otherwise, remove an entry */ - ListEntry = RemoveHeadList(&IopLogListHead); + ListEntry = RemoveHeadList(&IopErrorLogListHead); } /* Release the lock and return the entry */ @@ -420,7 +420,7 @@ if (!NT_SUCCESS(Status)) { /* Requeue log message and restart the worker */ - ExInterlockedInsertTailList(&IopLogListHead, + ExInterlockedInsertTailList(&IopErrorLogListHead, &LogEntry->ListEntry, &IopLogListLock); IopLogWorkerRunning = FALSE; @@ -581,7 +581,7 @@ /* Acquire the lock and insert this write in the list */ KeAcquireSpinLock(&IopLogListLock, &Irql); - InsertHeadList(&IopLogListHead, &LogEntry->ListEntry); + InsertHeadList(&IopErrorLogListHead, &LogEntry->ListEntry); /* Check if the worker is runnign */ if (!IopLogWorkerRunning) Modified: branches/alex-kd-branch/reactos/ntoskrnl/io/iomgr/iomgr.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/io/iomgr/iomgr.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/io/iomgr/iomgr.c Mon Feb 19 21:52:23 2007 @@ -70,7 +70,7 @@ extern LIST_ENTRY DriverReinitListHead; extern LIST_ENTRY PnpNotifyListHead; extern LIST_ENTRY FsChangeNotifyListHead; -extern LIST_ENTRY IopLogListHead; +extern LIST_ENTRY IopErrorLogListHead; extern LIST_ENTRY IopTimerQueueHead; extern KDPC IopTimerDpc; extern KTIMER IopTimer; @@ -467,7 +467,7 @@ InitializeListHead(&PnpNotifyListHead); InitializeListHead(&ShutdownListHead); InitializeListHead(&FsChangeNotifyListHead); - InitializeListHead(&IopLogListHead); + InitializeListHead(&IopErrorLogListHead); KeInitializeSpinLock(&CancelSpinLock); KeInitializeSpinLock(&IoVpbLock); KeInitializeSpinLock(&IoStatisticsLock); Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c Mon Feb 19 21:52:23 2007 @@ -12,6 +12,8 @@ #define NDEBUG #include <debug.h> +VOID NTAPI RtlpBreakWithStatusInstruction(VOID); + /* GLOBALS *******************************************************************/ // @@ -34,13 +36,6 @@ 0, 0 }; - -// -// Debugger Data -// -KDDEBUGGER_DATA64 KdDebuggerDataBlock; -LIST_ENTRY KdpDebuggerDataListHead; -KSPIN_LOCK KdpDataSpinLock; // // Debugger State @@ -87,6 +82,16 @@ // CHAR KdpMessageBuffer[4096]; CHAR KdpPathBuffer[4096]; + +// +// KdPrint Buffers +// +CHAR KdPrintDefaultCircularBuffer[0x8000]; +PCHAR KdPrintWritePointer = KdPrintDefaultCircularBuffer; +ULONG KdPrintRolloverCount; +PCHAR KdPrintCircularBuffer = KdPrintDefaultCircularBuffer; +ULONG KdPrintBufferSize = sizeof(KdPrintDefaultCircularBuffer); +ULONG KdPrintBufferChanges = 0; // // Debug Filter Masks @@ -309,3 +314,143 @@ }; ULONG KdComponentTableSize = sizeof(KdComponentTable); + +// +// Debugger Data +// +LIST_ENTRY KdpDebuggerDataListHead; +KSPIN_LOCK KdpDataSpinLock; +KDDEBUGGER_DATA64 KdDebuggerDataBlock = +{ + {{0}}, + 0, + {PtrToUlong(RtlpBreakWithStatusInstruction)}, + 0, + FIELD_OFFSET(KTHREAD, CallbackStack), + CBSTACK_CALLBACK_STACK, + CBSTACK_EBP, + 0, + {PtrToUlong(KiCallUserMode)}, + {0}, + {PtrToUlong(&PsLoadedModuleList)}, + {PtrToUlong(&PsActiveProcessHead)}, + {PtrToUlong(&PspCidTable)}, + {PtrToUlong(&ExpSystemResourcesList)}, + {0}, // ExpPagedPoolDescriptor + {0}, // ExpNumberOfPagedPools + {PtrToUlong(&KeTimeIncrement)}, + {PtrToUlong(&KeBugcheckCallbackListHead)}, + {PtrToUlong(&KiBugCheckData)}, + {PtrToUlong(&IopErrorLogListHead)}, + {PtrToUlong(&ObpRootDirectoryObject)}, + {PtrToUlong(&ObpTypeObjectType)}, + {0}, // MmSystemCacheStart + {0}, // MmSystemCacheEnd + {0}, // MmSystemCacheWs + {0}, // MmPfnDatabase + {0}, // MmSystemPtesStart + {0}, // MmSystemPtesEnd + {0}, // MmSubsectionBase + {0}, // MmNumberOfPagingFiles + {0}, // MmLowestPhysicalPage + {0}, // MmHighestPhysicalPage + {0}, // MmNumberOfPhysicalPages + {0}, // MmMaximumNonPagedPoolInBytes + {0}, // MmNonPagedSystemStart + {0}, // MmNonPagedPoolStart + {0}, // MmNonPagedPoolEnd + {0}, // MmPagedPoolStart + {0}, // MmPagedPoolEnd + {0}, // MmPagedPoolInfo + PAGE_SIZE, + {0}, // MmSizeOfPagedPoolInBytes + {0}, // MmTotalCommitLimit + {0}, // MmTotalCommittedPages + {0}, // MmSharedCommit + {0}, // MmDriverCommit + {0}, // MmProcessCommit + {0}, // MmPagedPoolCommit + {0}, + {0}, // MmZeroedPageListHead + {0}, // MmFreePageListHead + {0}, // MmStandbyPageListHead + {0}, // MmModifiedPageListHead + {0}, // MmModifiedNoWritePageListHead + {0}, // MmAvailablePages + {0}, // MmResidentAvailablePages + {0}, // PoolTrackTable + {0}, // NonPagedPoolDescriptor + {PtrToUlong(&MmHighestUserAddress)}, + {PtrToUlong(&MmSystemRangeStart)}, + {PtrToUlong(&MmUserProbeAddress)}, + {PtrToUlong(KdPrintDefaultCircularBuffer)}, + {PtrToUlong(KdPrintDefaultCircularBuffer + 1)}, + {PtrToUlong(&KdPrintWritePointer)}, + {PtrToUlong(&KdPrintRolloverCount)}, + {0}, // MmLoadedUserImageList + {PtrToUlong(&NtBuildLab)}, + {0}, + {PtrToUlong(KiProcessorBlock)}, + {0}, // MmUnloadedDrivers + {0}, // MmLastUnloadedDrivers + {0}, // MmTriageActionTaken + {0}, // MmSpecialPoolTag + {0}, // KernelVerifier + {0}, // MmVerifierData + {0}, // MmAllocatedNonPagedPool + {0}, // MmPeakCommitment + {0}, // MmtotalCommitLimitMaximum + {PtrToUlong(&CmNtCSDVersion)}, + {0}, // MmPhysicalMemoryBlock + {0}, // MmSessionBase + {0}, // MmSessionSize + {0}, + {0}, + FIELD_OFFSET(KTHREAD, NextProcessor), + FIELD_OFFSET(KTHREAD, Teb), + FIELD_OFFSET(KTHREAD, KernelStack), + FIELD_OFFSET(KTHREAD, InitialStack), + FIELD_OFFSET(KTHREAD, ApcState.Process), + FIELD_OFFSET(KTHREAD, State), + 0, + 0, + sizeof(EPROCESS), + FIELD_OFFSET(EPROCESS, Peb), + FIELD_OFFSET(EPROCESS, InheritedFromUniqueProcessId), + FIELD_OFFSET(EPROCESS, Pcb.DirectoryTableBase), + sizeof(KPRCB), + FIELD_OFFSET(KPRCB, DpcRoutineActive), + FIELD_OFFSET(KPRCB, CurrentThread), + FIELD_OFFSET(KPRCB, MHz), + FIELD_OFFSET(KPRCB, CpuType), + FIELD_OFFSET(KPRCB, VendorString), + FIELD_OFFSET(KPRCB, ProcessorState.ContextFrame), + FIELD_OFFSET(KPRCB, Number), + sizeof(ETHREAD), + {PtrToUlong(KdPrintDefaultCircularBuffer)}, + {PtrToUlong(&KdPrintBufferSize)}, + {PtrToUlong(&KeLoaderBlock)}, + sizeof(KIPCR) + sizeof(KPRCB), + FIELD_OFFSET(KIPCR, Self), + FIELD_OFFSET(KPCR, Prcb), + FIELD_OFFSET(KIPCR, PrcbData), + 0, + 0, + 0, + 0, + 0, + FIELD_OFFSET(KIPCR, PrcbData) + + FIELD_OFFSET(KPRCB, ProcessorState.SpecialRegisters), + KGDT_R0_CODE, + KGDT_R0_DATA, + KGDT_R0_PCR, + KGDT_R3_CODE, + KGDT_R3_DATA, + KGDT_R3_TEB, + KGDT_LDT, + KGDT_TSS, + 0, + 0, + {0}, // IopNumTriagDumpDataBlocks + {0}, // IopTriageDumpDataBlocks +}; Modified: branches/alex-kd-branch/reactos/ntoskrnl/ke/bug.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/ke/bug.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/ke/bug.c Mon Feb 19 21:52:23 2007 @@ -18,8 +18,8 @@ /* GLOBALS *******************************************************************/ -LIST_ENTRY BugcheckCallbackListHead; -LIST_ENTRY BugcheckReasonCallbackListHead; +LIST_ENTRY KeBugcheckCallbackListHead; +LIST_ENTRY KeBugcheckReasonCallbackListHead; KSPIN_LOCK BugCheckCallbackLock; ULONG KeBugCheckActive, KeBugCheckOwner; LONG KeBugCheckOwnerRecursionCount; @@ -209,7 +209,7 @@ ULONG_PTR Checksum; /* First make sure that the list is Initialized... it might not be */ - ListHead = &BugcheckCallbackListHead; + ListHead = &KeBugcheckCallbackListHead; if ((ListHead->Flink) && (ListHead->Blink)) { /* Loop the list */ @@ -1033,7 +1033,7 @@ CallbackRecord->Component = Component; CallbackRecord->CallbackRoutine = CallbackRoutine; CallbackRecord->State = BufferInserted; - InsertTailList(&BugcheckCallbackListHead, &CallbackRecord->Entry); + InsertTailList(&KeBugcheckCallbackListHead, &CallbackRecord->Entry); Status = TRUE; } @@ -1067,7 +1067,7 @@ CallbackRecord->CallbackRoutine = CallbackRoutine; CallbackRecord->State = BufferInserted; CallbackRecord->Reason = Reason; - InsertTailList(&BugcheckReasonCallbackListHead, + InsertTailList(&KeBugcheckReasonCallbackListHead, &CallbackRecord->Entry); Status = TRUE; } Modified: branches/alex-kd-branch/reactos/ntoskrnl/ke/krnlinit.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/ke/krnlinit.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/ke/krnlinit.c Mon Feb 19 21:52:23 2007 @@ -62,8 +62,8 @@ ULONG i; /* Initialize Bugcheck Callback data */ - InitializeListHead(&BugcheckCallbackListHead); - InitializeListHead(&BugcheckReasonCallbackListHead); + InitializeListHead(&KeBugcheckCallbackListHead); + InitializeListHead(&KeBugcheckReasonCallbackListHead); KeInitializeSpinLock(&BugCheckCallbackLock); /* Initialize the Timer Expiration DPC */ Modified: branches/alex-kd-branch/reactos/ntoskrnl/ob/obinit.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/ob/obinit.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/ob/obinit.c Mon Feb 19 21:52:23 2007 @@ -198,7 +198,7 @@ ObjectTypeInitializer.GenericMapping = ObpTypeMapping; ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(OBJECT_TYPE); ObjectTypeInitializer.InvalidAttributes = OBJ_OPENLINK; - ObCreateObjectType(&Name, &ObjectTypeInitializer, NULL, &ObTypeObjectType); + ObCreateObjectType(&Name, &ObjectTypeInitializer, NULL, &ObpTypeObjectType); /* Create the Directory Type */ RtlInitUnicodeString(&Name, L"Directory"); @@ -247,7 +247,7 @@ 0, ObDirectoryType, KernelMode, - (PVOID*)&NameSpaceRoot, + (PVOID*)&ObpRootDirectoryObject, NULL); if (!NT_SUCCESS(Status)) return FALSE; @@ -289,7 +289,7 @@ ObpAcquireDirectoryLockExclusive(ObpTypeDirectoryObject, &Context); /* Loop the object types */ - ListHead = &ObTypeObjectType->TypeList; + ListHead = &ObpTypeObjectType->TypeList; NextEntry = ListHead->Flink; while (ListHead != NextEntry) { Modified: branches/alex-kd-branch/reactos/ntoskrnl/ob/oblife.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/ob/oblife.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/ob/oblife.c Mon Feb 19 21:52:23 2007 @@ -19,7 +19,7 @@ extern ULONG NtGlobalFlag; -POBJECT_TYPE ObTypeObjectType = NULL; +POBJECT_TYPE ObpTypeObjectType = NULL; KEVENT ObpDefaultObject; NPAGED_LOOKASIDE_LIST ObpNmLookasideList, ObpCiLookasideList; @@ -1074,7 +1074,7 @@ /* Allocate the Object */ Status = ObpAllocateObject(NULL, &ObjectName, - ObTypeObjectType, + ObpTypeObjectType, sizeof(OBJECT_TYPE), KernelMode, (POBJECT_HEADER*)&Header); @@ -1098,11 +1098,11 @@ LocalObjectType->HighWaterNumberOfHandles = 0; /* Check if this is the first Object Type */ - if (!ObTypeObjectType) + if (!ObpTypeObjectType) { /* It is, so set this as the type object */ - ObTypeObjectType = LocalObjectType; - Header->Type = ObTypeObjectType; + ObpTypeObjectType = LocalObjectType; + Header->Type = ObpTypeObjectType; /* Set the hard-coded key and object count */ LocalObjectType->TotalNumberOfObjects = 1; @@ -1195,11 +1195,11 @@ /* Get creator info and insert it into the type list */ CreatorInfo = OBJECT_HEADER_TO_CREATOR_INFO(Header); - if (CreatorInfo) InsertTailList(&ObTypeObjectType->TypeList, + if (CreatorInfo) InsertTailList(&ObpTypeObjectType->TypeList, &CreatorInfo->TypeList); /* Set the index and the entry into the object type array */ - LocalObjectType->Index = ObTypeObjectType->TotalNumberOfObjects; + LocalObjectType->Index = ObpTypeObjectType->TotalNumberOfObjects; if (LocalObjectType->Index < 32) { /* It fits, insert it */ Modified: branches/alex-kd-branch/reactos/ntoskrnl/ob/obname.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/ob/obname.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/ob/obname.c Mon Feb 19 21:52:23 2007 @@ -16,7 +16,7 @@ #include <debug.h> BOOLEAN ObpCaseInsensitive = TRUE; -POBJECT_DIRECTORY NameSpaceRoot; +POBJECT_DIRECTORY ObpRootDirectoryObject; POBJECT_DIRECTORY ObpTypeDirectoryObject; /* DOS Device Prefix \??\ and \?? */ @@ -407,7 +407,7 @@ { /* Reparsed to the root directory, so start over */ ObDereferenceObject(RootDirectory); - RootDirectory = NameSpaceRoot; + RootDirectory = ObpRootDirectoryObject; /* Don't use this anymore, since we're starting at root */ RootHandle = NULL; @@ -448,7 +448,7 @@ else { /* We did not get a Root Directory, so use the root */ - RootDirectory = NameSpaceRoot; + RootDirectory = ObpRootDirectoryObject; /* It must start with a path separator */ if (!(ObjectName->Length) || @@ -811,7 +811,7 @@ /* Start at Root */ ParentDirectory = NULL; - RootDirectory = NameSpaceRoot; + RootDirectory = ObpRootDirectoryObject; /* Check for reparse status */ if (Status == STATUS_REPARSE_OBJECT) @@ -838,7 +838,7 @@ goto ParseFromRoot; } } - else if (RootDirectory == NameSpaceRoot) + else if (RootDirectory == ObpRootDirectoryObject) { /* We got STATUS_REPARSE but are at the Root Directory */ Object = NULL; @@ -1025,7 +1025,7 @@ * enough right at the beginning, not work our way through * and find out at the end */ - if (Object == NameSpaceRoot) + if (Object == ObpRootDirectoryObject) { /* Size of the '\' string */ NameSize = sizeof(OBJ_NAME_PATH_SEPARATOR); @@ -1037,7 +1037,7 @@ NameSize = sizeof(OBJ_NAME_PATH_SEPARATOR) + LocalInfo->Name.Length; /* Loop inside the directory to get the top-most one (meaning root) */ - while ((ParentDirectory != NameSpaceRoot) && (ParentDirectory)) + while ((ParentDirectory != ObpRootDirectoryObject) && (ParentDirectory)) { /* Get the Name Information */ LocalInfo = OBJECT_HEADER_TO_NAME_INFO( @@ -1080,7 +1080,7 @@ *--ObjectName = UNICODE_NULL; /* Check if the object is actually the Root directory */ - if (Object == NameSpaceRoot) + if (Object == ObpRootDirectoryObject) { /* This is already the Root Directory, return "\\" */ *--ObjectName = OBJ_NAME_PATH_SEPARATOR; @@ -1101,7 +1101,7 @@ /* Now parse the Parent directories until we reach the top */ ParentDirectory = LocalInfo->Directory; - while ((ParentDirectory != NameSpaceRoot) && (ParentDirectory)) + while ((ParentDirectory != ObpRootDirectoryObject) && (ParentDirectory)) { /* Get the name information */ LocalInfo = OBJECT_HEADER_TO_NAME_INFO(
17 years, 8 months
1
0
0
0
[ekohl] 25844: Enable the user to set the size of captions, caption buttons, menu bars and croll bars.
by ekohl@svn.reactos.org
Author: ekohl Date: Mon Feb 19 19:12:38 2007 New Revision: 25844 URL:
http://svn.reactos.org/svn/reactos?rev=25844&view=rev
Log: Enable the user to set the size of captions, caption buttons, menu bars and croll bars. Modified: trunk/reactos/dll/cpl/desk/advappdlg.c trunk/reactos/dll/cpl/desk/preview.c Modified: trunk/reactos/dll/cpl/desk/advappdlg.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/advappdlg.c?r…
============================================================================== --- trunk/reactos/dll/cpl/desk/advappdlg.c (original) +++ trunk/reactos/dll/cpl/desk/advappdlg.c Mon Feb 19 19:12:38 2007 @@ -11,6 +11,7 @@ #include "desk.h" #include "appearance.h" +#include "preview.h" @@ -480,6 +481,35 @@ } break; + case IDC_ADVAPPEARANCE_SIZE_E: + if (g && HIWORD(wParam) == EN_CHANGE) + { + int i = (int)LOWORD(SendDlgItemMessage(hwndDlg, IDC_ADVAPPEARANCE_SIZE_UD, UDM_GETPOS,0,0L)); + + switch (g->CurrentElement) + { + case IDX_INACTIVE_CAPTION: + case IDX_ACTIVE_CAPTION: + case IDX_CAPTION_BUTTON: + SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETCYCAPTION, 0, i); + break; + + case IDX_MENU: + SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETCYMENU, 0, i); + break; + + case IDX_SCROLLBAR: + SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETCXSCROLLBAR, 0, i); + break; + + case IDX_INACTIVE_BORDER: + case IDX_ACTIVE_BORDER: + SendDlgItemMessage(hwndDlg, IDC_APPEARANCE_PREVIEW, PVM_SETCYSIZEFRAME, 0, i); + break; + } + } + break; + case IDC_ADVAPPEARANCE_COLOR1_B: GetColor(hwndDlg, g, 0); break; Modified: trunk/reactos/dll/cpl/desk/preview.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/preview.c?rev…
============================================================================== --- trunk/reactos/dll/cpl/desk/preview.c (original) +++ trunk/reactos/dll/cpl/desk/preview.c Mon Feb 19 19:12:38 2007 @@ -162,10 +162,10 @@ pPreviewData->clrWindowText = GetSysColor(COLOR_WINDOWTEXT); pPreviewData->clrButtonText = GetSysColor(COLOR_BTNTEXT); - pPreviewData->cxEdge = GetSystemMetrics(SM_CXEDGE); - pPreviewData->cyEdge = GetSystemMetrics(SM_CXEDGE); - - pPreviewData->cySizeFrame = GetSystemMetrics(SM_CYSIZEFRAME); + pPreviewData->cxEdge = GetSystemMetrics(SM_CXEDGE) - 2; + pPreviewData->cyEdge = GetSystemMetrics(SM_CXEDGE) - 2; + + pPreviewData->cySizeFrame = GetSystemMetrics(SM_CYSIZEFRAME) - 1; pPreviewData->cyCaption = GetSystemMetrics(SM_CYCAPTION); pPreviewData->cyMenu = GetSystemMetrics(SM_CYMENU); @@ -216,10 +216,10 @@ pPreviewData->rcInactiveFrame.bottom = pPreviewData->rcDesktop.bottom - 30; /* Calculate the inactive caption rectangle */ - pPreviewData->rcInactiveCaption.left = pPreviewData->rcInactiveFrame.left + pPreviewData->cxEdge + 1/*3*/ + 1; - pPreviewData->rcInactiveCaption.top = pPreviewData->rcInactiveFrame.top + pPreviewData->cyEdge + 1/*3*/ + 1; - pPreviewData->rcInactiveCaption.right = pPreviewData->rcInactiveFrame.right - pPreviewData->cxEdge - 1/*3*/ - 1; - pPreviewData->rcInactiveCaption.bottom = pPreviewData->rcInactiveFrame.top + pPreviewData->cyCaption + 1 + 2; + pPreviewData->rcInactiveCaption.left = pPreviewData->rcInactiveFrame.left + pPreviewData->cxEdge + pPreviewData->cySizeFrame + 1; + pPreviewData->rcInactiveCaption.top = pPreviewData->rcInactiveFrame.top + pPreviewData->cyEdge + pPreviewData->cySizeFrame + 1; + pPreviewData->rcInactiveCaption.right = pPreviewData->rcInactiveFrame.right - pPreviewData->cxEdge - pPreviewData->cySizeFrame - 1; + pPreviewData->rcInactiveCaption.bottom = pPreviewData->rcInactiveCaption.top + pPreviewData->cyCaption; /* Calculate the inactive caption buttons rectangle */ pPreviewData->rcInactiveCaptionButtons.left = pPreviewData->rcInactiveCaption.right - 2 - 2 - 3 * 16; @@ -228,16 +228,16 @@ pPreviewData->rcInactiveCaptionButtons.bottom = pPreviewData->rcInactiveCaption.bottom - 2; /* Calculate the active window rectangle */ - pPreviewData->rcActiveFrame.left = pPreviewData->rcInactiveFrame.left + 3 + 1; + pPreviewData->rcActiveFrame.left = pPreviewData->rcInactiveFrame.left + 3 + pPreviewData->cySizeFrame; pPreviewData->rcActiveFrame.top = pPreviewData->rcInactiveCaption.bottom + 1; pPreviewData->rcActiveFrame.right = pPreviewData->rcDesktop.right - 10; pPreviewData->rcActiveFrame.bottom = pPreviewData->rcDesktop.bottom - 25; /* Calculate the active caption rectangle */ - pPreviewData->rcActiveCaption.left = pPreviewData->rcActiveFrame.left + 3 + 1; - pPreviewData->rcActiveCaption.top = pPreviewData->rcActiveFrame.top + 3 + 1; - pPreviewData->rcActiveCaption.right = pPreviewData->rcActiveFrame.right - 3 - 1; - pPreviewData->rcActiveCaption.bottom = pPreviewData->rcActiveFrame.top + pPreviewData->cyCaption + 1 + 2; + pPreviewData->rcActiveCaption.left = pPreviewData->rcActiveFrame.left + pPreviewData->cxEdge + pPreviewData->cySizeFrame + 1; + pPreviewData->rcActiveCaption.top = pPreviewData->rcActiveFrame.top + pPreviewData->cxEdge + pPreviewData->cySizeFrame + 1; + pPreviewData->rcActiveCaption.right = pPreviewData->rcActiveFrame.right - pPreviewData->cxEdge - pPreviewData->cySizeFrame - 1; + pPreviewData->rcActiveCaption.bottom = pPreviewData->rcActiveCaption.top + pPreviewData->cyCaption; /* Calculate the active caption buttons rectangle */ pPreviewData->rcActiveCaptionButtons.left = pPreviewData->rcActiveCaption.right - 2 - 2 - 3 * 16; @@ -246,16 +246,16 @@ pPreviewData->rcActiveCaptionButtons.bottom = pPreviewData->rcActiveCaption.bottom - 2; /* Calculate the active menu bar rectangle */ - pPreviewData->rcActiveMenuBar.left = pPreviewData->rcActiveFrame.left + 3 + 1; + pPreviewData->rcActiveMenuBar.left = pPreviewData->rcActiveFrame.left + pPreviewData->cxEdge + pPreviewData->cySizeFrame + 1; pPreviewData->rcActiveMenuBar.top = pPreviewData->rcActiveCaption.bottom + 1; - pPreviewData->rcActiveMenuBar.right = pPreviewData->rcActiveFrame.right - 3 - 1; + pPreviewData->rcActiveMenuBar.right = pPreviewData->rcActiveFrame.right - pPreviewData->cxEdge - pPreviewData->cySizeFrame - 1; pPreviewData->rcActiveMenuBar.bottom = pPreviewData->rcActiveMenuBar.top + pPreviewData->cyMenu + 1; /* Calculate the active client rectangle */ - pPreviewData->rcActiveClient.left = pPreviewData->rcActiveFrame.left + 3 + 1; - pPreviewData->rcActiveClient.top = pPreviewData->rcActiveMenuBar.bottom; // + 1; - pPreviewData->rcActiveClient.right = pPreviewData->rcActiveFrame.right - 3 - 1; - pPreviewData->rcActiveClient.bottom = pPreviewData->rcActiveFrame.bottom - 3 - 1; + pPreviewData->rcActiveClient.left = pPreviewData->rcActiveFrame.left + pPreviewData->cxEdge + pPreviewData->cySizeFrame + 1; + pPreviewData->rcActiveClient.top = pPreviewData->rcActiveMenuBar.bottom; + pPreviewData->rcActiveClient.right = pPreviewData->rcActiveFrame.right - pPreviewData->cxEdge - pPreviewData->cySizeFrame - 1; + pPreviewData->rcActiveClient.bottom = pPreviewData->rcActiveFrame.bottom - pPreviewData->cyEdge - pPreviewData->cySizeFrame - 1; /* Calculate the active scroll rectangle */ pPreviewData->rcActiveScroll.left = pPreviewData->rcActiveClient.right - 2 - pPreviewData->cxScrollbar; @@ -340,10 +340,10 @@ NULL, pPreviewData->lpAct, DC_ACTIVE | DC_GRADIENT | DC_ICON | DC_TEXT); DrawCaptionButtons(hdc, &pPreviewData->rcActiveCaption, TRUE, pPreviewData->cyCaption - 2); - /* FIXME: Draw the menu bar */ + /* Draw the menu bar */ DrawMenuBarTemp(hwnd, hdc, &pPreviewData->rcActiveMenuBar, - pPreviewData->hMenu /*HMENU hMenu*/, - pPreviewData->hMessageFont /*HFONT hFont*/); + pPreviewData->hMenu, + pPreviewData->hMessageFont); /* Draw the client area */ CopyRect(&rc, &pPreviewData->rcActiveClient); @@ -578,7 +578,7 @@ wc.lpfnWndProc = PreviewWndProc; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL, IDC_ARROW); - wc.hbrBackground = (HBRUSH)NULL; //(COLOR_BTNFACE + 1); + wc.hbrBackground = (HBRUSH)NULL; wc.lpszClassName = szPreviewWndClass; return RegisterClassEx(&wc) != (ATOM)0;
17 years, 8 months
1
0
0
0
[ion] 25843: - We now tell WinDBG to load kernel symbols and WinDBG replies (!) with DbgKdGetVersionApi to find out who we are (he's in for a surprise ; )): - Implement KdpSetCommonState (except code to clear breakpoints). - Implement KdpSetContextState (for x86). - Implement KdpReportLoadSymbolsStateChange. - Implement skeleton of KdpSendWaitContinue, the main KD API Loop. - Add KCONTINUE_STATUS. - Redefine KdReceivePacket's return value to KDSTATUS and define possibile values. - Add DBGKD_ANY_
by ion@svn.reactos.org
Author: ion Date: Mon Feb 19 18:02:39 2007 New Revision: 25843 URL:
http://svn.reactos.org/svn/reactos?rev=25843&view=rev
Log: - We now tell WinDBG to load kernel symbols and WinDBG replies (!) with DbgKdGetVersionApi to find out who we are (he's in for a surprise ;)): - Implement KdpSetCommonState (except code to clear breakpoints). - Implement KdpSetContextState (for x86). - Implement KdpReportLoadSymbolsStateChange. - Implement skeleton of KdpSendWaitContinue, the main KD API Loop. - Add KCONTINUE_STATUS. - Redefine KdReceivePacket's return value to KDSTATUS and define possibile values. - Add DBGKD_ANY_CONTROL_SET and X86/IA64/AMD64 control sets. - Add DBGKD_MANIPULATE_STATE64 and all sub-structures (READ_MEMORY, WRITE_MEMORY, etc). - Fix definition of KdpSymbol. Modified: branches/alex-kd-branch/reactos/include/ndk/ketypes.h branches/alex-kd-branch/reactos/include/reactos/kddll.h branches/alex-kd-branch/reactos/include/reactos/windbgkd.h branches/alex-kd-branch/reactos/ntoskrnl/include/internal/kd.h branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdprint.c branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdtrap.c Modified: branches/alex-kd-branch/reactos/include/ndk/ketypes.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/include/…
============================================================================== --- branches/alex-kd-branch/reactos/include/ndk/ketypes.h (original) +++ branches/alex-kd-branch/reactos/include/ndk/ketypes.h Mon Feb 19 18:02:39 2007 @@ -298,6 +298,17 @@ } ADJUST_REASON; // +// Continue Status +// +typedef enum _KCONTINUE_STATUS +{ + ContinueError = 0, + ContinueSuccess, + ContinueProcessorReselected, + ContinueNextProcessor +} KCONTINUE_STATUS; + +// // Process States // typedef enum _KPROCESS_STATE Modified: branches/alex-kd-branch/reactos/include/reactos/kddll.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/include/…
============================================================================== --- branches/alex-kd-branch/reactos/include/reactos/kddll.h (original) +++ branches/alex-kd-branch/reactos/include/reactos/kddll.h Mon Feb 19 18:02:39 2007 @@ -1,5 +1,12 @@ #ifndef _KDDLL_ #define _KDDLL_ + +typedef enum _KDSTATUS +{ + KdPacketReceived = 0, + KdPacketTimedOut, + KdPacketNeedsResend +} KDSTATUS; NTSTATUS NTAPI @@ -13,7 +20,7 @@ IN PLOADER_PARAMETER_BLOCK LoaderBlock ); -ULONG +KDSTATUS NTAPI KdReceivePacket( IN ULONG PacketType, Modified: branches/alex-kd-branch/reactos/include/reactos/windbgkd.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/include/…
============================================================================== --- branches/alex-kd-branch/reactos/include/reactos/windbgkd.h (original) +++ branches/alex-kd-branch/reactos/include/reactos/windbgkd.h Mon Feb 19 18:02:39 2007 @@ -1,5 +1,10 @@ #ifndef _WINDBGKD_ #define _WINDBGKG_ + +// +// Dependencies +// +#include "wdbgexts.h" // // Packet Size and Control Stream Size @@ -136,6 +141,46 @@ } KD_CONTEXT, *PKD_CONTEXT; // +// Control Sets for Supported Architectures +// +#include <pshpack4.h> +typedef struct _X86_DBGKD_CONTROL_SET +{ + ULONG TraceFlag; + ULONG Dr7; + ULONG CurrentSymbolStart; + ULONG CurrentSymbolEnd; +} X86_DBGKD_CONTROL_SET, *PX86_DBGKD_CONTROL_SET; + +typedef struct _IA64_DBGKD_CONTROL_SET +{ + ULONG Continue; + ULONG64 CurrentSymbolStart; + ULONG64 CurrentSymbolEnd; +} IA64_DBGKD_CONTROL_SET, *PIA64_DBGKD_CONTROL_SET; + +typedef struct _AMD64_DBGKD_CONTROL_SET +{ + ULONG TraceFlag; + ULONG64 Dr7; + ULONG64 CurrentSymbolStart; + ULONG64 CurrentSymbolEnd; +} AMD64_DBGKD_CONTROL_SET, *PAMD64_DBGKD_CONTROL_SET; + +typedef struct _DBGKD_ANY_CONTROL_SET +{ + union + { + X86_DBGKD_CONTROL_SET X86ControlSet; + IA64_DBGKD_CONTROL_SET IA64ControlSet; + AMD64_DBGKD_CONTROL_SET Amd64ControlSet; + }; +} DBGKD_ANY_CONTROL_SET, *PDBGKD_ANY_CONTROL_SET; +#include <poppack.h> + +typedef X86_DBGKD_CONTROL_SET DBGKD_CONTROL_SET; + +// // DBGKM Structure for Exceptions // typedef struct _DBGKM_EXCEPTION64 @@ -226,4 +271,193 @@ CONTEXT Context; } DBGKD_WAIT_STATE_CHANGE64, *PDBGKD_WAIT_STATE_CHANGE64; +// +// DBGKD Manipulate Structures +// +typedef struct _DBGKD_READ_MEMORY64 +{ + ULONG64 TargetBaseAddress; + ULONG TransferCount; + ULONG ActualBytesRead; +} DBGKD_READ_MEMORY64, *PDBGKD_READ_MEMORY64; + +typedef struct _DBGKD_WRITE_MEMORY64 +{ + ULONG64 TargetBaseAddress; + ULONG TransferCount; + ULONG ActualBytesWritten; +} DBGKD_WRITE_MEMORY64, *PDBGKD_WRITE_MEMORY64; + +typedef struct _DBGKD_GET_CONTEXT +{ + ULONG Unused; +} DBGKD_GET_CONTEXT, *PDBGKD_GET_CONTEXT; + +typedef struct _DBGKD_SET_CONTEXT +{ + ULONG ContextFlags; +} DBGKD_SET_CONTEXT, *PDBGKD_SET_CONTEXT; + +typedef struct _DBGKD_WRITE_BREAKPOINT64 +{ + ULONG64 BreakPointAddress; + ULONG BreakPointHandle; +} DBGKD_WRITE_BREAKPOINT64, *PDBGKD_WRITE_BREAKPOINT64; + +typedef struct _DBGKD_RESTORE_BREAKPOINT +{ + ULONG BreakPointHandle; +} DBGKD_RESTORE_BREAKPOINT, *PDBGKD_RESTORE_BREAKPOINT; + +typedef struct _DBGKD_CONTINUE +{ + NTSTATUS ContinueStatus; +} DBGKD_CONTINUE, *PDBGKD_CONTINUE; + +#include <pshpack4.h> +typedef struct _DBGKD_CONTINUE2 +{ + NTSTATUS ContinueStatus; + union + { + DBGKD_CONTROL_SET ControlSet; + DBGKD_ANY_CONTROL_SET AnyControlSet; + }; +} DBGKD_CONTINUE2, *PDBGKD_CONTINUE2; +#include <poppack.h> + +typedef struct _DBGKD_READ_WRITE_IO64 +{ + ULONG64 IoAddress; + ULONG DataSize; + ULONG DataValue; +} DBGKD_READ_WRITE_IO64, *PDBGKD_READ_WRITE_IO64; + +typedef struct _DBGKD_READ_WRITE_IO_EXTENDED64 +{ + ULONG DataSize; + ULONG InterfaceType; + ULONG BusNumber; + ULONG AddressSpace; + ULONG64 IoAddress; + ULONG DataValue; +} DBGKD_READ_WRITE_IO_EXTENDED64, *PDBGKD_READ_WRITE_IO_EXTENDED64; + +typedef struct _DBGKD_READ_WRITE_MSR +{ + ULONG Msr; + ULONG DataValueLow; + ULONG DataValueHigh; +} DBGKD_READ_WRITE_MSR, *PDBGKD_READ_WRITE_MSR; + +typedef struct _DBGKD_QUERY_SPECIAL_CALLS +{ + ULONG NumberOfSpecialCalls; +} DBGKD_QUERY_SPECIAL_CALLS, *PDBGKD_QUERY_SPECIAL_CALLS; + +typedef struct _DBGKD_SET_SPECIAL_CALL64 +{ + ULONG64 SpecialCall; +} DBGKD_SET_SPECIAL_CALL64, *PDBGKD_SET_SPECIAL_CALL64; + +typedef struct _DBGKD_SET_INTERNAL_BREAKPOINT64 +{ + ULONG64 BreakpointAddress; + ULONG Flags; +} DBGKD_SET_INTERNAL_BREAKPOINT64, *PDBGKD_SET_INTERNAL_BREAKPOINT64; + +typedef struct _DBGKD_GET_INTERNAL_BREAKPOINT64 +{ + ULONG64 BreakpointAddress; + ULONG Flags; + ULONG Calls; + ULONG MaxCallsPerPeriod; + ULONG MinInstructions; + ULONG MaxInstructions; + ULONG TotalInstructions; +} DBGKD_GET_INTERNAL_BREAKPOINT64, *PDBGKD_GET_INTERNAL_BREAKPOINT64; + +typedef struct _DBGKD_BREAKPOINTEX +{ + ULONG BreakPointCount; + NTSTATUS ContinueStatus; +} DBGKD_BREAKPOINTEX, *PDBGKD_BREAKPOINTEX; + +typedef struct _DBGKD_SEARCH_MEMORY +{ + union + { + ULONG64 SearchAddress; + ULONG64 FoundAddress; + }; + ULONG64 SearchLength; + ULONG PatternLength; +} DBGKD_SEARCH_MEMORY, *PDBGKD_SEARCH_MEMORY; + +typedef struct _DBGKD_GET_SET_BUS_DATA +{ + ULONG BusDataType; + ULONG BusNumber; + ULONG SlotNumber; + ULONG Offset; + ULONG Length; +} DBGKD_GET_SET_BUS_DATA, *PDBGKD_GET_SET_BUS_DATA; + +typedef struct _DBGKD_FILL_MEMORY +{ + ULONG64 Address; + ULONG Length; + USHORT Flags; + USHORT PatternLength; +} DBGKD_FILL_MEMORY, *PDBGKD_FILL_MEMORY; + +typedef struct _DBGKD_QUERY_MEMORY +{ + ULONG64 Address; + ULONG64 Reserved; + ULONG AddressSpace; + ULONG Flags; +} DBGKD_QUERY_MEMORY, *PDBGKD_QUERY_MEMORY; + +typedef struct _DBGKD_SWITCH_PARTITION +{ + ULONG Partition; +} DBGKD_SWITCH_PARTITION; + +// +// DBGKD Structure for Manipulate +// +typedef struct _DBGKD_MANIPULATE_STATE64 +{ + ULONG ApiNumber; + USHORT ProcessorLevel; + USHORT Processor; + NTSTATUS ReturnStatus; + union + { + DBGKD_READ_MEMORY64 ReadMemory; + DBGKD_WRITE_MEMORY64 WriteMemory; + DBGKD_GET_CONTEXT GetContext; + DBGKD_SET_CONTEXT SetContext; + DBGKD_WRITE_BREAKPOINT64 WriteBreakPoint; + DBGKD_RESTORE_BREAKPOINT RestoreBreakPoint; + DBGKD_CONTINUE Continue; + DBGKD_CONTINUE2 Continue2; + DBGKD_READ_WRITE_IO64 ReadWriteIo; + DBGKD_READ_WRITE_IO_EXTENDED64 ReadWriteIoExtended; + DBGKD_QUERY_SPECIAL_CALLS QuerySpecialCalls; + DBGKD_SET_SPECIAL_CALL64 SetSpecialCall; + DBGKD_SET_INTERNAL_BREAKPOINT64 SetInternalBreakpoint; + DBGKD_GET_INTERNAL_BREAKPOINT64 GetInternalBreakpoint; + DBGKD_GET_VERSION64 GetVersion64; + DBGKD_BREAKPOINTEX BreakPointEx; + DBGKD_READ_WRITE_MSR ReadWriteMsr; + DBGKD_SEARCH_MEMORY SearchMemory; + DBGKD_GET_SET_BUS_DATA GetSetBusData; + DBGKD_FILL_MEMORY FillMemory; + DBGKD_QUERY_MEMORY QueryMemory; + DBGKD_SWITCH_PARTITION SwitchPartition; + } u; +} DBGKD_MANIPULATE_STATE64, *PDBGKD_MANIPULATE_STATE64; + #endif Modified: branches/alex-kd-branch/reactos/ntoskrnl/include/internal/kd.h URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/include/internal/kd.h (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/include/internal/kd.h Mon Feb 19 18:02:39 2007 @@ -120,8 +120,8 @@ ULONG NTAPI KdpSymbol( - IN LPSTR DllPath, - IN ULONG DllBase, + IN PSTRING DllPath, + IN PKD_SYMBOLS_INFO DllBase, IN BOOLEAN Unload, IN KPROCESSOR_MODE PreviousMode, IN PCONTEXT ContextRecord, @@ -133,6 +133,15 @@ NTAPI KdpPollBreakInWithPortLock( VOID +); + +BOOLEAN +NTAPI +KdpReportLoadSymbolsStateChange( + IN PSTRING PathName, + IN PKD_SYMBOLS_INFO SymbolInfo, + IN BOOLEAN Unload, + IN OUT PCONTEXT Context ); extern DBGKD_GET_VERSION64 KdVersionBlock; @@ -167,3 +176,4 @@ extern ULONG KdComponentTableSize; extern ULONG Kd_WIN2000_Mask; extern PULONG KdComponentTable[104]; +extern CHAR KdpMessageBuffer[4096], KdpPathBuffer[4096]; Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdapi.c Mon Feb 19 18:02:39 2007 @@ -13,6 +13,488 @@ #include <debug.h> /* PRIVATE FUNCTIONS *********************************************************/ + +VOID +NTAPI +KdpSetCommonState(IN ULONG NewState, + IN PCONTEXT Context, + IN PDBGKD_WAIT_STATE_CHANGE64 WaitStateChange) +{ + USHORT InstructionCount; + BOOLEAN HadBreakpoints; + + /* Setup common stuff available for all CPU architectures */ + WaitStateChange->NewState = NewState; + WaitStateChange->ProcessorLevel = KeProcessorLevel; + WaitStateChange->Processor = (USHORT)KeGetCurrentPrcb()->Number; + WaitStateChange->NumberProcessors = (ULONG)KeNumberProcessors; + WaitStateChange->Thread = (ULONG)KeGetCurrentThread(); + WaitStateChange->ProgramCounter = (ULONG64)Context->Eip; + + /* Zero out the Control Report */ + RtlZeroMemory(&WaitStateChange->ControlReport, + sizeof(DBGKD_CONTROL_REPORT)); + + /* Now copy the instruction stream and set the count */ + RtlCopyMemory(&WaitStateChange->ControlReport.InstructionStream[0], + (PVOID)(ULONG_PTR)WaitStateChange->ProgramCounter, + DBGKD_MAXSTREAM); + InstructionCount = DBGKD_MAXSTREAM; + WaitStateChange->ControlReport.InstructionCount = InstructionCount; + + /* Clear all the breakpoints in this region */ + HadBreakpoints = FALSE; +#if 0 + KdpDeleteBreakpointRange((PVOID)WaitStateChange->ProgramCounter, + (PVOID)(WaitStateChange->ProgramCounter + + WaitStateChange->ControlReport. + InstructionCount - 1)); +#endif + if (HadBreakpoints) + { + /* Copy the instruction stream again, this time without breakpoints */ + RtlCopyMemory(&WaitStateChange->ControlReport.InstructionStream[0], + (PVOID)(ULONG_PTR)WaitStateChange->ProgramCounter, + WaitStateChange->ControlReport.InstructionCount); + } +} + +VOID +NTAPI +KdpSetContextState(IN PDBGKD_WAIT_STATE_CHANGE64 WaitStateChange, + IN PCONTEXT Context) +{ + PKPRCB Prcb = KeGetCurrentPrcb(); + + /* Copy i386 specific debug registers */ + WaitStateChange->ControlReport.Dr6 = Prcb->ProcessorState.SpecialRegisters. + KernelDr6; + WaitStateChange->ControlReport.Dr7 = Prcb->ProcessorState.SpecialRegisters. + KernelDr7; + + /* Copy i386 specific segments */ + WaitStateChange->ControlReport.SegCs = (USHORT)Context->SegCs; + WaitStateChange->ControlReport.SegDs = (USHORT)Context->SegDs; + WaitStateChange->ControlReport.SegEs = (USHORT)Context->SegEs; + WaitStateChange->ControlReport.SegFs = (USHORT)Context->SegFs; + + /* Copy EFlags */ + WaitStateChange->ControlReport.EFlags = Context->EFlags; + + /* Set Report Flags */ + WaitStateChange->ControlReport.ReportFlags = REPORT_INCLUDES_SEGS; + if (WaitStateChange->ControlReport.SegCs == KGDT_R0_CODE) + { + WaitStateChange->ControlReport.ReportFlags = REPORT_INCLUDES_CS; + } +} + +BOOLEAN +NTAPI +KdpSendWaitContinue(IN ULONG PacketType, + IN PSTRING SendHeader, + IN PSTRING SendData OPTIONAL, + IN OUT PCONTEXT ContextRecord) +{ + STRING Data, Header; + DBGKD_MANIPULATE_STATE64 ManipulateState; + ULONG Length; + KDSTATUS RecvCode; + + /* Setup the Manipulate State structure */ + Header.MaximumLength = sizeof(DBGKD_MANIPULATE_STATE64); + Header.Buffer = (PCHAR)&ManipulateState; + Data.MaximumLength = sizeof(KdpMessageBuffer); + Data.Buffer = KdpMessageBuffer; + //KdpContextSent = FALSE; + +SendPacket: + /* Send the Packet */ + KdSendPacket(PacketType, SendHeader, SendData, &KdpContext); + + /* If the debugger isn't present anymore, just return success */ + if (KdDebuggerNotPresent) return TRUE; + + /* Main processing Loop */ + for (;;) + { + /* Receive Loop */ + do + { + /* Wait to get a reply to our packet */ + ManipulateState.ApiNumber = 0xFFFFFFFF; + RecvCode = KdReceivePacket(PACKET_TYPE_KD_STATE_MANIPULATE, + &Header, + &Data, + &Length, + &KdpContext); + + /* If we got a resend request, do it */ + if (RecvCode == KdPacketNeedsResend) goto SendPacket; + } while (RecvCode == KdPacketTimedOut); + + /* Now check what API we got */ + switch (ManipulateState.ApiNumber) + { + case DbgKdReadVirtualMemoryApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdReadVirtualMemoryApi); + while (TRUE); + break; + + case DbgKdWriteVirtualMemoryApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdWriteVirtualMemoryApi); + while (TRUE); + break; + + case DbgKdGetContextApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdGetContextApi); + while (TRUE); + break; + + case DbgKdSetContextApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdSetContextApi); + while (TRUE); + break; + + case DbgKdWriteBreakPointApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdWriteBreakPointApi); + while (TRUE); + break; + + case DbgKdRestoreBreakPointApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdRestoreBreakPointApi); + while (TRUE); + break; + + case DbgKdContinueApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdContinueApi); + while (TRUE); + break; + + case DbgKdReadControlSpaceApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdReadControlSpaceApi); + while (TRUE); + break; + + case DbgKdWriteControlSpaceApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdWriteControlSpaceApi); + while (TRUE); + break; + + case DbgKdReadIoSpaceApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdReadIoSpaceApi); + while (TRUE); + break; + + case DbgKdWriteIoSpaceApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdWriteIoSpaceApi); + while (TRUE); + break; + + case DbgKdRebootApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdRebootApi); + while (TRUE); + break; + + case DbgKdContinueApi2: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdContinueApi2); + while (TRUE); + break; + + case DbgKdReadPhysicalMemoryApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdReadPhysicalMemoryApi); + while (TRUE); + break; + + case DbgKdWritePhysicalMemoryApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdWritePhysicalMemoryApi); + while (TRUE); + break; + + case DbgKdQuerySpecialCallsApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdQuerySpecialCallsApi); + while (TRUE); + break; + + case DbgKdSetSpecialCallApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdSetSpecialCallApi); + while (TRUE); + break; + + case DbgKdClearSpecialCallsApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdClearSpecialCallsApi); + while (TRUE); + break; + + case DbgKdSetInternalBreakPointApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdSetInternalBreakPointApi); + while (TRUE); + break; + + case DbgKdGetInternalBreakPointApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdGetInternalBreakPointApi); + while (TRUE); + break; + + case DbgKdReadIoSpaceExtendedApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdReadIoSpaceExtendedApi); + while (TRUE); + break; + + case DbgKdWriteIoSpaceExtendedApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdWriteIoSpaceExtendedApi); + while (TRUE); + break; + + case DbgKdGetVersionApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdGetVersionApi); + while (TRUE); + break; + + case DbgKdWriteBreakPointExApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdWriteBreakPointExApi); + while (TRUE); + break; + + case DbgKdRestoreBreakPointExApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdRestoreBreakPointExApi); + while (TRUE); + break; + + case DbgKdCauseBugCheckApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdCauseBugCheckApi); + while (TRUE); + break; + + case DbgKdSwitchProcessor: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdSwitchProcessor); + while (TRUE); + break; + + case DbgKdPageInApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdPageInApi); + while (TRUE); + break; + + case DbgKdReadMachineSpecificRegister: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdReadMachineSpecificRegister); + while (TRUE); + break; + + case DbgKdWriteMachineSpecificRegister: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdWriteMachineSpecificRegister); + while (TRUE); + break; + + case OldVlm1: + + /* FIXME: TODO */ + Ke386SetCr2(OldVlm1); + while (TRUE); + break; + + case OldVlm2: + + /* FIXME: TODO */ + Ke386SetCr2(OldVlm2); + while (TRUE); + break; + + case DbgKdSearchMemoryApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdSearchMemoryApi); + while (TRUE); + break; + + case DbgKdGetBusDataApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdGetBusDataApi); + while (TRUE); + break; + + case DbgKdSetBusDataApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdSetBusDataApi); + while (TRUE); + break; + + case DbgKdCheckLowMemoryApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdCheckLowMemoryApi); + while (TRUE); + break; + + case DbgKdClearAllInternalBreakpointsApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdClearAllInternalBreakpointsApi); + while (TRUE); + break; + + case DbgKdFillMemoryApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdFillMemoryApi); + while (TRUE); + break; + + case DbgKdQueryMemoryApi: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdQueryMemoryApi); + while (TRUE); + break; + + case DbgKdSwitchPartition: + + /* FIXME: TODO */ + Ke386SetCr2(DbgKdSwitchPartition); + while (TRUE); + break; + + /* Unsupported Message */ + default: + + /* Setup an empty message, with failure */ + while (TRUE); + Data.Length = 0; + ManipulateState.ReturnStatus = STATUS_UNSUCCESSFUL; + + /* Send it */ + KdSendPacket(PACKET_TYPE_KD_STATE_MANIPULATE, + &Header, + &Data, + &KdpContext); + break; + } + } +} + +BOOLEAN +NTAPI +KdpReportLoadSymbolsStateChange(IN PSTRING PathName, + IN PKD_SYMBOLS_INFO SymbolInfo, + IN BOOLEAN Unload, + IN OUT PCONTEXT Context) +{ + PSTRING ExtraData; + STRING Data, Header; + DBGKD_WAIT_STATE_CHANGE64 WaitStateChange; + KCONTINUE_STATUS Status; + + /* Start wait loop */ + do + { + /* Build the architecture common parts of the message */ + KdpSetCommonState(DbgKdLoadSymbolsStateChange, + Context, + &WaitStateChange); + + /* Now finish creating the structure */ + KdpSetContextState(&WaitStateChange, Context); + + /* Fill out load data */ + WaitStateChange.u.LoadSymbols.UnloadSymbols = Unload; + WaitStateChange.u.LoadSymbols.BaseOfDll = (ULONG)SymbolInfo->BaseOfDll; + WaitStateChange.u.LoadSymbols.ProcessId = SymbolInfo->ProcessId; + WaitStateChange.u.LoadSymbols.CheckSum = SymbolInfo->CheckSum; + WaitStateChange.u.LoadSymbols.SizeOfImage = SymbolInfo->SizeOfImage; + + /* Check if we have a symbol name */ + if (PathName) + { + /* Setup the information */ + WaitStateChange.u.LoadSymbols.PathNameLength = PathName->Length; + Data.Buffer = KdpPathBuffer; + Data.Length = WaitStateChange.u.LoadSymbols.PathNameLength; + ExtraData = &Data; + } + else + { + /* No name */ + WaitStateChange.u.LoadSymbols.PathNameLength = 0; + ExtraData = NULL; + } + + /* Setup the header */ + Header.Length = sizeof(DBGKD_WAIT_STATE_CHANGE64); + Header.Buffer = (PCHAR)&WaitStateChange; + + /* Send the packet */ + Status = KdpSendWaitContinue(PACKET_TYPE_KD_STATE_CHANGE64, + &Header, + ExtraData, + Context); + } while(Status == ContinueProcessorReselected); + + /* Return status */ + while (TRUE); + return Status; +} VOID NTAPI Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kddata.c Mon Feb 19 18:02:39 2007 @@ -81,6 +81,12 @@ PKEVENT KdpTimeSlipEvent; KSPIN_LOCK KdpTimeSlipEventLock; LARGE_INTEGER KdTimerStop, KdTimerStart, KdTimerDifference; + +// +// Buffers +// +CHAR KdpMessageBuffer[4096]; +CHAR KdpPathBuffer[4096]; // // Debug Filter Masks Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdprint.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdprint.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdprint.c Mon Feb 19 18:02:39 2007 @@ -11,8 +11,6 @@ #include <ntoskrnl.h> #define NDEBUG #include <debug.h> - -CHAR KdpMessageBuffer[4096]; /* FUNCTIONS *****************************************************************/ @@ -68,8 +66,8 @@ ULONG NTAPI -KdpSymbol(IN LPSTR DllPath, - IN ULONG DllBase, +KdpSymbol(IN PSTRING DllPath, + IN PKD_SYMBOLS_INFO DllBase, IN BOOLEAN Unload, IN KPROCESSOR_MODE PreviousMode, IN PCONTEXT ContextRecord, @@ -93,15 +91,11 @@ sizeof(CONTEXT)); /* Report the new state */ -#if 0 Status = KdpReportLoadSymbolsStateChange(DllPath, DllBase, Unload, &Prcb->ProcessorState. ContextFrame); -#else - Status = FALSE; -#endif /* Now restore the processor state, manually again. */ RtlCopyMemory(ContextRecord, Modified: branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdtrap.c URL:
http://svn.reactos.org/svn/reactos/branches/alex-kd-branch/reactos/ntoskrnl…
============================================================================== --- branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdtrap.c (original) +++ branches/alex-kd-branch/reactos/ntoskrnl/kd64/kdtrap.c Mon Feb 19 18:02:39 2007 @@ -154,8 +154,8 @@ case BREAKPOINT_LOAD_SYMBOLS: /* Call the worker routine */ - KdpSymbol(UlongToPtr(ExceptionRecord->ExceptionInformation[1]), - (ULONG)ExceptionRecord->ExceptionInformation[2], + KdpSymbol((PVOID)ExceptionRecord->ExceptionInformation[1], + (PVOID)ExceptionRecord->ExceptionInformation[2], Unload, PreviousMode, ContextRecord,
17 years, 8 months
1
0
0
0
← Newer
1
...
6
7
8
9
10
11
12
...
27
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Results per page:
10
25
50
100
200