Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> непонятки с SetThreadContext, Использование функции 
V
    Опции темы
BearFear
Дата 27.8.2012, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2012

Репутация: нет
Всего: нет



Приветствую всех! Собстно сабж  smile 

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

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

PM MAIL   Вверх
Dem_max
Дата 27.8.2012, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



зачем замораживать главный поток ?


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
BearFear
Дата 27.8.2012, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2012

Репутация: нет
Всего: нет



Цитата

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, 18:09
PM MAIL   Вверх
BearFear
Дата 27.8.2012, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2012

Репутация: нет
Всего: нет



Все, разобрался! Оле Olly!
http://msdn.microsoft.com/en-us/library/wi...2(v=vs.85).aspx
Теперь нет нужды фигачить тьму анхендлед фильтров и вложений для экцепшенов. Достаточно определить свой диапазон ошибов овер виндусовых и скидывать все что есть через рэйсЭкцепшын! Тем закрыта smile Спасибо всем кто уделил вниманиё!
PM MAIL   Вверх
Dem_max
Дата 27.8.2012, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



есть SEH, VEH


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
BearFear
Дата 27.8.2012, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2012

Репутация: нет
Всего: нет



Structured который smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0702 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.