Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > непонятки с SetThreadContext


Автор: BearFear 27.8.2012, 17:51
Приветствую всех! Собстно сабж  smile 

Проблема возникла при следующем использовании:
1 в главном потоке сделал другой поток
2 в другом потоке заморозил главный
3 в другом потоке установил контекст
4 в другом потоке разморозил главный поток
5 в главном потоке ожидаю завершения другого потока

Беда в том что на 3 пункте программа тупо виснет. Буду благодарен за все подсказки. Если принципиально важно знать о задумке, в следующих сообщениях поясню, пока что не буду грузить.

Автор: Dem_max 27.8.2012, 17:56
зачем замораживать главный поток ?

Автор: BearFear 27.8.2012, 18:02
Цитата

Remarks
The function sets the thread context based on the value of the ContextFlags member of the context structure. The thread identified by the hThread parameter is typically being debugged, but the function can also operate even when the thread is not being debugged.
Do not try to set the context for a running thread; the results are unpredictable. Use the SuspendThread function to suspend the thread before calling SetThreadContext.


Как бы, я вот думаю, может данная фишка пригодна для использования в стороннем процессе? Хотя... не знаю, не разу не приходилось работать с функциями отладки. На данный момент просто хочется сделать такую штуковину, что бы в случае любой ошибки, будь то исключение std:: или просто логическая ошибка, была возможность извлечения отладочной инфы в лог, для последующего разбора ситуации. Потому что, отладчик вроди Olly, он не тормозится в каком либо ином случае кроме виндового исключения EH. И в виду этого, как то отловить логическую ошибку становится сложнее  smile 

Идеальным вариантом была бы возможность в случае логической ошибки спровоцировать вызов обработчика исключений windows, но я не смог найти каких то методов вызова такого, да и мне кажется что скорее всего нет такой возможности в принципе. Могу и ошибаться.

Автор: BearFear 27.8.2012, 19:33
Все, разобрался! Оле Olly!
http://msdn.microsoft.com/en-us/library/windows/desktop/ms680552(v=vs.85).aspx
Теперь нет нужды фигачить тьму анхендлед фильтров и вложений для экцепшенов. Достаточно определить свой диапазон ошибов овер виндусовых и скидывать все что есть через рэйсЭкцепшын! Тем закрыта smile Спасибо всем кто уделил вниманиё!

Автор: Dem_max 27.8.2012, 20:14
есть SEH, VEH

Автор: BearFear 27.8.2012, 21:20
Structured который smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)