Re[3]: Потоки и csrss
От: ononim  
Дата: 07.01.10 11:57
Оценка:
O>>В csrss когда то была оконная подсистема, потому csrss предоставлял подсистемам полный environment для контроля процессов и потоков.
O>>Потом оконную подсистему перенесли в ядро и в csrss остались по сути мелочи — консольные окна, определенный функционал касающийся .ini файлов, ну и в ХР+ туда засунули парсинг манифестов.

G>Да, насколько я понимаю, в csrss раньше было то, что сейчас находится в win32k.sys, то есть функционал, который экспортируется user32.dll и gdi32.dll — окна, сообщения и отрисовка.

G>Однако ничегошеньки конкретного не говорится в источниках про роль csrss в упрвлении потоками, тем не менее на этот квази-процесс везде ссылаются как на управляющий потоками.
Нууу.. подсистемам в т.ч. оконной надо знать когда потоки стартуют и дохнут — для того чтобы например разрушать окна.

G>Оно для программирования под Win32 не то чтобы надо, просто самому интересен путь взаимодействия компонентов. Опять же для чего создается некая структура описывающая процесс ?

Ну блин. csrss ведет свой список процессов и потоков чтобы точно знать в каждый момент времени кто есть кто. Ведет он его в виде неких структур-описателей, всего-то. Рассматривайте csrss как хост-процес некоего экзоядра.

G>Для чего оповещается подсистема из environment-а ? Собственно у меня почему возник вопрос — я привык, разрабатывая приложение, понимать суть происходящего. В этом смысле в

G>UNIX-ах проблем с вышеуказанным нет. В Windows-же непонятно. Например, если я делую fork, и в родчиненном процессе что-то происходит я могу подождать его вызовом wait/waitpid.
G>Что делать в Win32 не совсем понятно — если CreateProcess возвращает управление тогда, когда создался и инициализировался процесс, но не создался первичный поток и не загрузились dlls,
И в винде вы можете ждать хэндл процесса. Причем тут длл?


G>то как я могу отследить статус созданного процесса , поскольку он может вылететь еще на этапе инициализации или даже загрузки dlls ? В EPROCESS есть такое понятие LCP порт исключений,

G>как-то могу я эти исключения перехватывать.. в общем пока что ничего непонятно
Ой блин горе от ума. WaitForSingleObject(pi.hProcess, timeout)
Как много веселых ребят, и все делают велосипед...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.