Есть вот такой код:
EXCEPTION_DISPOSITION __cdecl _except_handler( struct _EXCEPTION_RECORD *ExceptionRecord, void * EstablisherFrame,
struct _CONTEXT *ContextRecord, void * DispatcherContext )
{
// Видимо, здесь нужно вычислить адрес __label1 и сделать ContextRecord->Eip = (DWORD) __label1 и вернуть ExceptionContinueExecution;
// Или нет..
}
int main(int argc, CHAR* argv[])
{
DWORD handler = (DWORD) _except_handler;
__asm
{
push handler
push FS:[0]
mov FS:[0],ESP
}
__asm {
xor eax, eax
call eax
}
printf("...");
__asm
{
mov eax,[ESP]
mov FS:[0], EAX
add esp, 8
}
__label1:
printf("OK");
Как правильно изменить данный код, чтобы исключение было обработано и команда printf("OK") выполнилась?