Здравствуйте, ononim, Вы писали:
G>>Заранее спасибо за ответ.
O>В csrss когда то была оконная подсистема, потому csrss предоставлял подсистемам полный environment для контроля процессов и потоков.
O>Потом оконную подсистему перенесли в ядро и в csrss остались по сути мелочи — консольные окна, определенный функционал касающийся .ini файлов, ну и в ХР+ туда засунули парсинг манифестов.
Да, насколько я понимаю, в csrss раньше было то, что сейчас находится в win32k.sys, то есть функционал, который экспортируется user32.dll и gdi32.dll — окна, сообщения и отрисовка.
Однако ничегошеньки конкретного не говорится в источниках про роль csrss в упрвлении потоками, тем не менее на этот квази-процесс везде ссылаются как на управляющий потоками.
Оно для программирования под Win32 не то чтобы надо, просто самому интересен путь взаимодействия компонентов. Опять же для чего создается некая структура описывающая процесс ?
Для чего оповещается подсистема из environment-а ? Собственно у меня почему возник вопрос — я привык, разрабатывая приложение, понимать суть происходящего. В этом смысле в
UNIX-ах проблем с вышеуказанным нет. В Windows-же непонятно. Например, если я делую fork, и в родчиненном процессе что-то происходит я могу подождать его вызовом wait/waitpid.
Что делать в Win32 не совсем понятно — если CreateProcess возвращает управление тогда, когда создался и инициализировался процесс, но не создался первичный поток и не загрузились dlls,
то как я могу отследить статус созданного процесса , поскольку он может вылететь еще на этапе инициализации или даже загрузки dlls ? В EPROCESS есть такое понятие LCP порт исключений,
как-то могу я эти исключения перехватывать.. в общем пока что ничего непонятно