Функция CreateJobObjectA (winbase.h)

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

Синтаксис

HANDLE CreateJobObjectA(
  [in, optional] LPSECURITY_ATTRIBUTES lpJobAttributes,
  [in, optional] LPCSTR                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 winbase.h (включая Windows.h, Jobapi2.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

AssignProcessToJobObject

CloseHandle

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

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

QueryInformationJobObject

SECURITY_ATTRIBUTES

SetInformationJobObject