Page 1 of 1

Видео

Posted: Mon Mar 05, 2012 12:44 pm
by X512
Как инициализируется win32k и как он узнаёт куда рисовать? Кто даёт видеобуффер?
Я так понимаю win32k общается через системные вызовы?
В отличии от Haiku мне совсем не понятна текущаяя архитектура GUI...

Posted: Mon Mar 05, 2012 11:17 pm
by hto
Как инициализируется win32k […]
Сначала win32k.sys загружается из smss.exe, а потом инициализируется вызовом NtUserInitialize() из win32csr.dll (csrss.exe).
[…] и как он узнаёт куда рисовать?
Драйвер videoprt.sys при загрузке системы находит видеоадаптеры и создаёт объекты с именами \Device\VideoN и \??\DISPLAYN (N - номер) для каждого устройства. Win32k сейчас, как я понимаю, берёт первое попавшееся устройство (\Device\Video0, оно же \??\DISPLAY1) и загружает для него framebuf.dll (VBE) или же vgaddi.dll (VGA).
Кто даёт видеобуффер?
win32k.sys вызывает framebuf.dll вызывает vbemp.sys вызывает videoprt.sys вызывает ядро.
Я так понимаю win32k общается через системные вызовы?
Да. При загрузке win32k в таблицу системных вызовов добавляются новые элементы.
В отличии от Haiku мне совсем не понятна текущаяя архитектура GUI...
Кое-что есть в wiki:

http://www.reactos.org/wiki/Techwiki:Win32k
http://www.reactos.org/wiki/Arwinss
http://www.reactos.org/wiki/Arwinss_technical