csrss в csrss.exe обозначает клиент-серверную подсистему. Это часть, которая обращается к win32k.sys которая - после того, как эта часть была переведена в режим ядра (раньше она была в пользовательском режиме для NT 3.51) - отвечает (как следует из названия) за большую часть функциональности "GUI" подсистемы Win32. (включая оконные сообщения).
В Windows существует несколько подсистем, и по умолчанию, когда вы работаете на рабочем столе или запускаете службу Windows, вы будете использовать программу, привязанную к подсистеме Win32. Среди прочего это означает, что kernel32.dll будет загружен (как первая или вторая DLL, в зависимости от точной версии Windows) в программу при запуске.
Большинство вызовов kernel32.dll заканчиваются в самом ядре (через ntdll.dll в режиме пользователя до ntoskrnl.exe в режиме ядра), тогда как вызовы из user32.dll чаще всего заканчиваются в win32k.sys . Разная функциональность, другое место, где они в конечном итоге. Это также окончательное объяснение того, почему ваше движение мыши приводит к вызову подсистемы клиент-сервер. csrss.exe является подсистема Win32 и , следовательно , несет ответственность за все окровавленные детали , которые являются специфическими для подсистемы Win32, таких как окно сообщения. Шрифты, окна и т.д. Не являются первоклассными гражданами в ядре, тогда как мьютексы, события, файлы являются. Но обработка первого все еще перенесена в ядро его расширением win32k.sys которое даже получает свою собственную таблицу дескрипторов системных служб (SDT или SSDT), которая используется для безопасного вызова служб ядра из пользовательского режима.
Кстати, если у вас есть дизассемблер или какой-либо инструмент, такой как dumpbin (поставляется с Visual Studio), вы можете проверить это самостоятельно:
for %i in (user32.dll ntdll.dll kernel32.dll ntoskrnl.exe win32k.sys) do @(echo %i & dumpbin /headers %i|findstr subsystem)
Даст на Windows 7 x64 (при запуске изнутри C:\Windows\System32):
user32.dll
            6.01 subsystem version
               2 subsystem (Windows GUI)
ntdll.dll
            6.01 subsystem version
               3 subsystem (Windows CUI)
kernel32.dll
            6.01 subsystem version
               3 subsystem (Windows CUI)
ntoskrnl.exe
            6.01 subsystem version
               1 subsystem (Native)
win32k.sys
            6.01 subsystem version
               1 subsystem (Native)
"Собственная" подсистема фактически означает отсутствие подсистемы в Windows. Т.е. он напрямую взаимодействует с нативным API (который не имеет многих ограничений API Win32). Драйверы режима ядра не имеют подсистемы, то есть "собственной подсистемы". Также некоторые из программ, которые запускаются до winlogon.exe такие как smss.exe который на самом деле порождает winlogon.exe являются "нативными программами". Хорошим примером здесь является autochk.exe который отвечает за проверку "грязного" флага в файловых системах и запуск проверки файловой системы, если он установлен.
Примером нативного API может быть NtCreateFile против Win32 CreateFile . Однако для объяснения деталей нужна книга. Обратитесь к "Внутренним компонентам Windows" Руссиновича за обзором и "Справочнику по Windows API для Windows NT/2000" от Nebbett для некоторых подробностей. Также см undocumented.ntinternals.net и Недокументированные секреты Windows 2000 ...