我如何获得当前stream程的作业对象(如果有的话)?

在Windows 作业对象的上下文中,如何获取当前进程的作业对象(如果它在作业对象中)? IsProcessInJob函数让我testing给定的进程(例如当前的进程)是否在给定的(或任何)作业中,但是不会产生匹配作业的句柄。

如果您只想找出正在运行的配额/限制,或枚举作业中的所有其他进程,则不需要获取当前进程的Job对象。

您可以使用NULL调用QueryInformationJobObject ,它将成为当前进程的Job对象。

  • QueryInformationJobObject: http : //msdn.microsoft.com/en-us/library/ms684925( VS.85) .aspx
  • 作业对象: http : //msdn.microsoft.com/en-us/library/ms684161(VS.85).aspx

要回答具体问题,请致电IsProcessInJob查找您是否在工作中。

您可以通过将NULL传递给QueryInformationJobObject来找出有关作业的所有信息

您的子进程将自动继承您的作业,除非您传递了CREATE_BREAKAWAY_FROM_JOB 并且该作业已设置了JOB_OBJECT_LIMIT_BREAKAWAY_OKJOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK 。 在这些情况下,您可以根据需要将流程分配给新的工作。

因此,如果不知道句柄,就可以找出关于当前作业的所有信息,并在当前作业中分配子过程,或者如果您有权限,则不需要当前作业。 也就是说,你几乎可以处理句柄允许你做的所有事情。

唯一的例外是复制到另一个兄弟进程。 如果你需要这样做,你必须让父进程以某种方式向你传递句柄值。