Upians 2017-06-05 16:20 采纳率: 0%
浏览 2005
已结题

SEH结构化异常之VEH继续处理程序的问题

WINDOW核心编程,讲SEH结构化处理时,有一个[继续处理程序]的技术

是向量化异常处理(VEH)的一种技术

在当指令代码抛出SEH异常时,如果没有找到__except异常过滤程序,就变成了[未处理异常],这时会调用SetUnhandledExceptionFilter函数设置的[全局异常过滤程序]

如果[全局异常过滤程序]返回EXCEPTION_CONTINUE_SEARCH,最后代表交给Window处理

WINDOW核心编程说[继续处理程序]技术在[全局异常过滤程序]之后,已安装的[继续处理异常函数]会依次调用

问题就来了,这段代码为什么没有调用已安装的[继续处理异常函数]?

  1. char* w = NULL;
    //全局异常处理函数
    LONG WINAPI Error(_EXCEPTION_POINTERS *ExceptionInfo)
    {
    printf("Error...\r\n");
    getchar();
    return EXCEPTION_CONTINUE_SEARCH;
    }
    //已安装的继续处理异常函数1
    LONG NTAPI Func1(PEXCEPTION_POINTERS ExceptionInfo)
    {
    printf("Func2\r\n");
    getchar();
    return EXCEPTION_CONTINUE_SEARCH;
    }
    //已安装的继续处理异常函数2
    LONG NTAPI Func2(PEXCEPTION_POINTERS ExceptionInfo)
    {

    printf("Func2\r\n");
    return EXCEPTION_CONTINUE_SEARCH;
    }
    //主函数
    int _tmain()
    {
    //更改为自己定义的全局异常处理函数
    SetUnhandledExceptionFilter(Error);
    //安装继续处理异常函数
    PVOID p1 = AddVectoredContinueHandler(0, Func1);
    PVOID p2 = AddVectoredContinueHandler(0, Func2);
    //SEH结构化异常
    __try
    {
    *w = 's';
    }//不处理,交给全局函数处理
    __except(EXCEPTION_CONTINUE_SEARCH)
    {
    printf("c/c++\r\n");
    }
    getchar();
    return 0;
    }

  • 写回答

1条回答 默认 最新

  • Upians 2017-06-07 18:02
    关注

    已解决,换了一台电脑再测试代码就好了,不知道啥情况

    评论

报告相同问题?

悬赏问题

  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条