Hi, all Вообщем у меня такая проблема - один и тот же код(в аттаче) ведет себя по разному в debug и release сборках... В кратце, я использую SEH что бы вмешать в работу нужной мне функции. В debug сборке в отлично работает. В release похоже что мой SEH вообще не вызываеться, хотя Olly показывает его в SEH chain. Обработчик устанвливаю стандартным способом т.е. Код (Text): __asm { push MapiInitHook push fs:[0] mov fs:[0], esp } MapiInitHook имеет следуюший прототип: Код (Text): EXCEPTION_DISPOSITION __cdecl MapiInitHook( struct _EXCEPTION_RECORD *ExceptionRecord, void * EstablisherFrame, struct _CONTEXT *ContextRecord, void * DispatcherContext ) Может я забыл о чем? Заранее спасибо.
ну это не совсем то что мне надо =)) я перехватываю не саму функцию, а вмешиваюсь в работу функции т.е. мне потом в нее нужно вернуть управление.
nobodyzzz http://wasm.ru/forum/viewtopic.php?pid=165633#p165633 Если в релиз версии будет присутствовать LoadConfig таблица установленые вручную обработчики глючат. Обнули LoadConfig RVA и LoadConfig Size и проверь.
PaCHER спасибо, познавательно. Но у меня что release что в debug LoadConfig RVA и LoadConfig Size = 0. Что в принципе логично т.к. я компилю без поддержки CRT.
кстати можно заставить вообще-то __try/__except вернуть управление обратно. следующим кодом: Код (Text): ULONG ExceptionFilter( EXCEPTION_POINTERS* Exception) { // Process exception ... return EXCEPTION_CONTINUE_EXECUTION; } ... __try { .... } __except( ExceptionFilter(GetExceptionInformation()) ) { // empty handler }