Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows


Определение ограничений, налагаемых на процессы в задании - часть 5


{
JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation;
IO_COUNTERS Iolnfo;
SIZE_T Proces&MemoryLimit;
SIZE_T JobMemoryLimit;
SIZE_T PeakProcessMemoryUsed;
SIZE_T PeakJobMemoryUsed;
} JOBOBJECT_EXTENDED_LIMIT_INFORHATION, *PJOBOBJECT_EXTENDED LIMIT_INFORMATION;

Как видите, она включает структуру JOBOBJECT_BASIC_LIMIT_INFORMATION, яв ляясь фактически ее надстройкой, Это несколько странная структура, потому что в ней есть элементы, не имеющие никакого отношения к определению ограничений для задания. Во-первых, элемент IoInfo зарезервирован, и Вы ни в коем случае не дол жны обращаться к нему. О том, как узнать значение счетчика ввода-вывода, я расска жу позже Кроме того, элементы PeakProcessMemoryUsed и PeakJobMemoryUsed пред назначены только для чтения и сообщают о максимальном объеме памяти, передан ной соответственно одному из процессов или всем процессам в задании.

Остальные два элемента, ProcessMemoryLimit и JobMemoryLimit, ограничивают со ответственно объем переданной памяти, который может быть использован одним из процессов или всеми процессами в задании Чтобы задать любое из этих ограниче ний, укажите в элементе LimitFlags флаг JOB_OBJECT_LIMIT_JOB_MEMORY или JOB_OB JECT_LIMIT_PROCESS_MEMORY.

А теперь вернемся к прочим ограничениям, которые можно налагять на задания. Структура JOBOBJECT_BASIC_UI_RESTRICTIONS выглядит так:

typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS
{
DWORD UIRestrictionsClass;
} JOBOBJECT_BASIC_UI_RESTRICTIONS, *PJOBOBJECT_BASIC_UI_RESTRICTIONS;

В этой структуре всего один элемент, UIRestrictionsClass, который содержит набор битовых флагов, кратко описанных н таблице 5-2.

Флаг

Описание

JOB_OBJECT_UILIMIT_EXITWINDOWS

Запрещает выдачу команд из процессов на выход из системы, завершение ее работы, перезагрузку или выключение компьютера через функцию ExitWindowsEx

JOB_OBJECT_UILIMIT_READCLIPBOARD

Запрещает процессам чтение из буфера обмена

JOB_OBJECT_UILIMIT_WRITECLIPBOARD

Запрещает процессам стирание буфера обмена

JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS

Запрещает процессам изменение системных параметров через SystemParametersInfo

JOB_OBJECT_UILIMIT DISPLAYSETTINGS

Запрещает процессам изменение параметров экрана через ChangeDisplaySettings

JOB_OBJECT_UILIMIT_GLOBALATOMS

Предоставляет заданию отдельную глобаль ную таблицу атомарного доступа (global atom table) и разрешает его процессам пользоваться только этой таблицей

JOB_OBJECT_UILIM1T_DESKTOP

Запрещает процессам создание новых рабочих столов или переключение между ними через функции CreateDesktop или SwitchDesktop

JOB_OBJECT_UILIMIT HANDLES

Запрещает процессам в задании использо вать USER-объекты (например, HWND), созданные внешними по отношению к этому заданию процессами

<


Начало  Назад  Вперед