Функция AssignProcessToJobObject


Функция AssignProcessToJobObject связывает процесс с существующим объектом задания.

Синтаксис

BOOL AssignProcessToJobObject(
  HANDLE hJob,     // дескриптор задания
  HANDLE hProcess  // дескриптор процесса
);

Параметры

hJob

[in] Дескриптор объекта задания, с которым процесс должен быть связан. Функция CreateJobObject или OpenJobObject возвращает этот дескриптор. Дескриптор должен иметь право доступа JOB_OBJECT_ASSIGN_PROCESS. Для получения дополнительной информации, см. статью Защита объекта задания и права доступа.

hProcess

[in] Дескриптор процесса, который связан с объектом задания. Процесс ранее не должен быть назначен заданию. Дескриптор должен иметь права доступа PROCESS_SET_QUOTA и PROCESS_TERMINATE. Для получения дополнительной информации, см. статью Защита процесса и права доступа.

Обслуживание терминала: Все процессы в пределах задания должны запускаться в пределах того же самого сеанса.

Возвращаемые значения

Если функция завершается успешно, величина возвращаемого значения - не ноль.

Если функция завершается с ошибкой, величина возвращаемого значения - ноль. Чтобы получать дополнительные данные об ошибках, вызовите GetLastError.

Замечания

После того, как Вы связываете процесс с объектом задания, используя функцию AssignProcessToJobObject, процесс подчиняется набору ограничений для задания. Чтобы устанавливать ограничения для задания, используйте функцию SetInformationJobObject.

Если задание имеет регламент непривилегированного (пользовательского) режима и регламент был исчерпан, функция AssignProcessToJobObject завершается ошибкой и заданный процесс завершает работу. Если регламент нарушен связанным процессом, AssignProcessToJobObject все еще завершается успешно. Однако о нарушении регламента должен быть отчет. Если задание имеет ограничение активного процесса, и это ограничение было нарушено связанным с ним процессом, функция AssignProcessToJobObject завершается ошибкой, а заданный процесс завершает работу.

Операции с памятью, выполненные процессом, связанным с заданием, которое имеет ограничение памяти, подчинены ограничению памяти. Операции с памятью, выполненные процессом прежде, чем он был связан с заданием, функцией AssignProcessToJobObject не рассматриваются.

Если процесс еще не выполняется, а задание имеет ограничения системы безопасности, функция AssignProcessToJobObject может завершаться ошибкой. Например, если первичный маркер процесса содержит локальную группу администраторов, но объект задания имеет ограничение системы безопасности JOB_OBJECT_SECURITY_NO_ADMIN, функция завершается ошибкой. Если задание имеет ограничение системы безопасности JOB_OBJECT_SECURITY_ONLY_TOKEN, процесс должен быть создан приостановленным. Чтобы создать приостановленный процесс, вызовите функцию CreateProcess с флажком CREATE_SUSPENDED.

Процесс может быть связан только с единственным заданием. Процесс наследует ограничения задания, с которым он связан и добавляет свою поясняющую информацию к заданию. Если процесс связан с заданием, все процессы, которые он создает, связываются с этим заданием по умолчанию. Чтобы создать процесс, который не является частью того же самого задания, вызовите функцию CreateProcess с флажком CREATE_BREAKAWAY_FROM_JOB.

Чтобы компилировать приложение, которое использует эту функцию, определите макрокоманду _WIN32_WINNT как 0x0500 или позже. Для получения дополнительной информации, см. статью Использование заголовков SDK.

Смотри также

Краткий обзор Процессы и потоки, Функции, используемые процессами и потоками, CreateJobObject, CreateProcess, OpenJobObject, SetInformationJobObject

Размещение и совместимость AssignProcessToJobObject

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Нет

Windows Me

Нет

Windows 98

Нет

Windows 95

Нет

Используемая библиотека

Kernel32.lib

Заголовочный файл

 

- объявлено в

Winbase.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz