- •Минобрнауки россии
- •Е.В. Грачева Системное программное обеспечение персональных эвм
- •1 Программирование в операционной среде
- •1.1 Программирование в среде однозадачной операционной системы
- •1.2 Программирование в среде ос Windows
- •1.2.1 Основные понятия
- •1.2.2 Программный интерфейс
- •1.2.2.1 Сообщения, очередь сообщений
- •1.2.2.2 Процедура окна
- •1.2.3 Использование динамических библиотек
- •1.2.3.1.Описание api-функции LoadLibrary
- •1.2.3.2 Описание функции GetProcAddress
- •1.2.3.3 Описание функции FreeLibrary
- •1.2.4 Описание некоторых api-функций
- •1.2.4.1.Функции для создания пользовательского интерфейса
- •1.2.4.1.1 Ввод данных с клавиатуры
- •1.2.4.1.2 Ввод данных с помощью "мыши"
- •1.2.4.1.3 Диалоговые окна
- •1.2.4.2 Функции для получения информации о системе
- •1.2.4.2.1 Информация об аппаратной конфигурации
- •1.2.4.2.3 Конфигурация ос
- •1.2.4.2.4 Системные параметры
- •1.2.4.2.5 Внешний вид системных элементов
- •1.2.4.3 Функции управления памятью
- •1.2.4.3.1 Основные функции управления памятью
- •1.2.4.4.Функции управления файлами
- •1.2.4.4 Функции управления некоторыми устройствами
- •Контрольные вопросы
- •35. Охарактеризовать функцию для определения конфигурации ос
- •36. Охарактеризовать функции об установке системных параметров.
- •2.Ассемблеры
- •2.1 Архитектура процессоров ia-32
- •2.1.1.Основная исполнительная среда микропроцессора с архитектурой ia32
- •2.1.2 Режимы работы и используемая модель памяти процессоров с архитектурой ia32
- •2.1.3 Архитектура ia-32 системного уровня
- •2.2.Программирование на языке ассемблера
- •2.2.1 Метки
- •2.2.2 Директивы
- •2.2.3 Формат команды
- •2.2.4 Система команд микропроцессоров с архитектурой ia32
- •2.2.4.1 Команды пересылки данных
- •Ins строка, dx
- •2.2.4.2 Арифметические операции
- •2.2.4.3 Операции сдвига
- •2.2.4.4 Битовые операции
- •2.2.4.5 Команды для организации циклов
- •1.3.1.1 Команды сравнения
- •2.2.4.6 Команды передачи управления
- •2.2.4.7 Системные команды
- •2.2.4.8 Команды математического сопроцессора
- •2.2.5 Технология программирования
- •2.3 Макроязыки
- •3.Трансляторы
- •3.1 Структура компиляторов и интерпретаторов, лексический, синтаксический и семантический анализаторы, генератор кода
- •3.1.1.Распределение памяти, виды переменных
- •3.1.2.Статическое и динамическое связывание
- •3.2 Загрузчики
- •3.2.1 Функции загрузчика
- •3.2.1 Настраивающий и динамический загрузчики
- •3.3 Подключение библиотек
- •4. Формальные языки и грамматики
- •4.1 Типы грамматик
- •4.1.1 Вывод цепочек
- •4.1.2 Конечный и магазинный автоматы, распознаватели и преобразователи, построение автомата по заданной грамматике
- •Приложения Приложение а
- •Оглавление
- •4. Формальные языки и грамматики
1.2.4.4 Функции управления некоторыми устройствами
Для оповещения приложений об изменении в аппаратной конфигурации вычислительной системы или в параметрах энергообеспечения, ОС использует сообщения.
Сообщения устройств являются системными сообщениями, которые уведомляют приложения и другие компоненты об изменениях в составе аппаратного обеспечения вычислительной системы (подключен или отключен съемный диск и т.п.).
С целью удостовериться, что приложение не потеряет данные из-за исчезновения какого-либо устройства, ОС отслеживает конфигурацию аппаратного обеспечения ЭВМ и посылает сообщения о предстоящих изменениях в составе устройств приложениям с тем, чтобы те могли подготовиться к изменениям до того, как они наступят.
Для каждого события устройства, ОС посылает сообщение 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 |
Посылает управляющий код напрямую драйверу определенного устройства. В качестве входных параметров используется:
|
InstallNewDevice |
Устанавливает новое устройство. Посылается запрос пользователю для выбора устройства. В качестве входных параметров используется:
|
RegisterDeviceNotification |
Регистрирует устройство или тип устройств, для которых окно будет получать уведомления. В качестве входных параметров используется:
Возвращаемое значение является дескриптором окна или службы. |
UnregisterDeviceNotification |
Закрывает все дескрипторы указанного устройства. В качестве входного параметра задается дескриптор окна или службы, получавшего уведомления от устройства. |
