Функция 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 |