![](/user_photo/2706_HbeT2.jpg)
- •Введение
- •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
5.4. Задания для самостоятельной работы
Программа, выполняющая запуск любого процесса и изменяющая приоритет данного процесса.
Программа, выполняющая запуск любого процесса и завершение данного процесса по команде пользователя.
Создание двух программ. Первая программа выводит на экран случайные числа. Вторая программа запускает первую как процесс и завершает работу первой программы при нажатии управляющей клавиши.
Программа выводит на экран содержимое каталога. При выборе любого файла последний запускается на выполнение при помощи функции CreateProcess (при условии, что выбран исполняемый файл).
Программа выводит на экран содержимое каталога. При выборе любого текстового файла при помощи функции CreateProcess запускается блокнот или редактор Write и открывается выбранный файл.
Создание многопоточной программы. Вторичный поток создается при нажатии управляющей клавиши и выводит на экран последовательность четных чисел. Работа вторичного потока завершается при нажатии управляющей клавиши.
Создание программы, имеющей три потока. Каждый поток рисует в своем окне соответственно эллипс, прямоугольник и текстовую строку.
Создание программы, имеющей несколько потоков. Вторичные потоки создаются и завершаются по команде пользователя. Первичный поток выводит на экран время создания, завершения и работы каждого вторичного потока.
Создание программы, имеющей два потока. Вторичный поток выполняет любые циклические вычисления и завершается по команде пользователя. Первичный поток выводит на экран промежуточные результаты вычислений, выполняемых вторичным потоком.
Создание многопоточной программы. Первичный поток считывает из текстового файла в буфер очередную порцию данных, вторичный поток подсчитывает число символов латинского алфавита в буфере. Затем первичный поток считывает следующую порцию данных в буфер и т.д.
Создание двух приложений. Первое приложение запускает второе приложение и прекращает его работу через определенный интервал времени (временной интервал указывается). Второе приложение выполняет вычисления по формуле 1 – x2/ 2! + x4/4! + …+ (-1)n x2n/(2n)! и записывает все промежуточные результаты вычислений в файл. После завершение работы второго приложения, первое выводит итоговое значение.
Создание двух приложений. Первое приложение запускает второе приложение и проверяет, когда работа второго приложения будет завершена. Второе приложение вводит значения переменной х и формулу, по которой рассчитывается функция f(x), данные записываются в файл. Первое приложение после завершения второго приложения строит график функции f(x).
Создание двух приложений. Первое приложение запускает второе приложение и проверяет, когда работа второго приложения будет завершена. Второе приложение записывает в файл текст. Первое приложение после завершения второго приложения подсчитывает число строк в тексте.
Создание нескольких приложений. Одно из них рисует окружности, другое эллипсы, третье прямоугольники. Четвертое приложение запускает три предыдущих и завершает работу любого.
Создание нескольких приложений. Одно из них рисует окружности, другое эллипсы, третье прямоугольники. Четвертое приложение запускает три предыдущих и изменяет приоритет любого процесса.
Создание многопоточной программы. Первый поток вводит некоторую формулу, второй поток проверяет правильность расстановки скобок в формуле.
Создание многопоточной программы. Первый поток вводит некоторый текст, второй поток подсчитывает количество предложений в тексте.
Создание двух приложений. Первое приложение записывает в файл содержимое выбранного каталога и завершает свою работу. Второе приложение ожидает, когда завершится работа первого приложения и выводит на экран содержимое каталога.
Создание двух приложений. Первое приложение записывает любой текст в файл, проецируемый в память, и завершает свою работу. Второе приложение ожидает завершения работы первого приложения и подсчитывает число слов в данном файле, проецируемом в память.
Создание двух приложений. Первое приложение записывает любой текст в файл, проецируемый в память, и завершает свою работу. Второе приложение ожидает завершения работы первого приложения и удаляет все пробелы из данного файла.