Поделиться через


Функция CreateJobObjectW (jobapi2.h)

Создает или открывает объект задания.

Синтаксис

HANDLE CreateJobObjectW(
  [in, optional] LPSECURITY_ATTRIBUTES lpJobAttributes,
  [in, optional] LPCWSTR               lpName
);

Параметры

[in, optional] lpJobAttributes

Указатель на структуру SECURITY_ATTRIBUTES , которая задает дескриптор безопасности для объекта задания и определяет, могут ли дочерние процессы наследовать возвращаемый дескриптор. Если lpJobAttributes имеет значение NULL, объект задания получает дескриптор безопасности по умолчанию и дескриптор не может быть унаследован. Списки управления доступом в дескрипторе безопасности по умолчанию для объекта задания поступают из основного маркера или маркера олицетворения создателя.

[in, optional] lpName

Имя задания. Имя ограничено MAX_PATH символами. При сравнении имен учитывается регистр.

Если lpName имеет значение NULL, задание создается без имени.

Если lpName соответствует имени существующего события, семафора, мьютекса, таймера ожидания или объекта сопоставления файлов, функция завершается сбоем и функция GetLastError возвращает ERROR_INVALID_HANDLE. Это происходит потому, что эти объекты используют одно и то же пространство имен.

Объект можно создать в частном пространстве имен. Дополнительные сведения см. в разделе Пространства имен объектов.

Службы терминалов: Имя может иметь префикс "Global\" или "Local\" для явного создания объекта в глобальном пространстве имен или пространстве имен сеанса. Оставшаяся часть имени может содержать любой символ, кроме символа обратной косой черты (\). Дополнительные сведения см. в разделе Пространства имен объектов ядра.

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

Если функция выполняется успешно, возвращаемое значение является дескриптором для объекта задания. Дескриптор имеет право доступа JOB_OBJECT_ALL_ACCESS . Если объект существовал до вызова функции, функция возвращает дескриптор существующему объекту задания, а GetLastError возвращает ERROR_ALREADY_EXISTS.

Если функция завершается сбоем, возвращается значение NULL. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

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

Все процессы, связанные с заданием, должны выполняться в одном сеансе. Задание связано с сеансом первого процесса, назначаемого заданию.

Windows Server 2003 и Windows XP: Задание связано с сеансом процесса, который его создал.

Чтобы закрыть дескриптор объекта задания, используйте функцию CloseHandle . Задание уничтожается при закрытии последнего дескриптора и выходе всех связанных процессов. Однако если в задании указан флаг JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE , закрытие последнего дескриптора объекта задания завершает все связанные процессы, а затем уничтожает сам объект задания.

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

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header jobapi2.h (включая Windows.h, Jobapi2.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

AssignProcessToJobObject

CloseHandle

Объекты заданий

Функции процессов и потоков

QueryInformationJobObject

SECURITY_ATTRIBUTES

SetInformationJobObject