Как получить состояние потока?
От: Gosha Украина  
Дата: 05.09.05 12:10
Оценка:
В смысле, можно ли узнать по хендлу "заморожен" ли поток (SuspendThread) или нет? Одно решение уже в голову пришло (сравнение двух последовательных GetThreadTimes через Sleep(1) ), но уверенности в нем нет...
Re: Как получить состояние потока?
От: djugasvilly  
Дата: 05.09.05 12:22
Оценка:
Здравствуйте, Gosha, Вы писали:

G>В смысле, можно ли узнать по хендлу "заморожен" ли поток (SuspendThread) или нет? Одно решение уже в голову пришло (сравнение двух последовательных GetThreadTimes через Sleep(1) ), но уверенности в нем нет...


Как вариант можно получить контекст потока функцией GetThreadContext
масдай на эту тему пишет:
You cannot get a valid context for a running thread. Use the SuspendThread function to suspend the thread before calling GetThreadContext.
Re: Как получить состояние потока?
От: TarasCo  
Дата: 05.09.05 12:33
Оценка: 4 (1)
Здравствуйте, Gosha, Вы писали:

G>В смысле, можно ли узнать по хендлу "заморожен" ли поток (SuspendThread) или нет? Одно решение уже в голову пришло (сравнение двух последовательных GetThreadTimes через Sleep(1) ), но уверенности в нем нет...


Можно так:
ZwQuerySystemInformation запрос типа SystemProcessesAndThreadsInformation
Да пребудет с тобою сила
Re[2]: Как получить состояние потока?
От: Gosha Украина  
Дата: 05.09.05 12:44
Оценка:
Здравствуйте, djugasvilly, Вы писали:

G>>В смысле, можно ли узнать по хендлу "заморожен" ли поток (SuspendThread) или нет? Одно решение уже в голову пришло (сравнение двух последовательных GetThreadTimes через Sleep(1) ), но уверенности в нем нет...


D>Как вариант можно получить контекст потока функцией GetThreadContext

D>масдай на эту тему пишет:
D>You cannot get a valid context for a running thread. Use the SuspendThread function to suspend the thread before calling GetThreadContext.

Сейчас проверил — возвращает не ноль даже для работающего потока. Саму структуру не проверял, но похоже что не то...
Re[2]: Как получить состояние потока?
От: Gosha Украина  
Дата: 05.09.05 12:48
Оценка:
Здравствуйте, TarasCo, Вы писали:

G>>В смысле, можно ли узнать по хендлу "заморожен" ли поток (SuspendThread) или нет? Одно решение уже в голову пришло (сравнение двух последовательных GetThreadTimes через Sleep(1) ), но уверенности в нем нет...


TC>Можно так:

TC>ZwQuerySystemInformation запрос типа SystemProcessesAndThreadsInformation

Недокументированная ведь...
Пошел искать описание
Re[3]: Как получить состояние потока?
От: djugasvilly  
Дата: 06.09.05 06:36
Оценка:
Здравствуйте, Gosha, Вы писали:

G>Здравствуйте, djugasvilly, Вы писали:


G>>>В смысле, можно ли узнать по хендлу "заморожен" ли поток (SuspendThread) или нет? Одно решение уже в голову пришло (сравнение двух последовательных GetThreadTimes через Sleep(1) ), но уверенности в нем нет...


D>>Как вариант можно получить контекст потока функцией GetThreadContext

D>>масдай на эту тему пишет:
D>>You cannot get a valid context for a running thread. Use the SuspendThread function to suspend the thread before calling GetThreadContext.

G>Сейчас проверил — возвращает не ноль даже для работающего потока. Саму структуру не проверял, но похоже что не то...


Мда... Затупил... ... прошу прощения.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.