
- •Классификация системного программного обеспечения
- •Другая классификация
- •Требования к системному программному обеспечению
- •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: назначение, организация, доступ.
Х.5 Управление областями вывода и отсечением
Стандартно графический вывод отсекается по границам окна, с которым связан контекст (клиентская область или, если были приняты соответствующие меры, системные элементы), кроме того, из области вывода удаляются части, перекрытые другими окнами, в т.ч. (не обязательно) дочерними, например, элементами управления. Таким образом, границы области вывода могут иметь достаточно сложную форму.
Унифицированным средством задания границ области вывода являются области, или регионы отсечения. Регион отсечения в Windows может иметь прямоугольную, многоугольную или эллиптическую форму или их сочетание, и представляет собой набор из некоторого, возможно очень большого числа прямоугольников, сочетание которых задает границы области вывода. Регион является объектом, идентифицируемым его описателем HRGN.
Произвольный регион создается универсальной функцией
ExtCreateRegion(const XFORM* lpXform, DWORD nDataSize, const RGNDATA lpRgnData).
Структура XFORM описывает преобразование региона из мировых координат в экранные. Если данный параметр не задан (равен NULL), координаты считаются идентичными.
Собственно регион описывается структурой RGNDATA, содержащей поля:
– RGNDATAHEADER rdh – структура данных заголовка;
– char Buffer[1] – буфер структур RECT, образующих регион.
В свою очередь, структура RGNDATAHEADER содержит поля:
– DWORD dwSize – размер заголовка в байтах;
– DWORD iType – тип региона, должен быть RGN_RECTANGLES;
– DWORD nCount – количество прямоугольников в буфере;
– DWORD nRgnSize – требуемый размер буфера, если заранее неизвестен, может быть нулевым;
– RECT rcBound – вмещающий прямоугольник для региона.
Кроме того, имеются также и специализированные функции, работающие с регионами определенной формы:
СreateRectRgn(), CreateRectRgnIndirect()
CreateRoundRectRgn
CreateEllipticRgn, CreateEllipticRgnIndirect
CreatePolygonRgn, CreatePolyPolygonRgn
Два региона могут быть объединены в один функцией CombineRgn(). Объект "регион", являющийся результатом объединения, должен быть создан заранее, в качестве его может выступать один из регионов-источников. В зависимости от флагов регионы могут объединяться по различным логическим правилам: И, ИЛИ, Исключающее ИЛИ, простое копирование, только несовпадающие части. При необходимости функция вызывается многократно.
Функция GetRgnData() позволяет получить доступ с данным региона по его описателю. Вмещающий прямоугольник для региона может быть получен функцией GetRgnBox().
Функции PtInRegion() и RectInRegion() проверяют соответственно точку и прямоугольник на вхождение их в регион.
Регион, кроме того, может быть обведен или закрашен с использованием текущих инструментов данного контекста.
Х.6 Некоторые аспекты использования графической подсистемы
Достаточно типична ситуация, когда в окне (контексте) формируется сложное с точки зрения графической подсистемы изображение, например, формируемое многими инструментами, с многократным наложением отдельных фрагментов и областей отсечения. В течение "жизненного цикла" приложения это окно может сворачиваться, изменять размеры, перекрываться другими и т.д. Так как система не запоминает содержимое окна (см. выше), при этом неоднократно будет требоваться его перерисовка, что может оказаться недопустимо длительным. С другой стороны, далеко не всегда приложению требуется действительно перестроить изображение. В подобных случаях удобна следующая схема:
– изображение строится однократно, причем в невидимом ("теневом") контексте, не связанном с видимым окном, но совместимом с его контекстом;
– при каждой перерисовке окна, включая первую, изображение переносится из "теневого" контекста в контекст видимого окна.
Данный подход эффективен для "насыщенных" преимущественно векторных изображений, например, больших блоков текста, фигурного текста, сложных графиков и т.п. При использовании совместимых контекстов необходимо контролировать возможные изменения режимов отображения.
В Приложении приведен текст программы, иллюстрирующей описанный подход.
Особым случаем использования графической подсистемы является вывод на иные, отличные от дисплея, устройства, чаще всего принтеры. В принципе, описанный выше "контекст в памяти" универсален и позволяет строить любые изображения в любых форматах, но затем все равно возникает проблема переноса их на реальное устройство, что требует использования связанного с ним соответствующего контекста. Выше была отмечена функция CreateDC, предназначенная для этой цели, но в Win32 ее действие несколько модифицировано.
Во-первых, вызывается CreateDC со следующим набором параметров:
– lpszDriver = NULL (игнорируемый параметр);
– lpszDevice = <имя_принтера> (имя устройства, как оно зарегистрировано в системе);
– lpszOutput = NULL;
– lpInitData = lpDevMode (данные инициализации) или NULL (инициализация по умолчанию).
Структура DEVMODE с данными инициализации содержит много полей различного назначения, в данном случае заполняются функцией DocumentProperties().
Формат функции:
LONG DocumentProperties(
HWND hWnd, HANDLE hPrinter, LPTSTR pDeviceName,
DEVMODE* pDevModeOut, DEVMODE* pDevModeIn,
DWORD fMode
);
Действие: модифицирует структуру данных инициализации или вызывает диалог настроек.
Возвращаемое значение: необходимый размер буфера, если флаги режима не заданы (0); константы IDOK или IDCANCEL как признак результата вызванного диалога если вызывался диалог; IDOK, если диалог не вызывался и выполнение успешно; отрицательное значение, если произошла ошибка.
Параметры:
hWnd – описатель окна для родителя окна – диалога настроек принтера.
hPrinter – описатель используемого принтера, возвращается функцией OpenPrinter().
pDeviceName – имя используемого принтера.
pDevModeOut – указатель на заполняемую функцией структуру.
pDevModeIn – указатель на модифицируемую структуру, если установлен флаг DM_IN_BUFFER (см. ниже); в остальных случаях игнорируется.
fMode – флаг режима выполнения функции, комбинация по ИЛИ следующих значений: DM_IN_BUFFER (дополнение стандартных для данного принтера настроек информацией из "входной" структуры), DM_IN_PROMPT или DM_PROMPT (вызов стандартного диалога настроек принтера), DM_OUT_BUFFER или DM_COPY (запись всех настроек принтера в выходную структуру).
Во-вторых, вызывается функция StartDoc().
Формат функции:
Int StartDoc(HDC hDC, const DOCINFO* lpDocInfo);
Действие функции: начало сеанса работы принтера (print job).
Возвращаемое значение: положительный идентификатор сеанса или признак ошибки.
Параметры:
hDC – контекст устройства (принтера).
lpDocInfo – структура DOCINFO, содержащая информацию о принтере. Основное назначение структуры – специфицировать имя устройства (перекрывает имя, заданное в CreateDC()) и имя документа.
Открытый сеанс закрывается функцией EndDoc(HDC hDC). Воздействовать на находящиеся в очереди сеансы можно функциями SetJob(), GetJob(), AddJob(), ScheduleJob().