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)