《Windows核心編程》讀書筆記——作業

來源:互聯網
上載者:User

      第5章:作業

1. 為了把一組進程當做一個單獨的組來處理,windows提供了一個作業(job)核心對象,它允許我們將進程組合在一起並建立一個”沙箱“來限制進程能夠做什麼。最好把工作物件想象成一個進程容器。理解:從這裡我們要注意關鍵,作業是管理進程集合的容器,所謂管理主要就是對進程行為加以限制!

2. 如果進程已與一個作業關聯,就無法將當前進程或者它的任何子進程從作業中去除,這個安全特性可以確保進程無法擺脫對它施加的限制。

3. 檢測某進程是否與一個作業已經關聯,使用IsProcessInJob函數。

4. 使用CreateJobObject 函數建立作業。

5. 使用SetInformationJobObject 函數對作業中的進程施加限制。限制類型請參考http://msdn.microsoft.com/en-us/library/windows/desktop/ms686216(v=vs.85).aspx,對作業加以限制的內容是本章的重點內容,類型有十種之多,而且對應的結構以及對進程的影響各異。

6. 使用AssignProcessToJobObject 函數把進程放入作業中,如果想在建立進程的同時用作業來管理此進程,應該在建立進程的時候使用CREATE_SUPENDED標誌,加入作業列表後再啟動進程。一旦進程已經屬於作業的一部分,它就不能再移動到另一個作業中,也不能成為所謂”無業的“。當作業中的一個進程產生了另一個進程的時候,新進程將自動成為父進程所屬於的作業的一部分(但可以通過CreateProcess 建立子進程時使用特殊參數使子進程擺脫控制)。

7. 使用TerminateJobObject 函數來終止作業中的所有進程,它是通過對每個進程調用TerminateProcess 來做到的,每個進程的終止後的記憶體清理留給系統自動完成。

8. 使用QueryInformationJobObject 函數來查詢作業當前的限制。查詢型別參數請參考http://msdn.microsoft.com/en-us/library/windows/desktop/ms684925(v=vs.85).aspx。除了查詢限制,還可以查詢作業的統計資訊。注意這裡的型別參數與SetInformationJobObject型別參數不完全相同。每個結構都值得深入研究,這裡這個介面寫的方便性以及文檔的說明品質實在不可恭維。

9. 作業通知通過使用完成連接埠來實現。建立完成連接埠後,通過SetInformationJobObject 帶JobObjectAssociateCompletionPortInformation 參數和完成連接埠控制代碼綁定作業。這樣,系統將監視作業,只要有事件發生,就會把它們投遞到I/O完成連接埠,我們調用GetQueuedCompletionStatus來監視完成連接埠(一般是另開線程做監視動作,使用QueryInformationJobObject來擷取完成鍵和完成連接埠控制代碼)。

10. 對作業完成連接埠的事件處理是使用者需要關心的事情。

11. 對於JeffreyRichter 的光碟片代碼的理解,我在05-JobLab程式中,發現使用建立作業的那個進程建立的CMD視窗明明已經關聯到作業成功,但不能通過QueryInformationJobObject尋找到其進程資訊,已經發了信到微軟,但願得到解答。

      對於隨書的代碼內容,很多地方都有。但我也上傳我使用的那一份吧:http://download.csdn.net/detail/eagleatustb/4690967

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.