appstub.win32.c 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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(wchar_t * buf);
  36. void __bb_brl_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_brl_appstub_appstub();
  43. return 0;
  44. }
  45. wchar_t bbLibFile[MAX_PATH];
  46. BOOL WINAPI DllMain( HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved ){
  47. if( fdwReason!=DLL_PROCESS_ATTACH ) return 1;
  48. GetModuleFileNameW( hinstDLL,bbLibFile,MAX_PATH );
  49. return 1;
  50. }
  51. void bbLibInit() {
  52. bbLibStartup(bbLibFile);
  53. __bb_brl_appstub_appstub();
  54. }