I want to inject a DLL into a process. Once this DLL is in there, it should catch & properly handle all access violation exceptions which occur in the process. Is there any way to accomplish this?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
How about SetUnhandledExceptionFilter( function )?
function's prototype is:
LONG __stdcall ExceptionHandler(EXCEPTION_POINTERS *ExceptionInfo);
I've used this function to create crash dumps, etc.
回答2:
You can use Structured Exception Handling (SEH) to catch such exceptions. Specifically, this Windows function seems to be what you want to do.
回答3:
To complete the collection, you can also use AddVectoredExceptionHandler.
回答4:
Pre XP, you cannot catch all exceptions. XP or later, you should use AddVectoredExceptionHandler(1, handler)
, although you are not guaranteed that you will always be the first vectored exception handler.