Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpora_po_sp.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
308.78 Кб
Скачать

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 также содержит адреса данных, но сами данные могут храниться в любой области памяти. Таким образом, можно сказать, что дескриптор безопасности в относительном формате содержит как указатели на данные, так и сами данные, а дескриптор безопасности в абсолютном формате содержит только адреса данных.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]