2011-03-18 50 views
6

在Windows Job Objects的情況下,我怎麼能得到當前進程的作業對象(如果它是在一個作業對象)?該IsProcessInJob功能讓我測試一個給定的進程(例如當前的)是否是在給定的(或有)的工作 - 但它不會產生匹配作業的句柄。如何獲得當前流程的作業對象(如果有)?

+0

我對此一無所知,但我認爲這個鏈接可能很有用http://msdn.microsoft.com/en-us/library/cc907078%28v=vs.85%29.aspx – user606723 2011-03-18 14:48:01

+0

它看起來很像就像沒有記錄的方法來做到這一點。您可以枚舉屬於特定作業的所有進程,但無法列舉所有作業。有沒有記錄的方法,雖然... – Luke 2011-03-18 21:39:11

+0

@Luke:未記錄的方法?一定要告訴! :-) – 2011-03-23 12:38:46

回答

11

如果你只是想找出你是下運行什麼配額/限制,或列舉在任務中的所有其他進程,你不需要把工作對象當前進程。

你可以叫QueryInformationJobObject用NULL,這將是當前進程的工作對象。

要回答的具體問題,請致電IsProcessInJob發現,如果你是在工作。

您可以通過NULL傳遞給QueryInformationJobObject

你的子進程會自動繼承你的工作,除非你通過CREATE_BREAKAWAY_FROM_JOB工作具有JOB_OBJECT_LIMIT_BREAKAWAY_OKJOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK設置找出有關工作的一切。在這些情況下,如果您願意,您可以將流程分配給新工作。

所以不知道手柄,你可以找到所有關於你目前的工作,以及當前任務中分配的子進程,或者如果你有權限,而目前的工作。即你幾乎可以完成句柄允許你做的所有事情。

唯一的例外是它複製到其他兄弟進程。如果你需要這樣做,你必須讓父進程以某種方式向你傳遞句柄值。

+0

不完全;我想開始一個子流程,如果我自己在一個工作對象中運行,我想將子流程分配給我當前的工作。爲此,我需要掌握我目前的工作。 – 2011-03-23 12:39:32

+1

您的子流程將繼承當前作業。你不需要分配它。這是自動發生的,你不需要做任何事情來實現這一點。 – Ben 2011-03-23 17:47:46

+0

的確,我的評論不完整,對不起。是什麼讓這個棘手的是,如果我不*自己在工作對象中運行,我想自己創建一個新工作,然後將子工藝分配給它。 – 2011-03-24 08:20:46

相關問題