Тема курсовой работы: "Программная реализация средствами ОС Windows :".
Цель - знакомство с принципами работы Windows API.
Среда разработки курсовой работы - любой компилятор C/C++ для ОС Windows версии 2000 или выше.
Отчет о выполнении курсовой работы из двух частей: программная система (включая исходные тексты) и пояснительная записка. Пояснительная записка должна быть представлена в печатном и электронном вариантах.
Реферат (1 страница) содержит информацию про объем пояснительной записки, количество иллюстраций, таблиц, приложений и литературных источников. Кроме того, реферат должен содержать сведения про объект исследования, цель исследования, результаты и выводы, список ключевых слов.
Содержание создавать автоматически, используя возможности текстового процессора.
Введение: область использования.
Теоретическая часть состоит из одного или нескольких разделов, где описываются алгоритмы, программные комплексы, функции библиотек, возможности и функции среды разработки, используемых при создании курсовой работы.
Практическая часть состоит из одного или нескольких разделов, описывающих процесс реализации алгоритма и создание программной системы.
В заключении необходимо указать функциональные возможности созданной програмной системы, возможные достоинства и недостатки Windows API, повлиявшие на программную реализацию решения вашей проблемы.
Список использованых источников создается по общим правилам. Разрешено использовать ссылки на internet ресурсы в виде: URL: https:///www.example.com.
Приложения содержат программный код, блок-схемы, результаты тестирования, и т. д.
Курсовая состоит из теоретической части (реферат) и практической части (программа).
Номер варианта | Теоретическая часть | Практическая часть |
---|---|---|
1 | Объекты ядра: наследование; права доступа; дескрипторы безопасности. | Заставьте консольный процесс запустить несколько своих копий (и далее рекурсивно). Убедитесь, что порождение процессов не будет бесконечным (остановитесь на 4 уровнях максимум). Перенаправьте консольный вывод в файл и заставьте все дочерние процессы наследовать дескриптор этого файла. |
2 | Потоки: порождение; работа с TLS; передача сообщений между потоками; критические секции кода. | Запустить 10 потоков, передав каждому потоку в качестве параметра его номер в коллективе потоков. Каждый поток должен вывести свой номер. Зарегистрировать критическую секцию в главном потоке программы, использовать ее для обрамления секции кода. |
3 | Динамические библиотеки: экспорт/импорт функций; работа с TLS. | Описать точку входа в DLL. Описать несколько функций для экспорта из DLL. Зарезервировать TLS-слот и использовать в вашей DLL для хранения приватных данных потока. В программе-примере импортировать функции из DLL статически и динамически. |
4 | Обработка исключительных ситуаций; исследование информации о состоянии процесса. | Создать оболочку последней линии обороны вокруг всех функций потоков (для исследования предсмертной информации о процессе). Искусственно породить в программе недопустимую операцию, перехватить ее и вывести на печать содержимое регистров программы. |
5 | Кучи: создание; сериализация доступа; оптимизация. | Описать набор функций для работы со списками. Память для объектов каждого списка выделять динамически из приватной кучи без упорядочения обращений. |
6 | Виртуальная память: регионы, резервирование, права доступа. | Исследовать адресное пространство процесса, определить местонахождение динамически загруженных библиотек, куч, стеков. |
7 | Потоки: порождение, синхронизация, семафоры и мутексы. | Создать объект ядра событие. Запустить 10 потоков, передав каждому потоку в качестве параметра его номер в коллективе потоков. Каждый поток должен выполнить свою часть работы. Процесс должен ожидать завершения всех 10 потоков. |
8 | Процессы: порождение; наследование дескрипторов; синхронизация между процессами. | Заставьте консольный процесс запустить несколько своих копий (и далее рекурсивно). Убедитесь, что порождение процессов не будет бесконечным (остановитесь на 4 уровнях максимум). Для каждого процесса создать свое окно консоли с индивидуальными настройками. |
9 | Общесистемные ловушки: регистрация; наблюдение; подмена сообщений. | Зарегистрировать ловушку для всех оконных сообщений в системе. Выводить на печать информацию о сообщениях. Корректно завершить процесс наблюдения и убрать ловушку при закрытии программы. |
10 | Проецирование файлов в память. Применение проекций файлов для разделения данных между процессами. | Поменять местами две половины большого двоичного файла используя двойное проецирование в память для представления файла. |
11 | Совместное использование регионов памяти несколькими процессами. | Разделить регион между двумя процессами с помощью проецирования; синхронизировать с помощью семафора процесс обновления данных в регионе. |
12 | Динамические библиотеки: экспорт/импорт функций; работа с TLS. | Описать точку входа в DLL. Описать несколько функций для экспорта из DLL. Зарезервировать TLS-слот и использовать в вашей DLL для хранения приватных данных потока. В программе-примере организовать отложенный (ленивый) импорт функций из DLL по первому запросу программы. |
Архив с примерами использования (необходимо приспособить (переделать) для своих целей).