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


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

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

Синтаксис

HANDLE CreateJobObjectA(
  [in, optional] LPSECURITY_ATTRIBUTES lpJobAttributes,
  [in, optional] LPCSTR                lpName
);

Параметры

[in, optional] lpJobAttributes

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

[in, optional] lpName

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

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

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

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

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

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

Если функция выполнена успешно, возвращаемое значение является дескриптором объекта задания. Дескриптор имеет право доступа 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 [только классические приложения]
целевая платформа Виндоус
заголовка winbase.h (включая Windows.h, Jobapi2.h)
библиотеки Kernel32.lib
DLL Kernel32.dll

См. также

AssignProcessToJobObject

CloseHandle

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

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

QueryInformationJobObject

SECURITY_ATTRIBUTES

SetInformationJobObject