- •Классификация системного программного обеспечения
- •Другая классификация
- •Требования к системному программному обеспечению
- •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: назначение, организация, доступ.
Х.4 Растровая графика
Все рассмотренные выше функции базировались на вычерчивании определенными инструментами графических примитивов по заданным командам, т.е. по векторному принципу. Растровая графика предусматривает доступ (индивидуальном или "коллективном") к изображению на уровне образующих его точек, расположение которых не обязательно описывается в "векторном" виде. Оба типа графики обладают собственными достоинствами и недостатками и фактически тесно взаимосвязаны: для большинства устройств отображения первичен растровый принцип формирования изображения, но преобразования "инструментальных" примитивов в растр прозрачно для вызовов API.
Некоторые контексты поддерживают не все функции растровой графики. Информацию о совместимости может предоставить функция GetDeviceCaps().
Простейшим и наиболее универсальным способом получения произвольных изображений является доступ к отдельным его точкам.
Формат функций:
COLORREF SetPixel(HDC hDC, int nX, int nY, COLORREF crColor);
BOOL SetPixelV(HDC hDC, int nX, int nY, COLORREF crColor);
COLORREF GetPixel(HDC hDC, int nX, int nY);
Действие функций: соответственно изменение состояния (цвета) одной логической точки и получение текущего состояния. Функция SetPixelV() отличается тем, что приводит значение цвета к ближайшему представимому в данном контексте; согласно документации, выполняется несколько быстрее.
Возвращаемое значение: состояние точки на момент вызова функции (COLORREF) либо признак успешности выполнения (BOOL).
Параметры:
hDC – контекст
nX, nY – логические координаты точки
crColor – новое значение цвета точки.
Отметим, что здесь и далее согласно принятой терминологии элементы битового образа именуются пикселами (соответствует буквальному значению слова), однако координаты и размеры задаются, как правило, в логических единицах, в то время как приксельные координаты принято отождествлять с физическими. Впрочем, для растровой графики это обычно не принципиально, т.к. изображение существует фактически в собственной системе измерений и преобразуется только в процессе вывода.
Более сложные (и эффективные!) функции манипулируют не отдельными точками, а массивами точек – фрагментами изображений и битовыми образами.
Предусмотрены функции переноса содержимого целых областей (прямоугольных) изображений. В простейшем случае они не требуют никаких дополнительных подготовительных действий.
Функции BitBlt, StretchBlt, MaskBlt, PlgBlt.
Формат функций:
BOOL BitBlt(
HDC hDstDC, int nDstX, int nDstY, int nDstWidth, int nDstHeight,
HDC hSrcDC, int nSrcX, int nSrcY,
DWORD dwRop
);
BOOL StretchBlt(
HDC hDstDC, int nDstX, int nDstY, int nDstWidth, int nDstHeight,
HDC hSrcDC, int nSrcX, int nSrcY, int nSrcWidth, int nSrcHeight,
DWORD dwRop
);
BOOL MaskBlt(
HDC hDstDC, int nDstX, int nDstY, int nDstWidth, int nDstHeight,
HDC hSrcDC, int nSrcX, int nSrcY,
HBITMAP hbmMask, int nMaskX, int nMaskY,
DWORD dwRop
);
BOOL PlgBlt(
HDC hDstDC, const POINT* lpDstVertices,
HDC hSrcDC, int nSrcX, int nSrcY,
HBITMAP hbmMask, int nMaskX, int nMaskY,
DWORD dwRop
);
Действие функций: перенос прямоугольного фрагмента изображения из контекста-источника в контекст-приемник, в т.ч. с трансформацией и дополнительными операциями (см. ниже). Фрагмент в логической системе координат. StretchBlt() отличается тем, что может изменять масштаб изображения фрагмента. MaskBlt() позволяет задавать маскировать часть изображения. PlgBlt(), кроме того, осуществляет перенос в непрямоугольную область приемника с соответствующим искажением.
Возвращаемое значение: признак успешности выполнения.
Параметры:
hSrcDC, hDstDC – контексты: соответственно источник и получатель данных.
nSrcX, nSrcY, nDstX, nDstY – координаты фрагмента в обоих контекстах.
nSrcWidth, nSrcHeight, nDstWidth, nDstHeight – размеры фрагментов.
hbmMask – битовый образ (см. ниже) маски, монохромного типа, нулевые точки маски указывают на применение к данной точке изображения операции "заднего плана", единичные – "переднего плана".
nMaskX, nMaskY – точка привязки в образе маски.
lpDstVertices – массив структур POINT, задающих вершины параллелограмма, образующего фрагмент-приемник.
dwRop – дополнительная операция, применяемая к фрагменту при переносе: SRCCOPY (простое копирование), SRCAND (комбинация цветов источника и получателя по И), SRCPAINT (комбинация по ИЛИ), SRCINVERT (комбинация по "Исключающему ИЛИ"), SRCERASE (комбинация по И цвета источника и инверсии цвета получателя), NOTSRCCOPY, NOTSRCERASE (соответствует одноименным, но результирующий цвет инвертируется), DSTINVERT (инверсия фрагмента-приемника), BLACKNESS, WHITENESS (заполнение фрагмента-получателя цветом соответственно 0 и 1 физической палитры), и другие. Для MaskBlt() параметр включает операции для переднего и заднего фона, формируется с помощью макроса MAKEROP4.
Для успешного применения этих функций требуется, чтобы оба контекста относились к одному устройству (или идентичным устройствам).
При использовании функций следует учитывать, что в логических координатных системах, связанных с обоими контекстами, отсчитываются только координаты опорных точек и размеры границ фрагмента, содержимое же его всегда ориентировано одинаково.
Эффекты, возникающие при деформации битового образа, дополнительно управляются функцией SetStretchBltMode(). Текущая настойка возвращается функцией GetStretchBltMode().
Битовый образ (bitmap) – двумерный массив числовых значений, характеризующий состояние точек некоторой области, как правило, прямоугольной.
В простейшем случае битовый образ описывается структурой BITMAP, содержащей поля:
LONG bmType – тип образа, должен быть равен 0.
LONG bmWidth, LONG bmHeight – положительные ширина и высота прямоугольной области в пикселах
LONG bmWidthBytes – размер в байтах образа одной строки изображения, в Windows должен быть кратен 2, т.к. система предполагает массив состоящим из слов; фактически кратен 4.
WORD bmPlanes – количество цветовых планов (плоскостей), фактически компонент, задающих цвет.
WORD bmBitsPixel – количество бит для кодирования цвета одной точки.
LPVOID bmBits – указатель на двумерный массив данных, каждая строка которого соответствует одной строке изображения.
Практически используются монохромный и цветной типы образов. В случае монохромного имеет место 1 цветовой план и 1 бит на точку. Единичное значение этого бита задает для точки цвет переднего плана (foreground), нулевое – заднего (backgroung).
С точки зрения GDI битовые образы являются объектами, которые идентифицируются их описателями – HBITMAP. Различают т.н. совместимые и контекстно-независимые объекты BITMAP.
Битовый образ типично создается одной из следующих функций.
Функции CreateBitmap, CreateBitmapIndirect
Формат функций:
HBITMAP CreateBitmap(
int nWidth, int nHeight, UINT cPlanes, UINT cBitsPerPel,
const void* lpvBits
);
HBITMAP CreateBitmapIndirect(const BITMAP* lpBitmap);
Действие: создает объект BITMAP с указанными характеристиками.
Возвращаемое значение: описатель объекта или NULL в случае ошибки.
Параметры:
nWidth, nHeight – размеры образа в точках изображения (pel).
cPlanes – количество цветовых планов.
cBitsPerPel – "глубина" цвета и битах на точку.
lpvBits – массив данных образа.
lpBitmap – структура BITMAP, содержащая перечисленные параметры.
Функция CreateDIBitmap
Формат функции:
HBITMAP CreateDIBitmap(
);
Действие: создает объект BITMAP контекстно-независимого типа.
Возвращаемое значение: описатель объекта или NULL в случае ошибки.
Параметры:
Функция CreateCompatibleBitmap
Формат функции:
HBITMAP CreateCompatibleBitmap(HDC hDC, int nWidth, int nHeight);
Действие: создает объект BITMAP совместимого типа для заданного контекста с заданными размерами. В зависимости от контекста он может быть создан цветным или монохромным, а если в контексте заданы данные раздела DIB – контекстно-независимым.
Возвращаемое значение: описатель объекта или NULL в случае ошибки.
Параметры:
hDC – контекст.
nWidth, nHeight – размеры образа.
"Совместимые" образы наиболее пригодны для временного сохранения и восстановления изображений, тек как манипулирование ими несколько более производительно, чем другими типами образов. Вместе с тем, с этой целью типично использование также "контекстов в памяти", однако с ними совместимы как цветные, так и монохромные, что приводит к неоднозначности выбора.
Для доступа к содержимому битового образа предусмотрены функции SetDlBits() и GetDlBits() (работают построчно). Однако имеется возможность воздействовать на него всеми доступными инструментами. Для этого объект BITMAP связывается с некоторым контекстом с помощью универсальной функции SelectObject(), после чего все изменения в контексте будут отображаться и в битовом образе; наиболее характерным примером является использование контекстов "в памяти", связывать с которыми объект BITMAP необходимо. Аналогично для отображения битового образа в контекст он должен быть связан с некоторым контекстом (возможно, с одним и тем же).