
- •Операционные системы и их интерфейсы.
- •Графические ос
- •Речевые ос
- •Динамически подключаемые библиотеки.
- •Потоки и процессы.
- •Локальная память потока
- •Потоки в 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
- •Операционные системы и их интерфейсы.
Работа с анонимными каналами в Windows
Анонимным каналом называется объект ядра операционной системы, который обеспечивает передачу данных между процессами, выполняющимися на одном компьютере. Процесс, который создает анонимный канал, называется сервером анонимного канала. Процессы, которые связываются с анонимным каналом, называются клиентами анонимного канала. Другими словами можно сказать, что анонимный — это такой канал передачи данных между процессами, который не имеет имени. Следовательно, доступ к такому каналу имеют только родительский процесс-сервер и дочерние процессы-клиенты этого канала. Перечислим характеристики анонимных каналов, которые необходимо учитывать при их использовании для обмена данными между параллельными процессами:
□ не имеют имени;
□ полудуплексные;
□ передача данных потоком;
□ синхронный обмен данными;
□ возможность моделирования любой топологии связей.
Анонимные каналы создаются процессом-сервером при помощи функции createPipe, которая имеет следующий прототип:
BOOL CreatePipe(
PHANDLE hReadHandle, // дескриптор для чтения из канала
PHANDLE hWriteHandle, // дескриптор для записи в канал
LPSEOTRITY_ATTRIBUTES lpPipeAttributes, II атрибуты защиты
DWORD dwSize // размер буфера в байтах
);
При удачном завершении функция CreatePipe возвращает ненулевое значение, а в случае неудачи — false. Рассмотрим кратко назначение параметров этой функции.Так как анонимные каналы не имеют имени, то для соединения процесса- клиента с таким каналом необходимо передать ему один из дескрипторов анонимного канала. При этом передаваемый дескриптор должен быть наследуемым, а сам процесс-клиент должен быть дочерним процессом процесса сервера анонимного канала и наследовать наследуемые дескрипторы процесса-сервера. Наследование дескрипторов анонимного канала определяется значением поля binheritHandie в структуре типа security_attributes, на которую указывает параметр IpPipeAttributes функции CreatePipe. ЕСЛИ значение ЭТОГО ПОЛЯ, которое имеет тип bool, равно true, to дескрипторы анонимного канала создаются наследуемыми, в противном случае — дескрипторы создаются ненаследуемыми.Для обмена данными по анонимному каналу в операционных системах Windows используются те же функции, что для записи/чтения данных в файл. Для записи данных в анонимный канал используется функция writeFile, которая имеет следующий прототип:
BOOL WriteFile(
HANDLE hAnonymousPipe, // дескриптор анонимного канала
LPCVOID lpBuffer, // буфер данных
DWORD dwNumberOfBytesToWrite, // количество байтов для записи
LPDWORD lpNumberOfBytesWritten, // количество записанных байтов
LPOVERLAPPED lpOverlapped // асинхронный ввод
);
Функция WriteFile записывает в анонимный канал количество байтов, заданных параметром dwNumberOfBytesToWrite, из буфера данных, на который указывает параметр lpBuffer.