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
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)