Как получить объект задания (если есть) для моего текущего процесса? - PullRequest
7 голосов
/ 18 марта 2011

В контексте Windows Объекты заданий , как я могу получить объект задания для текущего процесса (если он находится в объекте задания)?Функция IsProcessInJob позволяет мне проверить, находится ли данный процесс (например, текущий) в заданном (или любом) задании - но он не дает дескриптор соответствующего задания.

1 Ответ

13 голосов
/ 19 марта 2011

Если вы просто хотите узнать, под какими квотами / лимитами вы работаете, или перечислить все другие процессы в задании, вам не нужно получать объект Job для текущего процесса.

Вы можете вызвать QueryInformationJobObject с NULL, который будет объектом Job текущего процесса.

Чтобы ответить на конкретный вопрос, позвоните IsProcessInJob, чтобы узнать, если выв работе.

Вы можете узнать все о Задании, передав NULL QueryInformationJobObject

Ваши дочерние процессы автоматически унаследуют вашу работу, если вы не передадите CREATE_BREAKAWAY_FROM_JOB и задание имеет JOB_OBJECT_LIMIT_BREAKAWAY_OK или JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK установлено.В этих случаях вы можете назначить процесс новой работе, если хотите.

Поэтому, не зная дескриптора, вы можете узнать все о вашей текущей работе и назначить дочерние процессы в рамках текущей работы, или если выесть разрешение, без текущей работы.Т.е. вы можете делать почти все, что позволяет делать дескриптор.

Единственное исключение - дублировать его на другой процесс.Если вам нужно сделать это, вам нужно будет, чтобы родительский процесс как-то сообщал вам значение дескриптора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...