
- •Введение
- •1. Лабораторная работа № 1
- •1.1. Цель работы
- •1.2. Теоретическое введение
- •1.2.1. Получение информации об операционной системе
- •1.2.2. Получение информации из реестра
- •1.2.3. Получение информации о системных каталогах Windows
- •1.2.4. Получение информации о диске
- •1.3. Создание приложения для получения характеристик компьютера и операционной системы
- •Контрольные вопросы
- •2. Лабораторная работа №2
- •2.1.Цель работы
- •2.2. Теоретическое введение
- •2.2.1. Процедуры и функции для работы с виртуальной памятью
- •2.3. Создание приложения, работающего с виртуальной памятью
- •2.4. Задание для самостоятельной работы
- •Контрольные вопросы
- •3. Лабораторная работа № 3
- •3.1. Цель работы
- •3.2. Пример использования механизма выделения виртуальной памяти для решения конкретных задач
- •3.3. Задания для самостоятельной работы
- •Контрольные вопросы
- •4. Лабораторная работа № 4
- •4.1. Цель работы
- •4. 2. Теоретическое введение
- •4.2.1 Создание или открытие объекта ядра «файла»
- •4.2.2 Создание объекта ядра «файл, проецируемый в память»
- •4.2.3 Проецирование файловых данных на адресное пространство процесса
- •4.2.4 Отмена проецирования на адресное пространство процесса объекта ядра «файл, проецируемый в память»
- •4.2.5 Закрытие объектов ядра «файл, проецируемый в память» и «файл»
- •4.3 Примеры программ, выполняющих проецирование в память
- •4.3.1 Пример 1
- •4.3.2 Пример 2
- •4.4. Задания для самостоятельной работы
- •Контрольные вопросы
- •5. Лабораторная работа № 5
- •5.1.Цель работы
- •5.2. Теоретическое введение
- •5.2.1. Создание процесса
- •5.2.2. Запуск внешней программы функцией WinExec
- •5.2.3. Запуск внешней программы и открытие документа функцией ShellExecute
- •При успешном выполнении функция ShellExecute возвращает целое значение, большее 32. Значение меньшее или равное 32 указывает на ошибку. Значения эти те же, что и для функции WinExec.
- •5.2.4. Создание потока
- •5.2.5. Завершение процесса
- •5.2.6. Завершение потока
- •5.2.7. Изменение класса приоритета процесса
- •5.2.8. Получение информации о классе приоритета процесса
- •5.2.9. Изменение уровня приоритета потока
- •5.2.10. Получение информации о приоритете потока
- •5.3. Примеры программ для работы с процессами и потоками
- •5.3.1. Создание процесса с помощью функции CreateProcess.
- •5.3.2. Создание процесса с помощью функции WinExec.
- •5.3.3. Создание процесса с помощью функции ShellExecute.
- •5.3.4. Создание многопоточного приложения.
- •5.4. Задания для самостоятельной работы
- •Контрольные вопросы
- •6. Лабораторная работа № 6
- •6.1. Цель работы
- •6.2. Теоретическое введение
- •6.2.1. Получение «мгновенного снимка» системы
- •6.2.2. Получение информации о процессах
- •6.2.3. Получение информации о потоках
- •6.2.4. Получение информации о модулях
- •6.2.5. Информация о кучах (heap)
- •6.2.6. Информация о виртуальной памяти.
- •6.2.7. Алгоритм работы функций ToolHelp
- •6.2.8. Как получить карту памяти любого процесса
- •6.3. Пример использования функций ToolHelp
- •6.4. Задания для самостоятельной работы
- •Контрольные вопросы
- •7. Лабораторная работа № 7
- •7.1. Цель работы
- •7.2. Теоретическое введение
- •7.2.1. Критические секции
- •7.2.2. Синхронизация с использованием объектов ядра
- •7.2.3. Wait-функции
- •7.2.4. Синхронизация с использованием процессов и потоков
- •7.2.5. Объекты Mutex
- •7.2.6. Семафоры
- •7.2.7. События
- •7.3 Примеры работы с объектами синхронизации
- •7.3.1 Пример 1
- •7.3.1 Пример 2
- •7.4. Задания для самостоятельной работы
- •Контрольные вопросы
- •8. Лабораторная работа № 8
- •8.1. Цель работы
- •8.2 Теоретическое введение
- •8.2.1 Создание dll
- •8.2.2 Неявная загрузка dll
- •8.2.3 Явная загрузка dll
- •8.2.4 Внедрение dll в адресное пространство другого процесса
- •8.3 Пример работы с dll
- •8.3.1 Создание dll, которая выполняет перехват нажатых клавиш
- •8.3.2 Разработка приложения, которое выполняет анализ и обработку нажатых клавиш.
- •8.4 Индивидуальные задания
- •Контрольные вопросы
- •9.2.2. Функции для работы с объектом «уведомление об изменении файловой системы»
- •9.3. Пример работы системы уведомления об изменениях в файловой системе
- •9.4. Задания для самостоятельной работы
- •Контрольные вопросы
- •Литература
- •214013 Г. Смоленск, Энергетический проезд, 1
9.4. Задания для самостоятельной работы
Создайте приложение, которое отслеживает изменения файловой системы и выводит на экран список измененных файлов и каталогов:
Создание, переименование и удаление файлов или каталогов.
Создание, переименование, удаление и изменение атрибутов файлов.
Создание, переименование, удаление файлов и изменение времени последней записи в файл.
Создание, переименование, удаление файлов и изменение размера файла.
Создание, переименование и удаление каталогов, а также изменение атрибутов файлов.
Изменение атрибутов файлов, времени последней записи в файл и размеров файлов.
Изменение времени последней записи в файл и .создание, удаление, изменение каталогов.
Изменение атрибутов файлов и размера файла.
Создание, переименование и удаление каталогов.
Создание, переименование и удаление файлов или каталогов в нескольких выбранных каталогах.
Создание, переименование, удаление и изменение атрибутов файлов в нескольких выбранных каталогах.
Создание, переименование, удаление файлов и изменение времени последней записи в файл в нескольких выбранных каталогах.
Создание, переименование, удаление файлов и изменение размера файла в нескольких выбранных каталогах.
Создание, переименование, удаление файлов и изменение размера файла в нескольких выбранных каталогах.
Изменение атрибутов файлов, времени последней записи в файл и размеров файлов в нескольких выбранных каталогах.
Контрольные вопросы
С помощью какой функции создается объект «уведомление об изменении файла»?
С помощью каких функций отслеживаются изменения файловой системы?
Какая функция переводит объект «уведомление об изменении файла» в занятое состояние?
Когда объект «уведомление об изменении файла» переходит в свободное состояние?
Как отследить изменения файловой системы в нескольких каталогах?
Литература
В.Г. Олифер, Н.А. Олифер Сетевые операционные системы. - СПб.: Издательство "Питер", 2008. - 544 с. ил.
Гордеев А.В. Операционные системы. Учебник для вузов.2-е изд. -СПб.: "Питер", 2007. -416 с: ил.
Рихтер Дж. Windows для профессионалов. Создание эффективных Win32-пpилoжeний с учетом специфики 64-разрядной версии Windows – СПб: Издательство "Питер" Русская редакция, 2006. 752 с:ил.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ 3
1. ЛАБОРАТОРНАЯ РАБОТА № 1 4
1.1. Цель работы 4
1.2. Теоретическое введение 4
1.2.1. Получение информации об операционной системе 4
1.2.2. Получение информации из реестра 5
1.2.3. Получение информации о системных каталогах Windows 6
1.2.4. Получение информации о диске 6
1.3. Создание приложения для получения характеристик компьютера и операционной системы 8
2. ЛАБОРАТОРНАЯ РАБОТА №2 12
2.1.Цель работы 12
2.2. Теоретическое введение 12
2.2.1. Процедуры и функции для работы с виртуальной памятью 12
2.3. Создание приложения, работающего с виртуальной памятью 19
2.4. Задание для самостоятельной работы 24
3. ЛАБОРАТОРНАЯ РАБОТА № 3 25
3.1. Цель работы 25
3.2. Пример использования механизма выделения виртуальной памяти для решения конкретных задач 25
3.3. Задания для самостоятельной работы 26
4. ЛАБОРАТОРНАЯ РАБОТА № 4 30
4.1. Цель работы 30
4. 2. Теоретическое введение 30
4.2.1 Создание или открытие объекта ядра «файла» 31
4.2.2 Создание объекта ядра «файл, проецируемый в память» 33
4.2.3 Проецирование файловых данных на адресное пространство процесса 34
4.2.4 Отмена проецирования на адресное пространство процесса объекта ядра «файл, проецируемый в память» 35
4.2.5 Закрытие объектов ядра «файл, проецируемый в память» и «файл» 36
4.3 Примеры программ, выполняющих проецирование в память 36
4.3.1 Пример 1 36
4.3.2 Пример 2 37
4.4. Задания для самостоятельной работы 38
5. ЛАБОРАТОРНАЯ РАБОТА № 5 39
5.1.Цель работы 40
5.2. Теоретическое введение 40
5.2.1. Создание процесса 40
5.2.2. Запуск внешней программы функцией WinExec 42
5.2.3. Запуск внешней программы и открытие документа функцией ShellExecute 43
При успешном выполнении функция ShellExecute возвращает целое значение, большее 32. Значение меньшее или равное 32 указывает на ошибку. Значения эти те же, что и для функции WinExec. 44
5.2.4. Создание потока 45
5.2.5. Завершение процесса 46
5.2.6. Завершение потока 47
5.2.7. Изменение класса приоритета процесса 47
5.2.8. Получение информации о классе приоритета процесса 47
5.2.9. Изменение уровня приоритета потока 48
5.2.10. Получение информации о приоритете потока 48
5.3. Примеры программ для работы с процессами и потоками 49
5.3.1. Создание процесса с помощью функции CreateProcess. 49
5.3.2. Создание процесса с помощью функции WinExec. 49
5.3.3. Создание процесса с помощью функции ShellExecute. 50
5.3.4. Создание многопоточного приложения. 50
5.4. Задания для самостоятельной работы 51
6. ЛАБОРАТОРНАЯ РАБОТА № 6 54
6.1. Цель работы 54
6.2. Теоретическое введение 54
6.2.1. Получение «мгновенного снимка» системы 54
6.2.2. Получение информации о процессах 55
6.2.3. Получение информации о потоках 57
6.2.4. Получение информации о модулях 57
6.2.5. Информация о кучах (heap) 59
6.2.6. Информация о виртуальной памяти. 60
6.2.7. Алгоритм работы функций ToolHelp 61
6.2.8. Как получить карту памяти любого процесса 61
6.3. Пример использования функций ToolHelp 63
6.4. Задания для самостоятельной работы 66
7. ЛАБОРАТОРНАЯ РАБОТА № 7 68
7.1. Цель работы 68
7.2. Теоретическое введение 68
7.2.1. Критические секции 68
7.2.2. Синхронизация с использованием объектов ядра 69
7.2.3. Wait-функции 70
7.2.4. Синхронизация с использованием процессов и потоков 71
7.2.5. Объекты Mutex 71
7.2.6. Семафоры 73
7.2.7. События 75
7.3 Примеры работы с объектами синхронизации 77
7.3.1 Пример 1 77
7.3.1 Пример 2 83
7.4. Задания для самостоятельной работы 86
8. ЛАБОРАТОРНАЯ РАБОТА № 8 90
8.1. Цель работы 90
8.2 Теоретическое введение 90
8.2.1 Создание DLL 91
8.2.2 Неявная загрузка DLL 92
8.2.3 Явная загрузка DLL 92
8.2.4 Внедрение DLL в адресное пространство другого процесса 94
8.3 Пример работы с DLL 95
8.3.1 Создание DLL, которая выполняет перехват нажатых клавиш 95
8.3.2 Разработка приложения, которое выполняет анализ и обработку нажатых клавиш. 97
8.4 Индивидуальные задания 100
9. ЛАБОРАТОРНАЯ РАБОТА № 9 105
9.1. Цель работы 105
9.2. Теоретическое введение 105
9.2.1. Принцип работы системы уведомления об изменениях в файловой системе 105
9.2.2. Функции для работы с объектом «уведомление об изменении файловой системы» 106
9.3. Пример работы системы уведомления об изменениях в файловой системе 109
9.4. Задания для самостоятельной работы 113
ЛИТЕРАТУРА 114
Учебно – методическое пособие
Малахов Владимир Викторович
Малашенкова Елена Александровна
Панкратова Елена Александровна
Семенова Ольга Всеволодовна
Программирование приложений с использованием windows API
Технический редактор М.А. Андреев
Корректор Л.И. Чурлина
Темплан издания филиала ФГБОУ ВПО «НИУ МЭИ» в г. Смоленске, 2012г., метод.
Подписано к печати 2011
Формат Тираж 25 экз. Печ.л. Усл.печ.л.
Издательский сектор филиала ФГБОУ ВПО «НИУ МЭИ» в г. Смоленске,