http://bugs.winehq.org/show_bug.cgi?id=30572
Bug #: 30572 Summary: Add support for vectored continue handlers (AddVectoredContinueHandler, RemoveVectoredContinueHandler) Product: Wine Version: 1.5.3 Platform: x86 OS/Version: Linux Status: NEW Severity: enhancement Priority: P2 Component: ntdll AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net Classification: Unclassified
Hello,
an improvement, might come handy in future. Newer .NET runtimes (3.x/4.x) and certain applications make use of vectored continue handlers for better error reporting/diagnosis.
Currently there is no harm if the export is not found in kernel32 (error reporting using event api):
--- snip --- 003b:Call KERNEL32.GetModuleHandleW(79203ef8 L"kernel32.dll") ret=792a7116 003b:Ret KERNEL32.GetModuleHandleW() retval=7b810000 ret=792a7116 003b:Call KERNEL32.GetProcAddress(7b810000,792a7210 "AddVectoredExceptionHandler") ret=792a712d 003b:Ret KERNEL32.GetProcAddress() retval=7bc21e3c ret=792a712d 003b:Call KERNEL32.GetProcAddress(7b810000,792a71f0 "RemoveVectoredExceptionHandler") ret=792a713a 003b:Ret KERNEL32.GetProcAddress() retval=7bc23534 ret=792a713a 003b:Call KERNEL32.GetProcAddress(7b810000,792a71d4 "AddVectoredContinueHandler") ret=792a7147 003b:Ret KERNEL32.GetProcAddress() retval=00000000 ret=792a7147 003b:Call KERNEL32.GetProcAddress(7b810000,792a71b4 "RemoveVectoredContinueHandler") ret=792a7154 003b:Ret KERNEL32.GetProcAddress() retval=00000000 ret=792a7154 003b:Call ntdll.RtlAddVectoredExceptionHandler(00000001,791f5a7c) ret=792a7182 003b:Ret ntdll.RtlAddVectoredExceptionHandler() retval=001586a0 ret=792a7182 003b:Call KERNEL32.GetModuleHandleW(792083bc L"mscoree.dll") ret=792a7064 003b:Ret KERNEL32.GetModuleHandleW() retval=79000000 ret=792a7064 003b:Call KERNEL32.GetProcAddress(79000000,00000018) ret=792a7086 003b:Ret KERNEL32.GetProcAddress() retval=79008017 ret=792a7086 003b:Call KERNEL32.GetProcAddress(603b0000,00000018) ret=79008056 003b:Ret KERNEL32.GetProcAddress() retval=603b4470 ret=79008056 003b:Call KERNEL32.SetUnhandledExceptionFilter(603e468a) ret=603b4791 003b:Ret KERNEL32.SetUnhandledExceptionFilter() retval=00404395 ret=603b4791 ... --- snip ---
MSDN:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms679273%28v=vs.85%2... (AddVectoredContinueHandler)
http://msdn.microsoft.com/en-us/library/windows/desktop/ms680567%28v=vs.85%2... (RemoveVectoredContinueHandler)
--- Some more information how it works:
Extract from "Chapter 25 - Unhandled Exceptions, Vectored Exception Handling, and C++ Exceptions" Windows Via C/C++ by Jeffrey Richter and Christophe Nasarre Microsoft Press 2008
http://vmg.pp.ua/books/%D0%9A%D0%BE%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D1%8...
MSDN blog: http://blogs.msdn.com/b/zhanli/archive/2010/06/25/c-tips-addvectoredexceptio...
Regards