double arrow

Функции управления некоторыми устройствами

Для оповещения приложений об изменении в аппаратной конфигурации вычислительной системы или в параметрах энергообеспечения, ОС использует сообщения.

Сообщения устройств являются системными сообщениями, которые уведомляют приложения и другие компоненты об изменениях в составе аппаратного обеспечения вычислительной системы (подключен или отключен съемный диск и т.п.).

С целью удостовериться, что приложение не потеряет данные из-за исчезновения какого-либо устройства, ОС отслеживает конфигурацию аппаратного обеспечения ЭВМ и посылает сообщения о предстоящих изменениях в составе устройств приложениям с тем, чтобы те могли подготовиться к изменениям до того, как они наступят.

Для каждого события устройства, ОС посылает сообщение WM_DEVICECHANGE всем приложениям. В этом сообщении параметр wParam идентифицирует тип события устройства, а параметр lParam – является указателем на специфические для данного события данные.

Функция DeviceIoControl обеспечивает интерфейс ввода/вывода, с помощью которого приложения могут напрямую связываться с драйвером устройства. Функция DeviceIoControl является интерфейсом широкого пользования, который может посылать управляющие коды в различные устройства. Каждый управляющий код определяет операцию, которую должен выполнить драйвер. Некоторые стандартные управляющие коды определены в заголовочных файлах SDK (WinIOCtl.h). Дополнительные управляющие коды могут быть определены в драйверах в зависимости от специфики устройства.

В таблице 22 приведены некоторые стандартные коды функций, входящих в управляющие коды из SDK.

Таблица 22 - Стандартные управляющие коды

Код Назначение
IOCTL_CHANGER_GET_PARAMETERS 0x0000 Получить параметры указанного устройства.
IOCTL_CHANGER_GET_STATUS 0x0001 Получить текущее состояние указанного устройства
IOCTL_CHANGER_GET_PRODUCT_DATA 0x0002 Получить данные о устройстве (идентификатор производителя, устройства, серийный номер и т.п.)
IOCTL_STORAGE_GET_MEDIA_TYPES Получить архитектуру указанного устройства (количество цилиндров, тип диска, количество дорожек на цилиндр, количество секторов на дорожке и количество байт на секторе).

Тип управляющих кодов, которые разработчик может определить по своему усмотрению, зависит от устройства, которым предполагается управлять и от платформы, на которой будет запускаться разрабатываемое приложение. Приложения могут использовать или стандартные управляющие коды или специфичные для конкретного устройства коды для выполнения операций прямого ввода/вывода на жесткий диск, компакт-диск и т.п.

В таблице 23 перечислены некоторые функции, используемые для управления устройствами.

Таблица 23 - Функции для управления устройствами

Функция Описание
DeviceIoControl Посылает управляющий код напрямую драйверу определенного устройства. В качестве входных параметров используется: · Дескриптор устройства (создается при открытии или создании файлового объекта типа "устройство"); · Управляющий код, идентифицирующий операцию с устройством; · Указатель на входной буфер данных, которые необходимы для выполнения операции (этот параметр может быть равен 0, если операция не предполагает использование каких-либо входных данных); · Размер входного буфера данных в байтах; · Указатель на выходной буфер данных, которые необходимы для выполнения операции (этот параметр может быть равен 0, если операция не предполагает использование каких-либо выходных данных); · Размер выходного буфера данных в байтах; · Указатель на переменную, содержащую реальное число байт, записанных в выходной буфер.
InstallNewDevice Устанавливает новое устройство. Посылается запрос пользователю для выбора устройства. В качестве входных параметров используется: · Дескриптор окна, в котором будет осуществляться выбор устройства; · Указатель на класс устройства (этот параметр может быть равен 0, в этом случае пользователь начинает выбор устройства со страницы выбора обнаруженных устройств); · Указатель на переменную, определяющую необходимость перезагрузки вычислительной машины, после добавления нового устройства.
RegisterDeviceNotification Регистрирует устройство или тип устройств, для которых окно будет получать уведомления. В качестве входных параметров используется: · Дескриптор окна или службы (сервиса), которое будет получать уведомления о событиях, происходящих с устройством; · Указатель на блок данных, определяющих тип устройств, события с которыми будут инициировать уведомления; · Флаги, определяющие кому предназначено уведомление: окну или службе. Возвращаемое значение является дескриптором окна или службы.
UnregisterDeviceNotification Закрывает все дескрипторы указанного устройства. В качестве входного параметра задается дескриптор окна или службы, получавшего уведомления от устройства.

Контрольные вопросы

1. Дайте определение понятию «операционная среда».

2. Назначение программ форматов: COM и EXE.

3. Назвать основные функции прерывания INT 21h.

4. Назвать основные функции ввода/вывода данных.

3. Назвать основные функции однозадачной операционной системы

4. Назвать основные функции базовой системы ввода/вывод (BIOS).

5.Каким образом осуществляется прямая работа с видеопамятью?

6. Охарактеризовать основные элементы программы в среде Windows.

7.Что такое механизм сообщений ОС Windows?

8. Из каких разделов кода состоит классическая структура программы под Windows?

9. Назвать основные API-функции.

10. Что такое сообщения, очередь сообщений?

11. Что такое процедура обратного вызова?

12. Назначение системных сообщений.

13. Как используются значения идентификаторов сообщений?

14. Какова структура данных сообщения?

15. Что такое оконная процедура?

16. Какие параметры имеет оконная процедура?

17. Назвать входные параметры оконной процедуры.

18. Что представляют собой динамические библиотеки?

19. Какие типы функций можно определить в динамических библиотеках?

20. Что такое динамическое связывание?

21. Какие существует методы вызова функции из DLL?

22.Какие API-функции используются во время выполнения DLL?

23. Пояснить модель ввода данных с клавиатуры.

24. Что такоефокус ввода?

25. Какие существует типы сообщений с символами?

26. На какие группы делятся сообщения "мыши"?

27. Охарактеризовать оконные процедуры.

28.Что такое диалоговое окно?

29.Охарактеризовать типы диалоговых окон.

30. Какова структура шаблона диалогового окна?

31. Какой формат может использовать шаблон?

32. Охарактеризовать расширенный формат.

33. Охарактеризовать стандартный формат.

34. Охарактеризовать функцию позволяющую получить информацию о процессоре.

34. Охарактеризовать функцию для определения версии ОС.


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



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