mirror of https://github.com/tongzx/nt5src
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.
119 lines
2.9 KiB
119 lines
2.9 KiB
#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();
|
|
|