
- •Операционные системы и их интерфейсы.
- •Графические ос
- •Речевые ос
- •Динамически подключаемые библиотеки.
- •Потоки и процессы.
- •Локальная память потока
- •Потоки в 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
- •Операционные системы и их интерфейсы.
19, Работа с консолью
Процесс может быть связан только с одной консолью. Новая консоль может создаваться одним из следующих двух способов. Первый способ заключается в том, что при создании консольного процесса КОМанДОЙ CreateProcess Нужно установить флаг CREATE_NEW_CONSOLE. Отметим, что в этом случае, если консольный процесс создается из консольного приложения, а указанный флаг не установлен, то новый процесс присоединяется к консоли родительского процесса.
Второй способ заключается в использовании функции AiiocConsole, которая имеет следующий прототип:
BOOL AiiocConsole(VOID);
Эта функция возвращает ненулевое значение, если консоль создана успешно, и false — в противном случае. В обоих этих случаях заголовок окна консоли, его параметры, а также цвет фона и цвет текста задаются следующими полями структуры startupinfo:
□ lpTitie — заголовок окна консоли;
□ dwx, dwY — позиция левого угла окна консоли;
□ dwXSize, dwYSize — размеры ОКНа;
□ dwXCountChars, dwYCountChars — размеры буфера экрана;
□ dwFiiiAttributes — цвет фона и цвет текста;
□ wshowwindow — способ отображения окна при запуске приложения.
Все эти параметры используются при запуске процесса только в случае, если в поле dwFiags этой же структуры установлены следующие управляющие флаги:
□ STARTF_USEPOSITION — ИСПОЛЬЗОВаТЬ ПОЛЯ dwX, dwY;
□ STARTF_USESIZE — ИСПОЛЬЗОВаТЬ ПОЛЯ dwXSize, dwYSize*,
□ STARTF_USECOUNTCHARS — ИСПОЛЬЗОВаТЬ ПОЛЯ dwXCountChars, dwYCountCharsJ
□ STARTF_USEFILLATTRIBUTE — ИСПОЛЬЗОВаТЬ ПОЛе dwFillAttributes;
□ STARTF_USESHOWWINDOW — ИСПОЛЬЗОВаТЬ ПОЛе wShowWindow.
В противном случае значения этих полей игнорируются. Отметим, что в операционной системе Windows 98 при создании новой консоли используется только значение поля ipTitie, а остальные атрибуты консоли используются по умолчанию (например, черный цвет фона и белый цвет текста).
20. Работа с дескрипторами безопасности
Каждый охраняемый объект в операционных системах Windows имеет дескриптор безопасности, который используется операционной системой для ограничения доступа к этому объекту.
Дескриптор безопасности может храниться в двух форматах: абсолютном и относительном. В обоих случаях дескриптор безопасности описывается структурой типа:
typedef struct _SECURITY_DESCRIPTOR {
BYTE Revision; // версия
BYTE Sbzl; // 0 для выравнивания на границу 16 бит
SECURITY_DESCRIPTOR_CONTROL Control; // управляющие флаги
PSID Owner; // указатель на SID владельца объекта
PSID Group; // указатель на SID первичной группы владельца
PACL Sacl; // указатель на список SACL
PACL Dacl; // указатель на список DACL
} SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
Тип security_descriptor_control определяется следующим образом:
typede f WORD SECURITY_DESCRIPTOR_CONTROL;
To есть является символическим именем типа word, который определяет слово памяти. В этом слове могут устанавливаться следующие флаги, управляющие состоянием дескриптора безопасности:
□ se_owner_defaulted — владелец задан по умолчанию;
□ se_group_defaulted — первичная фуппа владельца задана по умолчанию;
□ se_dacl_present — присутствует список DACL;
□ se_dacl_defaulted — список DACL задан по умолчанию;
□ se_sacl_present — присутствует список SACL;
□ se_sacl_defaulted — список SACL задан по умолчанию;
□ se_self_relative — дескриптор безопасности в относительной форме.
Кроме того, начиная с версии Windows 2000, в дескрипторе безопасности могут быть установлены следующие флаги:
□ se_dacl_auto_inherited — DACL установлен механизмом наследования;
□ se_sacl_auto_inherited — SACL установлен механизмом наследования;
□ se_dacl_protected — DACL защищен от наследования;
□ se_sacl_protected — SACL защищен от наследования.
Различие между абсолютным и относительным форматами дескриптора безопасности заключается в том, что в случае абсолютного формата дескриптор безопасности содержит только указатели на данные, которые описывают ограничения на доступ к объекту, а не сами данные. А при относительном формате дескриптор безопасности также содержит и данные, которые описывают ограничения доступа. Эти данные хранятся вслед за структурой в одном буфере, хотя порядок хранения этих данных не определен. В случае абсолютного формата структура типа security_descriptor также содержит адреса данных, но сами данные могут храниться в любой области памяти. Таким образом, можно сказать, что дескриптор безопасности в относительном формате содержит как указатели на данные, так и сами данные, а дескриптор безопасности в абсолютном формате содержит только адреса данных.