Организация ввода-вывода. Часть 2. Драйверы для WINDOWS NT. Рощин А.В. - 62 стр.

UptoLike

Составители: 

62
Какие подсистемы будут загружены при старте Windows 2000,
определяется значением параметра Required в разделе реестра
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Subsystem. В
этом параметре просто указан список подсистем, загружаемых при
запуске.
Каждая подсистема окружения предоставляет прикладным
программам свое подмножество базовых сервисов исполнительной
системы Windows 2000. Это значит, что приложение, созданное для одной
подсистемы, может выполнять только операции этой подсистемы,
и не
может другой. Так Win32-приложения не могут использовать POSIX-
функцию fork.
Каждый исполняемый файл (.EXE) принадлежит одной, и только
одной подсистеме. При запуске его образа код, отвечающий за создание
процесса, получает тип подсистемы, указанный в заголовке образа, и
уведомляет соответствующую подсистему о новом процессе. В Microsoft
Visual C++ тип указывается спецификатором /SUBSYSTEM в команде
link.
Одновременные вызовы функций различных подсистем невозможны.
То есть, приложения POSIX могут вызывать только сервисы,
экспортируемые этой подсистемой, а приложения Win32только сервисы,
экспортируемые подсистемой Win32.
Как уже сказано выше, приложения пользователя не могут напрямую
вызывать системные сервисы Windows 2000. Они обращаются к DLL
подсистем. Эти DLL предоставляют документированный интерфейс между
программой и
вызываемой ей подсистемой. DLL подсистемы Win32
(Kernel32.dll, Advapi32.dll, User32.dll, Gdi32.dll) реализуют функции Win32
API, а DLL подсистемы POSIX реализует функции POSIX 1003.1 API.
При вызове приложением одной из функций DLL подсистемы может
возникнуть один из трех случаев:
     Какие подсистемы будут загружены при старте Windows 2000,
определяется    значением    параметра     Required    в   разделе    реестра
HKLM\SYSTEM\CurrentControlSet\Control\Session         Manager\Subsystem.   В
этом параметре просто указан список подсистем, загружаемых при
запуске.
     Каждая     подсистема     окружения     предоставляет      прикладным
программам свое подмножество базовых сервисов исполнительной
системы Windows 2000. Это значит, что приложение, созданное для одной
подсистемы, может выполнять только операции этой подсистемы, и не
может другой. Так Win32-приложения не могут использовать POSIX-
функцию fork.
     Каждый исполняемый файл (.EXE) принадлежит одной, и только
одной подсистеме. При запуске его образа код, отвечающий за создание
процесса, получает тип подсистемы, указанный в заголовке образа, и
уведомляет соответствующую подсистему о новом процессе. В Microsoft
Visual C++ тип указывается спецификатором /SUBSYSTEM в команде link.
     Одновременные вызовы функций различных подсистем невозможны.
То   есть,   приложения     POSIX   могут    вызывать      только    сервисы,
экспортируемые этой подсистемой, а приложения Win32 – только сервисы,
экспортируемые подсистемой Win32.
     Как уже сказано выше, приложения пользователя не могут напрямую
вызывать системные сервисы Windows 2000. Они обращаются к DLL
подсистем. Эти DLL предоставляют документированный интерфейс между
программой и вызываемой ей подсистемой. DLL подсистемы Win32
(Kernel32.dll, Advapi32.dll, User32.dll, Gdi32.dll) реализуют функции Win32
API, а DLL подсистемы POSIX реализует функции POSIX 1003.1 API.
     При вызове приложением одной из функций DLL подсистемы может
возникнуть один из трех случаев:



                                    62