- •Операционные системы и их интерфейсы.
- •Графические ос
- •Речевые ос
- •Динамически подключаемые библиотеки.
- •Потоки и процессы.
- •Локальная память потока
- •Потоки в Windows.
- •Сервисы в Windows
- •7. Процессы в виндовс
- •8.Работа с сервисами виндовс
- •Синхронизация.
- •Система информационной безопасности
- •Синхронизация потоков в Windows
- •Управление безопасностью в Windows
- •3. Управляемый доступ к сети
- •13. Взаимоисключающий доступ к переменным
- •Управление пользователями
- •Управление группами
- •Структура консольного приложения
- •Работа с идентификаторами безопасности
- •19, Работа с консолью
- •20. Работа с дескрипторами безопасности
- •21. Работа с окном консоли
- •Часть III. Программирование консольных приложений
- •22. Работа со списками управления доступом на высоком уровне
- •23. Работа с буфером экрана
- •24. Работа с привилегиями
- •Ввод-вывод на консоль
- •Работа с маркерами доступа
- •Первичный маркер доступа
- •Имперсонализирующие маркер доступа
- •Передача данных
- •Работа со списками управления доступом на низком уровне
- •Работа с анонимными каналами в Windows
- •Управление безопасностью объектов на низком уровне
- •Глава 45. Управление безопасностью объектов на низком уровне 993
- •31) Работа с именованными каналами в Windows
- •32) Win32 и Win64. Программирование в среде Win64.
- •33) Работа с почтовыми ящиками в Windows
- •34) Использование файловой системы и функций символьного ввода/вывода Windows
- •35) Фреймовая обработка исключений
- •36) Усовершенствованные средства для работы с файлами и каталогами и знакомство с реестром
- •37. Финальная обработка исключений
- •38. Обработка исключений
- •39. Виртуальная память
- •40 . Управление памятью, отображение файлов и библиотеки dll
- •41. Работа с виртуальной памятью в windows
- •42.Управление процессами
- •43. Работа с кучей в Windows
- •44. Потоки и планирование выполнения
- •45. Общие концепции управления файлами
- •46. Синхронизация потоков
- •47. Работа с файлами в Windows
- •48. Влияние синхронизации на производительность и рекомендации по ее повышению
- •49) Работа с каталогами (папками) в Windows
- •50) Усовершенствованные методы синхронизации потоков
- •51) Асинхронный вызов процедур
- •52) Взаимодействие между процессами
- •53) Асинхронный доступ к данным.
- •54) Сетевое программирование с помощью сокетов Windows
- •55)Порты завершения
- •57)Работа с ожидающим таймером
- •58)Асинхронный ввод/вывод и порты завершения
- •Порты завершения ввода-вывода
- •59)Отображение файлов в память.
- •Достоинства метода. Альтернативой отображению может служить прямое чтение файла или запись в файл. Такой способ работы менее удобен по следующим причинам:
- •60)Безопасность объектов Windows
- •Операционные системы и их интерфейсы.
49) Работа с каталогами (папками) в Windows
Для создания каталога используется функция CreateDirectory, которая имеет следующий прототип:
BOOL CreateDirectory(
LPCTSTR lpPathName, // имя каталога
LPSECUTITY_ATTRIBUTES IpSecurutyAttributes // атрибуты защиты
В случае успешного завершения функция возвращает ненулевое значение, а в случае неудачи — false. В параметре lpPathName задается указатель на символьную строку, которая содержит имя создаваемого каталога, а параметр IpSecurutyAttributes задает атрибуты безопасности этого каталога. После создания каталога можно получить его дескриптор, используя для этого функцию CreateFile С установленным флагом FILE_FLAG_BACKUP_SEMANTICS.
Для создания подкаталогов можно использовать функцию CreateDirectoryEx, которая позволяет наследовать атрибуты другого каталога, который в этом случае называется шаблонным каталогом.
Поиск файлов в каталоге. Для поиска файлов, находящихся в каталоге, используются функции FindFirstFile И FindNextFile. Причем функция FindFirstFile Находит первый файл, имя которого удовлетворяет образцу поиска, а функция FindNextFile находит последующие такие файлы.
Удаление каталога . Для удаления пустого каталога Предназначена функция RemoveDdirectory, которая имеет следующий прототип:
BOOL RemoveDirectory (
LPCTSTR lpPathName // имя каталога);
Перемещение каталога . Так же как и файлы, каталоги можно перемещать при помощи функции MoveFile. В этом случае на исполнение функции MoveFile накладывается одно ограничение, которое заключается в том, что можно перемещать только каталоги, которые находятся на одном томе
50) Усовершенствованные методы синхронизации потоков
Синхронизация процессов — это есть достижение некоторого фиксированного соотношения (порядка) между сигналами, которыми обмениваются эти процессы. Теперь можно дать определение синхронизации, которое является более естественным для практики программирования. Под синхронизацией потоков понимается исполнение этими потоками условных непрерывных действий. Рассмотрим частные случаи синхронизации, которые наиболее часто встречаются на практике. Если оператор await имеет следующий вид:
await(логическое условие); то он просто ждет оповещения о выполнении некоторого логического условия. Этот случай называется условной синхронизацией, а само логическое условие также называется событием. В этом случае часто говорят, что оператор await ждет наступления некоторого события.
Если оператор await имеет вид:
await(TRUE) действие; то происходит безусловное выполнение непрерывного действия. Этот случай называется взаимным исключением, а программный код, исполняемый внутри непрерывного действия, называется критической секцией.
В операционных системах Windows объектами синхронизации называются объекты ядра, которые могут находиться в одном из двух состояний: сигнальном (signaled) и несигнальном (nonsignaled). Объекты синхронизации могут быть разбиты на четыре класса.
К первому классу относятся собственно объекты синхронизации, т. е. те, которые служат только для решения задач синхронизации параллельных потоков. К таким объектам синхронизации в Windows относятся:
□ мьютекс (mutex);
□ событие (event);
□ семафор (semaphore).
Ко второму классу объектов синхронизации относится ожидающий таймер (waitable timer), который переходит в сигнальное состояние по истечении заданного интервала времени.
К третьему классу синхронизации относятся объекты, которые переходят в сигнальное состояние по завершении своей работы:
К четвертому классу относятся объекты синхронизации, которые переходят в сигнальное состояние после получения сообщения об изменении содержимого объекта. К ним относятся:
□ изменение состояния каталога (change notification);
□ консольный ввод (console input).
