在Windows 作业对象的上下文中,如何获取当前进程的作业对象(如果它在作业对象中)? IsProcessInJob函数让我testing给定的进程(例如当前的进程)是否在给定的(或任何)作业中,但是不会产生匹配作业的句柄。
如果您只想找出正在运行的配额/限制,或枚举作业中的所有其他进程,则不需要获取当前进程的Job对象。
您可以使用NULL调用QueryInformationJobObject
,它将成为当前进程的Job对象。
要回答具体问题,请致电IsProcessInJob
查找您是否在工作中。
您可以通过将NULL传递给QueryInformationJobObject
来找出有关作业的所有信息
您的子进程将自动继承您的作业,除非您传递了CREATE_BREAKAWAY_FROM_JOB
并且该作业已设置了JOB_OBJECT_LIMIT_BREAKAWAY_OK
或JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK
。 在这些情况下,您可以根据需要将流程分配给新的工作。
因此,如果不知道句柄,就可以找出关于当前作业的所有信息,并在当前作业中分配子过程,或者如果您有权限,则不需要当前作业。 也就是说,你几乎可以处理句柄允许你做的所有事情。
唯一的例外是复制到另一个兄弟进程。 如果你需要这样做,你必须让父进程以某种方式向你传递句柄值。