Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2010, 14:18   #1
garmanbozia
Новичок
Джуниор
 
Регистрация: 07.01.2010
Сообщений: 1
По умолчанию Потоки и csrss

Коллеги, доброго времени суток !

У меня вопрос такой. Работа заставила заняться изучением Windows API (до того специализировался на UNIX/POSIX/Sys V системах), в ходе этого процесса запнулся об один вопрос, ответа на который не могу найти. Изучая подноготную метода CreateProcess обратил внимание вот на какую, с моей точки зрения, странность. (далее в соответствии с тем что написано у Руссиновича и Jeffrey Richter, Programming Applications for Microsoft Windows). На определенном этапе подготовки процесса к началу работы исполнительная система (Executive) отправляет процессу csrss сообщение (каким образом ? LPC ?) о новом процессе, csrss создает СВОЙ объект процесс (собственно и Executive и ядро уже создали к этому времени EPROCESS и KPROCESS, причем один является частью другого и это логично, потому как планировщик ядра , как я понял, интересует только PCB). Далее создается первичный тред процесса, в создании которого так же участвует Windows Environment Subsystem (насколько я понимаю в этом участвует именно csrss). Для чего такая сложная схема ? Каким образом userspace процесс csrss КОНКРЕТНО участвует в создании процесса и треда и почему создание "легковестной" структуры, которая по идее должна управляться ядром, настолько усложнено ? К сожалению из открытых источников (как и из вышеперчисленных книг) не могу найти ответа на этот вопрос, кроме общих фраз о том что csrss занимается управлением потоками в системе Windows, что , конечно, "ни о чем".

Заранее спасибо за ответ.
garmanbozia вне форума Ответить с цитированием
Старый 07.01.2010, 20:50   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

ничего не могу сказать по этому поводу, так как самому интересно. Но могу представить один факт.
в этой статье (параграф "Открытие процесса. (способы получения хэндлов)") описан альтернативный метод получения хендла процесса с полным доступом, к которому запрещён доступ (например, процессов антивирусов). Фишка в том что csrss имеет хендлы всех запущенных процессов, даже тех к которым запрещён доступ, таким образом с помощью функции DuplicateHandle мы можем получить хендл нужного нам процесса с полным доступом.
rpy3uH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потоки в С++ BioS Общие вопросы C/C++ 2 09.01.2010 21:34
Потоки AidarBik Win Api 2 04.08.2008 10:00
Потоки в С Raptor Помощь студентам 1 07.01.2008 21:12