?? nmifault.c
字號:
/****************************************************************************** * * Copyright (c) 2003 Gerhard W. Gruber * * PROJECT: pICE * $Source: /cvsroot/pice/pice/module/nmifault.c,v $ * $Revision: 1.3 $ * $Date: 2004/02/17 23:07:36 $ * $Author: lightweave $ * $Name: $ * * $Log: nmifault.c,v $ * Revision 1.3 2004/02/17 23:07:36 lightweave * * Improved the DEBUG facillity and replaced the configuration handler with a * new code which now can read MS Windows INI style files. See CHANGES.txt for * more details. * Also added a macro which prevents compiling for kernels before 2.4.19. * * Revision 1.2 2003/06/18 22:00:22 lightweave * DEBUG and DEBUG_SERIAL added * * *****************************************************************************/static char *ident = "$Header: /cvsroot/pice/pice/module/nmifault.c,v 1.3 2004/02/17 23:07:36 lightweave Exp $";/*++Copyright (c) 1998-2001 Klaus P. GerlicherModule Name: nmifault.cAbstract: handle NMIs on x86Environment: Kernel mode onlyAuthor: Klaus P. GerlicherRevision History: 06-Mar-2001: createdCopyright notice: This file may be distributed under the terms of the GNU Public License.--*/////////////////////////////////////////////////////// INCLUDES////#include "remods.h"#include "precomp.h"////////////////////////////////////////////////////// DEFINES////#define NMI_FAULT_VECTOR (0x02)////////////////////////////////////////////////////// GLOBALS////ULONG OldNmiFaultHandler = 0;static char tempNmi[1024];////////////////////////////////////////////////////// FUNCTIONS//////************************************************************************* // HandleNmiFault() // //************************************************************************* void HandleNmiFault(EXCEPTION_FRAME* pFrame){ LPSTR pSymbolName;#ifdef ACTIVATE_SYMBOL_LOOKUP if( FindSymbolByAddress(&pSymbolName,GetLinearAddress(pFrame->cs,pFrame->eip)) ) PICE_sprintf(tempNmi,"pICE: Breakpoint due to NMI at %.4X:%.8X (%s)\n",pFrame->cs,pFrame->eip,pSymbolName); else#endif // ACTIVATE_SYMBOL_LOOKUP PICE_sprintf(tempNmi,"pICE: Breakpoint due to NMI at %.4X:%.8X\n",pFrame->cs,pFrame->eip); Print(OUTPUT_WINDOW,tempNmi); }//************************************************************************* // InstallNmiFaultHook() // //************************************************************************* void InstallNmiFaultHook(void){#ifdef ACTIVATE_NMIFAULT_HOOK ENTER_FUNC(); if(!OldNmiFaultHandler) { HookInterruptVector(NMI_FAULT_VECTOR,(PVOID)&DebuggerNmiFault,(PVOID)&OldNmiFaultHandler); } LEAVE_FUNC();#endif // ACTIVATE_NMIFAULT_HOOK}//************************************************************************* // DeInstallNmiFaultHook() // //************************************************************************* void DeInstallNmiFaultHook(void){#ifdef ACTIVATE_NMIFAULT_HOOK ENTER_FUNC(); if(OldNmiFaultHandler) { HookInterruptVector(NMI_FAULT_VECTOR,(PVOID)OldNmiFaultHandler,NULL); } LEAVE_FUNC();#endif // ACTIVATE_NMIFAULT_HOOK}// EOF
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -