Связывание на этапе компоновки подключает прикладную программу к клиентским DLLs подсистем окружения, которые осуществляют экспорт API

Эмуляция нескольких ОС

Подсистемы окружения операционной системы XP реализованы как системы типа Клиент/сервер. Как часть процесса компиляции, прикладные программы прикрепляются на этапе компоновки к API операционной системы, который экспортируют под Системы окружения ОС XP.

Например, Win32 программа - это клиент подсистемы окружения Win32, поэтому она связана с клиентскими DLL Win32, включая kernel32.dll, gdi32.dll, и user32.dll. Программа POSIX связана с клиентской DLL POSIX - psxdll.dll.

Клиентские DLL выполняют задачи от имени их серверов, но они выполняются как часть клиентского процесса. Как показано рис. 18, в некоторых случаях пользовательская DLL может полностью реализовывать API без необходимости обращения к помощи сервера.

 
 

В других случаях сервер должен помочь. Помощь сервера обычно необходима только когда должна быть модифицирована общая информация, связанная с подсистемой окружения. Когда пользовательская DLL требует помощи от сервера, DLL посылает сообщение, известное, как вызов локальной процедуры (LPC) на сервер.

Когда сервер завершает указанный запрос и возвращает ответ, DLL может завершить функцию и возвратить управление клиенту. И пользовательская DLL и сервер могут использовать "родной" API, когда это необходимо. API подсистем окружения дополняют "родной" API специфическими функциональными возможностями или семантикой.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: