|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 11, 2004 03:55:13 Всем привет! Задача в том чтобы определить состояние процесса -- выполняется/приостановлен/завершен (в том числе принудительно). Среди функций API нужных не знаю, однако sysinternals process explorer способен определять и менять состояние процесса. Значит такое возможно. Подскажите плиз. Заранее благодарен. |
|
|
Дата: Июл 11, 2004 09:00:13 GetExitCodeProcess() |
|
|
Дата: Июл 11, 2004 16:38:58 GetExitCodeProcess вернёт STILL_ACTIVE или код завершения. меня интересует suspended процесс или нет |
|
|
Дата: Июл 11, 2004 18:19:53 · Поправил: Four-F Понятие suspended к процессу неприменимо. Выполняется/приостановлен применимо только к потоку. Под suspended ProcessExplorer, скорее всего, имеет в виду, что все потоки процесса приостановлены. Видимо он перебирает все потоки процесса и делает им SuspendThread/ResumeThread или NtSuspendThread/NtResumeThread. Состояние потоков процесса под NT+ можно узнать через ZwQuerySystemInformation, SystemProcessesAndThreadsInformation,... Она вернет кучку структур SYSTEM_PROCESSES и SYSTEM_THREADS. typedef struct _SYSTEM_THREADS {
. . .
THREAD_STATE State;
. . .
}SYSTEM_THREADS,*PSYSTEM_THREADS;
typedef enum {
StateInitialized,
StateReady,
StateRunning,
StateStandby,
StateTerminated,
StateWait,
StateTransition,
StateUnknown
}THREAD_STATE;
Хотя я не уверен, что по полю State можно однозначно сделать вывод о том, что поток именно suspended. |
|
|
Дата: Июл 12, 2004 13:00:18 Руссинович и Соломон, Внутреннее устройство винды, глава 6, читай внимательнее и найдёшь, там это написано/ |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.036 |