appstub.win32.c 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #include <brl.mod/blitz.mod/blitz.h>
  2. #include <windows.h>
  3. //Enable exception debugging
  4. #define BB_DEBUG_EXCEPTIONS
  5. #ifdef BB_DEBUG_EXCEPTIONS
  6. static LONG WINAPI unhandledExceptionFilter( EXCEPTION_POINTERS *xinfo ){
  7. const char *p="EXCEPTION_UNKNOWN";
  8. switch( xinfo->ExceptionRecord->ExceptionCode ){
  9. case EXCEPTION_ACCESS_VIOLATION:p="EXCEPTION_ACCESS_VIOLATION";break;
  10. case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:p="EXCEPTION_ARRAY_BOUNDS_EXCEEDED";break;
  11. case EXCEPTION_BREAKPOINT:p="EXCEPTION_BREAKPOINT";break;
  12. case EXCEPTION_DATATYPE_MISALIGNMENT:p="EXCEPTION_DATATYPE_MISALIGNMENT";break;
  13. case EXCEPTION_FLT_DENORMAL_OPERAND:p="EXCEPTION_FLT_DENORMAL_OPERAND";break;
  14. case EXCEPTION_FLT_DIVIDE_BY_ZERO:p="EXCEPTION_FLT_DIVIDE_BY_ZERO";break;
  15. case EXCEPTION_FLT_INEXACT_RESULT:p="EXCEPTION_FLT_INEXACT_RESULT";break;
  16. case EXCEPTION_FLT_INVALID_OPERATION:p="EXCEPTION_FLT_INVALID_OPERATION";break;
  17. case EXCEPTION_FLT_OVERFLOW:p="EXCEPTION_FLT_OVERFLOW";break;
  18. case EXCEPTION_FLT_STACK_CHECK:p="EXCEPTION_FLT_STACK_CHECK";break;
  19. case EXCEPTION_FLT_UNDERFLOW:p="EXCEPTION_FLT_UNDERFLOW";break;
  20. case EXCEPTION_ILLEGAL_INSTRUCTION:p="EXCEPTION_ILLEGAL_INSTRUCTION";break;
  21. case EXCEPTION_IN_PAGE_ERROR:p="EXCEPTION_IN_PAGE_ERROR";break;
  22. case EXCEPTION_INT_DIVIDE_BY_ZERO:p="EXCEPTION_INT_DIVIDE_BY_ZERO";break;
  23. case EXCEPTION_INT_OVERFLOW:p="EXCEPTION_INT_OVERFLOW";break;
  24. case EXCEPTION_INVALID_DISPOSITION:p="EXCEPTION_INVALID_DISPOSITION";break;
  25. case EXCEPTION_NONCONTINUABLE_EXCEPTION:p="EXCEPTION_NONCONTINUABLE_EXCEPTION";break;
  26. case EXCEPTION_PRIV_INSTRUCTION:p="EXCEPTION_PRIV_INSTRUCTION";break;
  27. case EXCEPTION_SINGLE_STEP:p="EXCEPTION_SINGLE_STEP";break;
  28. case EXCEPTION_STACK_OVERFLOW:p="EXCEPTION_STACK_OVERFLOW";break;
  29. }
  30. MessageBoxA( GetActiveWindow(),p,"Windows exception",MB_OK );
  31. bbOnDebugStop();
  32. exit( 0 );
  33. }
  34. #endif
  35. void bbLibStartup();
  36. void __bb_appstub_appstub();
  37. int main( int argc,char *argv[] ){
  38. #ifdef BB_DEBUG_EXCEPTIONS
  39. SetUnhandledExceptionFilter( unhandledExceptionFilter );
  40. #endif
  41. bbStartup( argc,argv,0,0 );
  42. __bb_appstub_appstub();
  43. return 0;
  44. }
  45. BOOL WINAPI DllMain( HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved ){
  46. if( fdwReason!=DLL_PROCESS_ATTACH ) return 1;
  47. bbLibStartup();
  48. __bb_appstub_appstub();
  49. return 1;
  50. }