Функция
AssignProcessToJobObjectФункция
AssignProcessToJobObject связывает процесс с существующим объектом задания.
AssignProcessToJobObject( HANDLE hJob, // дескриптор задания HANDLE hProcess // дескриптор процесса );BOOL |
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 |
Нет |
Замечания по платформе |
Не имеется |