Автор работы: Пользователь скрыл имя, 25 Марта 2014 в 14:49, лекция
Конспект лекций содержит описание технологии системного программирования под Windows с использованием функций Win32 API. В первой части конспекта лекций рассмотрены особенности архитектуры ОС Windows, специфика интерфейса прикладного программирования Win32, структура приложений для Windows. Подробно рассмотрены API функции и основные структуры данных для работы с дисками, каталогами, файлами. Отдельная глава посвящена структурной обработке исключений SEH.
Эта функция имеет следующие аргументы. Первые пять – описывают прямоугольник на экране, в который будет вписан bitmap. Следующие пять – та часть bitmap а, которая будет вписана в прямоугольник на экране.
Последний аргумент – код растровой операции, описывает, как пиксели одного bitmap’a будут взаимодействовать с пикселями другого bitmap’a.
1 и 6 аргументы – хэндлы окна (hDC) и совместимого контекста hCompatibleDC.
2 и 3 (nXOriginDest, nYOriginDest) содержат смещение левого верхнего угла прямоугольника, в который будет вписываться bitmap, относительно левой и верхней сторон рабочей области окна. 4 и 5 (nWidthDest, nHeightDest) – ширина и высота этого прямоугольника.
7 и 8 (nXOriginSrc, nYOriginSrc) аналогичны 2 и 3. 9 и 10 (nWidthSrc, nHeightSrc) – высота и ширина отображаемой части bitmap’a.
Для работы с контекстами устройств существуют и другие функции:
Код определяет, как будут взаимодействовать биты, определяющие заливку и изображение совместимого контекста с изображением на действительном контексте. Комбинируются биты на основе логических операций над ними.
Эти логические операции записываются в обратной польской записи.
Польская запись: Операнд1Операнд2Действие. Обратная польская запись: Действие Операнд1Операнд2
Обозначение битов:
S – биты, определяющие bitmap совместимого контекста (source)
P - биты заливки (pattern – образец)
D биты, на которых будет прорисовываться изображение (distination – назначение, место назначения)
Обозначение операций:
a побитовое И
n побитовое НЕТ
o побитовое ИЛИ
x побитовое исключающее ИЛИ
Пример
Обозначение битов |
Значения битов | |||||||
P |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
S |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
D |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
Обозначение операций |
Результат выполнения оперций | |||||||
PSx |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
DPSxx |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
Краткое описание кодов растровых операций
Таблица 2.3
Наименование |
Индекс операции |
Польская запись |
Эффект |
BLACKNESS |
0x00 |
0 |
Заполнение действительного контекста черным цветом |
NOTSRCERASE |
0x11 |
DSon |
|
NOTSRCCOPY |
0x33 |
Sn |
Прорисовываемый bitmap отображается в негативном виде |
DSTINVERT |
0x55 |
Dn |
Изображение действительного контекста проявляется в негативном виде |
PATINVERT |
0x5A |
DPx |
|
SRCINVERT |
0x66 |
DSx |
|
SRCAND |
0x88 |
DSa |
|
MERGEPAINT |
0xBB |
DSno |
|
MERGECOPY |
0xC0 |
PSa |
|
SRCCOPY |
0xCC |
S |
Копирование прорисовываемого bitmap на действительный контекст |
SRCPAINT |
0xEE |
DSo |
|
PATCOPY |
0xF0 |
P |
|
PATPAINT |
0xFB |
DPSnoo |
|
WHITENESS |
0xFF |
1 |
Заполнение действительного контекста белым цветом |
Понимание логики работы с растровыми операциями может позволить избежать трудоемких преобразований bitmap’ов перед копированием.
Файловая система и простой ввод-вывод через терминал часто оказываются первыми функциями операционной системы, с которыми сталкивается разработчик. Сфера деятельности старых операционных систем, таких как MS DOS, ненамного выходила за пределы управления файлами и терминального (или консольного) ввода-вывода, и сейчас эти ресурсы остаются важнейшей частью почти каждой операционной системы.
Файлы необходимы для долговременного хранения данных и программ. Они являются и самой простой формой связи между программами. Кроме того, многие аспекты модели файловой системы можно применить к связи между процессами и между машинами через сеть.
Итак, файловая система – это набор спецификаций и соответствующее им программное обеспечение, которые отвечают за создание, уничтожение, чтение, запись, организацию, модификацию и перемещение файловой информации, а также за управление доступом к файлам и за управление ресурсами, которые используются файлами. Именно файловая система определяет способ организации данных на диске или на каком-нибудь ином носителе данных.
В настоящее время Windows использует несколько файловых систем. Первая – FAT, которая используется со времени появления персональных компьютеров. Система HPFS – high perfomance file system (высокопроизводительная файловая система) - была разработана для операционной системы OS/2 с целью устранения недостатков, присущих FAT, но и она не решила всех проблем, связанных с FAT. Тогда в Windows NT была предложена новая файловая система NTFC. Для работы с компакт-дисками используется еше одна файловая система – CDFS.
Операционная система Windows 2000 использует технологию устанавливаемой файловой системы (installable file system). Это означает, что на одном и том же компьютере может существовать несколько разных файловых систем. Но во всех системах используются одни и те же методы доступа к файлам и работы с файлами.
Рассмотрим особенности каждой из перечисленных файловых систем.
Доступ ко всем файловым системам осуществляется одним и тем же способом, но с ограничениями. Например: только NTFS поддерживает безопасность.
Жесткий диск может быть разбит на несколько разделов (partition), которые затем могут использоваться либо одной ОС, либо различными ОС. Причем на каждом разделе может быть организована своя файловая система. Формат файловой системы дискового раздела или тома определяется после разделения диска. Диск может быть разделен между первыми двумя файловыми системами в любой комбинации. Однако для организации даже одной-единственной файловой системы необходимо определить, по крайней мере, один раздел.
Win32 поддерживает
иерархическую схему
В большинстве языков программирования предусмотрены достаточно удобные высокоуровневые средства работы с файлами. Однако в некоторых ситуациях требуется открыть файл и работать с ним на уровне операционной системы, не используя высокоуровневые функции.
Первая функция Win32 для работы с файлами - CreateFile. В зависимости от флагов, которые передаются вызову этой функции, она может применяться для открытия существующих файлов или создания новых.
Вызов CreateFile создает файлы далеко не всегда. Вместо этого он создает дескрипторы файлов, которые в дальнейшем используются для работы с файлами. Если файл с указанным именем уже существует на диске, вызов CreateFile может либо открыть его, либо уничтожить его и создать новый файл с таким же именем. Если файла с указанным именем на диске еще нет, вызов CreateFile создаст такой файл. В любом случае вызов этой функции создает дескриптор файла и возвращает его вызывающей программе.
Прототип функции CreateFile выглядит следующим образом:
HANDLE CreateFile ( LPCTSTR lpszName,
DWORD fdwAccess,
DWORD fdwShareMode,
LPSECURITY_ATTRIBUTES lpsa,
DWORD fdwCreate,
DWORD fdwAttrsAndFlags,
HANDLE hTemplateFile).
Возвращаемое функцией значение имеет тип HANDLE. Это дескриптор открытого файла или INVALID_HANDLE_FAILURE в случае неудачи. В Win32 определены многочисленные символические константы и флаги. Их имена обычно очень длинны и описывают их назначение. Например, INVALID_HANDLE_FAILURE или GENERIC_READ.
Имена параметров иллюстрируют некоторые соглашения Win32. Префикс fdw используется, когда значение DWORD (32 бита без знака) содержит флаги (флаги – биты, каждый из которых отвечает за какой-либо один параметр; при этом, если значение флага равно 1, то параметр установлен, если – 0, то - нет).
Префикс lpsz (long pointer to a zero-terminated string – длинный указатель на строку с завершающим нулем) используется для полных имен и других строк. Например, параметр lpszName – указатель на строку с завершающим нулем, содержащую имя файла, канала или другого именованного объекта, который требуется открыть или создать.
Параметр fdwAccess определяет режим доступа для чтения и записи значениями GENERIC_READ и GENERIC_WRITE соответственно. Эти значения можно объединить с помощью поразрядного «или» ( | ), поэтому для открытия файла для чтения и записи используется следующая комбинация:
GENERIC_READ | GENERIC_WRITE
Параметр fdwShareMode – это набор битовых флагов, объединенных поразрядным “или”, указывающий на режим совместного доступа к объекту.
При разработке приложений программист не должен допускать параллельных модификаций одного и того же файла.
Параметр lpsa указывает на структуру SECURITY_ATTRIBUTES (атрибуты безопасности), определяющую права разных групп пользователей к объектам совместного доступа. Если значение этого параметра NULL, то файл незащищен.
Параметр fdwCreate определяет, надо ли создавать новый файл, заменить существующий и т.д. Отдельные значения можно объединить с помощью поразрядного «или» ( | ).
Информация о работе Системное программирование в среде Win32