WIN32堆栈恢复

#include <stdio.h>
#include <windows.h>

void die_recursion()
{
	static unsigned long s=-1;
	printf("递归%lu次\n",++s);
	die_recursion();
}

/*
Return:
异常被忽略,控制流将在异常出现的点之后,继续恢复运行。
EXCEPTION_CONTINUE_EXECUTION (-1) 

异常不被识别,也即当前的这个__except模块不是这个异常错误所对应的正确的异常处理模块。
系统将继续到上一层的try-except域中继续查找一个恰当的__except模块。
EXCEPTION_CONTINUE_SEARCH (0)  

异常已经被识别,也即当前的这个异常错误,系统已经找到了并能够确认,
这个__except模块就是正确的异常处理模块。控制流将进入到__except模块中。
EXCEPTION_EXECUTE_HANDLER (1) 
*/
int get_seh_info(int seh_code)
{
	if(seh_code == STATUS_STACK_OVERFLOW)
	{
		printf("文件:%s<发生堆栈上溢>\n",__FILE__);
		return EXCEPTION_EXECUTE_HANDLER ;
	}
	else
	{
		return EXCEPTION_CONTINUE_SEARCH;
	}
}

int main()
{
	int i=0;
	for(i = 0; i < 10 ;i++)//调用死递归10次
	{
		__try
		{
			die_recursion();//死递归
		}
		__except(get_seh_info( GetExceptionCode() ) )
		{
			if( _resetstkoflw() )
			{
				printf("恢复堆栈成功\n");
			}
			else
			{
				printf("恢复堆栈失败\n");
			}
		}
	}
	return 0;
}

WIN32堆栈恢复

时间: 2024-11-06 21:16:26

WIN32堆栈恢复的相关文章

Windows API 大全

常用Windows API1. API之网络函数WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConnection3 创建同一个网络资源的连接WNetCancelConnection 结束一个网络连接WNetCancelConnection2 结束一个网络连接WNetCloseEnum 结束一次枚举操作WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接WNetDis

linux API函数大全

还没有认真研读过,今晚在其他博客上找了比较久,今晚时间也不多了,等有空再细看 先复制先 获取当前执行路径:getcwd 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接  WNetAddConnection2 创建同一个网络资源的连接  WNetAddConnection3 创建同一个网络资源的连接  WNetCancelConnection 结束一个网络连接  WNetCancelConnection2 结束一个网络连接  WNetCloseEnum

_fastcall

_fastcall (2011-11-15 14:45:33) 转载▼ 61.187.54.* 1楼 __fastcall具体含义 在C语言中,假设我们有这样的一个函数: int function(int a,int b) 调用时只要用result = function(1,2)这样的方式就可以使用这个函数.但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个.什么样的参数,也没有硬件可以保存这些参数.也就是说,计算机不知道

windows客户端开发--windows api大全

网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接 WNetDisconnectDialo

C++ Builder 全部API函数列表

1 其他类似API网站: 新版WIN32API大全:http://www.3http.com/book/win32api/000.htm 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseE

C#常用 API函数大全

常用Windows API1. API之网络函数WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConnection3 创建同一个网络资源的连接WNetCancelConnection 结束一个网络连接WNetCancelConnection2 结束一个网络连接WNetCloseEnum 结束一次枚举操作WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接WNetDis

C结构体中数据的内存对齐问题

转自:http://www.cnblogs.com/qwcbeyond/archive/2012/05/08/2490897.html 32位机一般默认4字节对齐(32位机机器字长4字节),64位机一般默认8字节对齐(64位机机器字长8字节) 1.先看下面的例子:struct A{   char c1;   int i;   short s;   int j;}a; struct B{   int i;   int j;     short s;   char c1;}b; 结构A没有遵守字节对

API函数

1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接 WNetDisconne

WINDOWS API 函数(超长,值得学习)

一.隐藏和显示光标 函数: int ShowCursor ( BOOL bShow );  参数 bshow,为布尔型,bShow的值为False时隐藏光标,为True时显示光标:该函数的返回值为整型,为鼠标隐藏或显示的指数器:返回值大于等于0时显示光标,否则隐藏鼠标:如果安装了鼠标初值为0. 二.交换鼠标左右键和恢复 函数:BOOL SwapMouseButton ( BOOL fSwap );  参数 fSwap,为布尔型,TRUE表示交换鼠标左右键,FALSE表示恢复系统默认左右手习惯:返