Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

60 lines
1.3 KiB

/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
SxsExceptionHandling.cpp
Abstract:
Author:
Jay Krell (a-JayK) October 2000
Revision History:
--*/
#include "stdinc.h"
#include <stdio.h>
INT
SxspExceptionFilter(
PEXCEPTION_POINTERS ExceptionPointers,
PCSTR Function
)
{
// add handling for unhandled status in RtlUnhandledExceptionFilter
switch ( ExceptionPointers->ExceptionRecord->ExceptionCode )
{
case STATUS_NO_MEMORY:
case STATUS_INSUFFICIENT_RESOURCES:
return EXCEPTION_EXECUTE_HANDLER;
default:
break;
}
#if defined(FUSION_WIN)
INT i = ::FusionpRtlUnhandledExceptionFilter(ExceptionPointers);
if (i == EXCEPTION_CONTINUE_SEARCH)
{
i = EXCEPTION_EXECUTE_HANDLER;
}
return i;
#else
char buf[64];
buf[RTL_NUMBER_OF(buf) - 1] = 0;
::_snprintf(buf, RTL_NUMBER_OF(buf) - 1, "** Unhandled exception 0x%x\n", ExceptionPointers->ExceptionRecord->ExceptionCode);
::OutputDebugStringA(buf);
#if DBG
::_snprintf(buf, RTL_NUMBER_OF(buf) - 1, "** .exr %p\n", ExceptionPointers->ExceptionRecord);
::OutputDebugStringA(buf);
::_snprintf(buf, RTL_NUMBER_OF(buf) - 1, "** .cxr %p\n", ExceptionPointers->ContextRecord);
::OutputDebugStringA(buf);
::DebugBreak();
#endif
return EXCEPTION_EXECUTE_HANDLER;
#endif
}