120 lines
2.9 KiB
C
120 lines
2.9 KiB
C
|
#ifndef DBG
|
||
|
#define NETCFG_TRY try {
|
||
|
#define NETCFG_CATCH(hr) ; } \
|
||
|
catch (bad_alloc a) \
|
||
|
{ \
|
||
|
hr = E_OUTOFMEMORY; \
|
||
|
} \
|
||
|
catch (HRESULT hrCaught) \
|
||
|
{ \
|
||
|
hr = hrCaught; \
|
||
|
} \
|
||
|
catch (...) \
|
||
|
{ \
|
||
|
hr = E_FAIL; \
|
||
|
}
|
||
|
|
||
|
#define NETCFG_CATCH_NOHR ; } \
|
||
|
catch (bad_alloc a) \
|
||
|
{ \
|
||
|
} \
|
||
|
catch (HRESULT hrCaught) \
|
||
|
{ \
|
||
|
}
|
||
|
|
||
|
#define NETCFG_CATCH_AND_RETHROW ; } \
|
||
|
catch (...) \
|
||
|
{ \
|
||
|
throw; \
|
||
|
}
|
||
|
|
||
|
#else // #ifndef DBG
|
||
|
|
||
|
#define NETCFG_TRY {
|
||
|
#define NETCFG_CATCH(hr) ; }
|
||
|
#define NETCFG_CATCH_NOHR ; }
|
||
|
#define NETCFG_CATCH_AND_RETHROW ; }
|
||
|
|
||
|
/*
|
||
|
#define NETCFG_CATCH(hr) ; } \
|
||
|
catch (bad_alloc a) \
|
||
|
{ \
|
||
|
hr = E_OUTOFMEMORY; \
|
||
|
TraceException(hr, "bad_alloc"); \
|
||
|
AssertSzWithDbgPromptIgnore(FALSE, "A bad_alloc exception occurred"); \
|
||
|
throw; \
|
||
|
} \
|
||
|
catch (HRESULT hrCaught) \
|
||
|
{ \
|
||
|
TraceException(hr, "HRESULT"); \
|
||
|
hr = hrCaught; \
|
||
|
CHAR szTemp[MAX_PATH]; \
|
||
|
sprintf(szTemp, "An HRESULT exception occurred (0x%08x)", hr); \
|
||
|
AssertSzWithDbgPromptIgnore(FALSE, szTemp); \
|
||
|
throw; \
|
||
|
} \
|
||
|
catch (...) \
|
||
|
{ \
|
||
|
TraceException(E_FAIL, "HRESULT"); \
|
||
|
hr = E_FAIL; \
|
||
|
AssertSzWithDbgPromptIgnore(FALSE, "A general exception occurred."); \
|
||
|
throw; \
|
||
|
}
|
||
|
|
||
|
#define NETCFG_CATCH_NOHR ; } \
|
||
|
catch (bad_alloc a) \
|
||
|
{ \
|
||
|
TraceException(E_OUTOFMEMORY, "bad_alloc"); \
|
||
|
AssertSzWithDbgPromptIgnore(FALSE, "A bad_alloc exception occurred"); \
|
||
|
throw; \
|
||
|
} \
|
||
|
catch (HRESULT hrCaught) \
|
||
|
{ \
|
||
|
TraceException(hrCaught, "HRESULT"); \
|
||
|
CHAR szTemp[MAX_PATH]; \
|
||
|
sprintf(szTemp, "An HRESULT exception occurred (0x%08x)", hrCaught); \
|
||
|
AssertSzWithDbgPromptIgnore(FALSE, szTemp); \
|
||
|
throw; \
|
||
|
}
|
||
|
|
||
|
#define NETCFG_CATCH_AND_RETHROW } \
|
||
|
catch (bad_alloc a) \
|
||
|
{ \
|
||
|
TraceException(E_OUTOFMEMORY, "bad_alloc"); \
|
||
|
AssertSzWithDbgPromptIgnore(FALSE, "A bad_alloc exception occurred"); \
|
||
|
throw; \
|
||
|
} \
|
||
|
catch (HRESULT hrCaught) \
|
||
|
{ \
|
||
|
TraceException(hrCaught, "HRESULT"); \
|
||
|
CHAR szTemp[MAX_PATH]; \
|
||
|
sprintf(szTemp, "An HRESULT exception occurred (0x%08x)", hrCaught); \
|
||
|
AssertSzWithDbgPromptIgnore(FALSE, szTemp); \
|
||
|
throw; \
|
||
|
} \
|
||
|
catch (...) \
|
||
|
{ \
|
||
|
TraceException(E_FAIL, "Unknown"); \
|
||
|
AssertSzWithDbgPromptIgnore(FALSE, "A bad_alloc exception occurred"); \
|
||
|
throw; \
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
#endif // ifndef DBG
|
||
|
|
||
|
class NC_SEH_Exception
|
||
|
{
|
||
|
private:
|
||
|
unsigned int m_uSECode;
|
||
|
public:
|
||
|
NC_SEH_Exception(unsigned int uSECode) : m_uSECode(uSECode) {}
|
||
|
NC_SEH_Exception() {}
|
||
|
~NC_SEH_Exception() {}
|
||
|
unsigned int getSeHNumber() { return m_uSECode; }
|
||
|
};
|
||
|
|
||
|
void __cdecl nc_trans_func( unsigned int uSECode, EXCEPTION_POINTERS* pExp );
|
||
|
void EnableCPPExceptionHandling();
|
||
|
void DisableCPPExceptionHandling();
|
||
|
|