不算新的东西,也都不小了,
VEH的结构处理,平行于SEH,但是略有区别,
相关函数有四个
PVOID WINAPI AddVectoredExceptionHandler(
_In_ ULONG FirstHandler,
_In_ PVECTORED_EXCEPTION_HANDLER VectoredHandler
);
ULONG WINAPI RemoveVectoredExceptionHandler(
_In_ PVOID Handler
);
PVOID WINAPI AddVectoredContinueHandler(
_In_ ULONG FirstHandler,
_In_ PVECTORED_EXCEPTION_HANDLER VectoredHandler
);
ULONG WINAPI RemoveVectoredContinueHandler(
_In_ PVOID Handler
);
第一个函数
PVOID WINAPI AddVectoredExceptionHandler(
_In_ ULONG FirstHandler,
_In_ PVECTORED_EXCEPTION_HANDLER VectoredHandler
);
用来向VEH链注册一个异常处理函数,
参数1的意思是,是否插入到VEH链首部,
如果参数1为非0,则此注册的函数会在出现异常之后优先被触发(仅仅是优先,是否First还要看是否有其他人也注册了函数)
如果参数1为0,则此注册寒暑会在出现异常之后滞后被触发(理由同上)
参数2是一个要注册的异常处理回调函数
第二个函数
ULONG WINAPI RemoveVectoredExceptionHandler(
_In_ PVOID Handler
);
从VEH链移除一个异常处理函数
参数是用前一个函数注册之后返回的指针
第三个函数
PVOID WINAPI AddVectoredContinueHandler(
_In_ ULONG FirstHandler,
_In_ PVECTORED_EXCEPTION_HANDLER VectoredHandler
);
与第一个函数类似,但有细微区别
第四个函数
ULONG WINAPI RemoveVectoredContinueHandler(
_In_ PVOID Handler
);
与第二个函数类似,但有细微区别
四个函数,
第一个函数和第二个函数可以分为一组,
第三个函数和第四个函数可以分为一组,
两组函数有细微区别,
区别就是:
第一组函数注册、移除的VEH异常处理回调函数,会在SEH链里面的异常处理函数执行之前执行
第二组函数注册、移除的VEH异常处理回调函数,会在SEH链里面的异常处理函数执后执行
对于VEH的使用,微软给了一段DEMO
https://msdn.microsoft.com/en-us/library/ms681411(v=vs.85).aspx
手机扫一扫
移动阅读更方便
你可能感兴趣的文章