我正在考虑修改我们必须使用新的 C++11 error_code/error_condition/exception mechanisim的 MS 结构化异常到异常映射代码。
我的理解是,一般理念是您应该首先尝试将错误代码映射到 std::error_condition 代码,否则,请制作自己的自定义 error_condition 代码。
我看到的问题是std::errc非常适合处理 POSIX 错误。如果我从具有与典型操作系统调用完全不同的错误范围的源获取代码,则它的映射不正确。
例如,让我们以Microsoft 的 SEH 代码为例。这些来自操作系统,因此理论上它应该映射以及 POSIX 之外的任何内容。但它肯定似乎根本无法很好地映射:
EXCEPTION_ACCESS_VIOLATION = permission_denied
EXCEPTION_ARRAY_BOUNDS_EXCEEDED = argument_out_of_domain perhaps?
EXCEPTION_BREAKPOINT = ?
EXCEPTION_DATATYPE_MISALIGNMENT = ?
EXCEPTION_FLT_DENORMAL_OPERAND = ?
EXCEPTION_FLT_DIVIDE_BY_ZERO = ?
EXCEPTION_FLT_INEXACT_RESULT = ?
EXCEPTION_FLT_INVALID_OPERATION = ?
EXCEPTION_FLT_OVERFLOW = ?
EXCEPTION_FLT_STACK_CHECK = ?
EXCEPTION_FLT_UNDERFLOW = ?
EXCEPTION_GUARD_PAGE = ?
EXCEPTION_ILLEGAL_INSTRUCTION = ?
EXCEPTION_IN_PAGE_ERROR = ?
EXCEPTION_INT_DIVIDE_BY_ZERO = ?
EXCEPTION_INT_OVERFLOW = value_too_large perhaps, but then what do I use for _STACK_OVERFLOW?
EXCEPTION_INVALID_DISPOSITION = ?
EXCEPTION_INVALID_HANDLE = ?
EXCEPTION_NONCONTINUABLE_EXCEPTION = ?
EXCEPTION_PRIV_INSTRUCTION = ?
EXCEPTION_SINGLE_STEP = ?
EXCEPTION_STACK_OVERFLOW = value_too_large perhaps, but then what do I use for _INT_OVERFLOW?
那么攻击这个的最好方法是什么?