- •Классификация системного программного обеспечения
- •Другая классификация
- •Требования к системному программному обеспечению
- •2. Операционная система. Основные функции ос. Структура операционной системы.
- •3. Интерфейс прикладных программ (api) ос. Api Win32 (системные функции).
- •Api операционных систем.
- •Структура api-программ
- •4. Дисковая подсистема в архитектуре ibm pc.
- •5. Низкоуровневая организация дисковой памяти. Сервис bios доступа к дисковой подсистеме.
- •Емкость Диска
- •Оглавление Диска (Каталог)
- •Основные Положения На Память
- •6. Понятие файловой системы. Назначение, требования, функции. Способы организации фс.
- •7. Объекты файловой системы: файлы, директории, логические устройства, другие виды объектов. Файловая система
- •Имена файлов
- •Типы файлов
- •Логическая организация файла
- •Физическая организация и адрес файла
- •Права доступа к файлу
- •Кэширование диска
- •Общая модель файловой системы
- •Отображаемые в память файлы
- •Современные архитектуры файловых систем
- •8. Файловые системы на основе fat (либо по желанию ntfs, s5fs, ufs, ext и т.Д.).
- •9. Служебные структуры файловых систем fat и их использование.
- •1.3.2. Файловые системы
- •Файловая система fat Краткие теоретические сведения
- •Обзор файловой системы fat
- •Имена файлов в fat
- •Преимущества файловой системы fat
- •Недостатки файловой системы fat
- •Обзор файловой системы hpfs
- •Суперблок
- •Запасной блок
- •Преимущества файловой системы hpfs
- •Недостатки файловой системы hpfs
- •Обзор файловой системы ntfs
- •Надежность
- •Дополнительные функции
- •Поддержка posix
- •Устранение ограничений
- •Преимущества файловой системы fat
- •Недостатки файловой системы ntfs
- •Соглашения именования в ntfs
- •10. Программный интерфейс файловой системы (функции для взаимодействия с фс, файлового ввода-вывода) - dos, Win32.
- •12. Вычислительный процесс. Состояния вычислительного процесса.
- •[Править]Создание программ
- •[Править]Использование программ
- •[Править]Правовые аспекты
- •13. Адресное пространство процесса (задачи).
- •20. Адресное пространство процесса
- •14. Приложения Windows (Win 32), разновидности. Структура оконных (windowed) приложений.
- •2. Особенности приложений Win 32.
- •17. Событийное управление в Win32. Сообщения и очереди сообщений Windows (Windows messages): назначение, структура, отсылка, доставка, обработка.
- •18. Цикл обработки сообщений. Оконная процедура: назначение, выполнение, способы активизации и завершения. Краткие теоретические сведения
- •19. Многозадачность, многозадачные операционные системы, особенности выполнения приложений в многозадачной среде.
- •Краткие теоретические сведения поток
- •Краткие теоретические сведения
- •27. Взаимодействие процессов/потоков, взаимное исключение, синхронизация (базовые сведения)
- •Синхронизация субъектов взаимодействия
- •Сравнительная характеристика механизмов взаимодействия
- •33. Графическая подсистема Win32 (gdi) - общая характеристика, основные концепции, объекты (инструменты).
- •Х.1 Общие сведения
- •Х.2 Системы координат и единицы измерения
- •Х.3 Цвета и палитры
- •Х.4 Основные инструменты графической подсистемы
- •Х.4 Растровая графика
- •Х.5 Управление областями вывода и отсечением
- •Х.6 Некоторые аспекты использования графической подсистемы
- •34. Подсистема памяти. Основные задачи, функции, требования. 35. Виртуальное адресное пространство, управление памятью с использованием виртуального адресного пространства.
- •37. Подсистема памяти Win32. Регионы (области) памяти. Группы функций api подсистемы памяти.
- •38. Распределение памяти на уровне менеджера виртуальной памяти (vmm api - Win32). In (35) 3. Архитектура памяти в Win32® api. 3.2. Управление виртуальной памятью. Vmm.
- •39. Отображение файлов в память (File mapping - Win32).
- •4.1 Адресное пространство процесса.
- •4.2 Функции работы с виртуальной памятью.
- •4.3 Проецирование файлов в память
- •4.4.1 Запуск исполняемых файлов и динамически связываемых библиотек
- •4.4.2 Проецирование файлов данных
- •4.4.3 Взаимодействие процессов через общую область данных
- •4.4 Функции работы с кучами (heap-область)
- •4.5 Глобальные и локальные объекты "память"
- •4.6 Функции crt Memory api
- •X.2. Структура подсистемы памяти Win 32 и группы функций
- •40. Системный реестр Windows: назначение, организация, доступ.
33. Графическая подсистема Win32 (gdi) - общая характеристика, основные концепции, объекты (инструменты).
Графическая подсистема
Х.1 Общие сведения
Т.н. GDI (Graphics Device interface) представляет собой единый унифицированный интерфейс устройств (средств) отображения графической информации в Windows. Работа GDI базируется на понятии контекста устройства (device context – DC), который абстрагирует свойства реальных устройств. К ним, в первую очередь, относятся экран, принтер и битовый образ в памяти. Контекст является внутренним объектом Windows, и доступ к нему осуществляется посредством функций API. Контекст идентифицируется его описателем, тип HDC (handle DC). Ввиду того, что прикладная программа никогда не манипулирует контекстом непосредственно и всегда использует для любого доступа к контексту его описатель, в дальнейшем по тексту термин контекст употребляется применительно как к системной структуре данных, так и к ее описателю, например, "получить контекст".
Контекст сопоставляется системой каждому изображаемому элементу (окну) и может быть получен прикладной программой. После этого она может к нему с единым набором функции, причем поведение контекста (изображения контекста) будет (теоретически) также одинаковым независимо от того, с каким устройством он связан, с точностью до ограничений этого устройства (например, устройство монохромного отображения цвета воспроизвести не может).
(Можно провести аналогию с BGI (Borland Graphics Interface) DOS-версий сред программирования – однотипным образом происходит инициализация и использование видеосистем различных типов. Но в Windows эта концепция развита дальше.)
Основы концепции GDI были заложены в Win16 и в дальнейшем расширены. Первоначально количество одновременно открываемых (активных) контекстов было ограничено пятью (??), в настоящее время – в пределах доступных ресурсов системы.
В простейшем случае контекст (описатель контекста) может быть получен для любого окна (оконного элемента) с помощью функций:
HDC GetDC(HWND hWnd);
HDC GetWindowDC(HWND hWnd);
HDC GetDCEx(HWND hWnd, HRGN hrgnClip, DWORD dwFlags)
Стандартно GetDC и GetDCEx возвращают контекст клиентской области окна (т.е. без заголовка, рамки (border) и пр.). Контекст всего окна может быть получен GetWindowDC или GetDCEx с соответствующим флагом (см. ниже).
Регион – понятие, родственное границе окна и графическому изображению, может формироваться в том числе и путем отрисовки в контексте, задает границы области отсечения. Более подробно рассматривается ниже. Область отсечения региона обычно накладывается по И на область видимости окна, но возможны и более сложные варианты их комбинирования (см. ниже).
Варианты флагов:
DCX_WINDOW – дать контекст всего окна, т.е. включая системную область; DCX_CACHE – работать с контекстом из кэша, что повышает скорость выполнения; DCX_PARENTCLIP – использовать видимую часть родительского окна, т.е. фактически его контекст; DCX_CLIPCHILDREN – исключить (отсечь) подчиненные (порожденные) окна; DCX_SIBLING – исключить дочерние окна того же родительского окна; DCX_NORESETATTRS – не сбрасывать состояние контекста при его освобождении; DCX_LOCKWINDOWUPDATE – работать даже при включенном LockWindowUpdate; DCX_EXCLUDERGN – исключить заданный регион из области отсечения; DCX_INTERSECTRGN – использовать пересечение региона с областью отсечения; DCX_VALIDATE -- ?
При этом поведение функции зависит также от некоторых установок стиля оконного класса (см. выше):
– CS_CLASSDC – использовать единственный разделяемый контекст для всех окон данного класса (контекст класса);
– CS_OWNDC – использовать собственный контекст для каждого экземпляра окна;
– CS_PARENTDC – использовать контекст и регион отсечения родительского окна.
Кроме получения контекста существующего окна (подразумевается экранное), можно также явно создавать новые контексты, связанные с определенным устройством.
Функции CreateDC, CreateCompatibleDC.
Формат функций:
HDC CreateDC(
LPCTSTR lpszDriver, LPCTSTR lpszDevice, LPCTSTR lpszOutput,
CONST DEVMODE* lpInitData
);
HDC CreateCompatibleDC(HDC hPrimDC);
Действие функций: создание нового контекста, связанного с указанным устройством (CreateDC) или совместимого с известным контекстом (CreateCompatibleDC). Во втором случае если "образцовый" контекст не задан, то создается т.н. контекст в памяти (memory context), совместимый с текущими установками экрана.
Возвращаемое значение: описатель контекста или NULL.
Параметры:
lpszDriver – в Win 16 задавал имя драйвера устройства; в Win 32 может быть "DISPLAY" для контекстов, связанных с экраном, и NULL для всех других устройств, кроме того, в Windows NT может быть также имя принтера, обычно "WINSPOOL", в этих случаях остальные параметры должны быть NULL.
lpszDevice – логическое имя, под которым устройство известно в системе.
lpszOutput – имя устройства в файловой системе; в Win 32 не используется (равна NULL).
lpInitData – указатель на структуру DEVMODE с инициализирующими данными для устройства, или NULL если используются настройки по умолчанию.
hPrimDC – "образцовый" контекст, с которым будет совместим вновь создаваемый, если не задан (равен NULL), то подразумевается экран с текущими настройками.
Контексты "в памяти" обычно используются для временного (промежуточного) хранения и изображений. Для обеспечения работоспособности им необходимо предварительно явно задавать объект "битовый образ" (см. ниже), используемый в качестве "устройства отображения".
С одним устройством может быть связано несколько контекстов одновременно. Контексты при этом будут функционировать независимо, и их настройки будут оставаться индивидуальными, но реальное изображение будет комбинироваться из всех контекстов.
По окончании работы с контекстом он должен быть освобожден (закрыт). Для контекстов, полученных с помощью Get... используется функция ReleaseDC() (освобождает "общие" и оконные контексты). Для контекстов, созданных с помощью Create..., используется функция DeleteDC().
Формат функций:
int ReleaseDC(HWND hWnd, HDC hDC);
int DeleteDC(HDC hDC);
Возвращаемое значение: 1 при успешном завершении, 0 при ошибке.
Многие характеристики действующего контекста могут быть получены с помощью функции GetDeviceCaps(), принимающей в качестве аргумента описатель контекста и индекс (номер) интересующего параметра (описываются системными константами), и возвращающей значение этого параметра.
Как было указано ранее, все манипуляции с активным контекстом выполняются посредством функций API, которые можно грубо разделить на основные группы: формирование изображений, получение элементов изображений и конфигурирование подсистемы. Ниже будут рассмотрены основные моменты использования API графической подсистемы.