Уроки Iczelion'а

       

Hемного теории


Время приложений обычно называется "aрy time". Это просто означает время, когда системная виртуальная машина достаточно стабильна, чтобы позволить взаимодействие VxD и приложений ring-3, особенно 16-битных. Hапример, во время приложений VxD может загружать и вызывать функции 16-битных DLL. Это время недоступно под Windows 3.1x. Под Windows 3.1 VxD должен получить адрес требуемой функции в 16-битной DLL и симулировать дальний вызов к этому адресу. Тем не менее, VxD может вызывать только те функции, которые безопасны для прерываний, например PostMessage. Под Windows 95 VxD может вызывать почти любую функцию с помощью времени приложений.

Просто запомните, что когда VxD получает сообщение, что настало время приложений, он может загружать 16-битные DLL и вызывать экспортируемые ими функции. Как же VxD узнает, что настало это время? Он должен зарегистрировать событие времени приложения с помощью VxD оболочки. Когда системная VM будет находиться в стабильном состоянии, Shell VxD вызовет callback-функцию, указанную VxD, когда он регистрировал данное событие. VxD оболочки вызовет вашу callback-функцию только один pаз на каждую регистрацию события времени приложения. Это вроде того, как задать работу. Вы идете в рекрутинговое агенство, регистрируете ваше имя/телефонный номеp. Затем идете домой. Когда pабота будет доступна, агентство уведомит вас об этой хорошей новости. После этого они больше никогда вам не позвонят (если вы еще раз не сходите и не зарегистрируете). Может пройти некоторое время, прежде чем событие времени приложений станет доступно. Эти события недоступны в следующих обстоятельствах:

  • во время загрузки системы и завершения работы
  • когда системная виртуальная машина находится в критической секции или ждет сигнала



Содержание раздела