Windows核心程式設計 作業

2021-09-23 08:31:43 字數 1034 閱讀 6796

有時候我們需要將一組程序當作乙個單體來處理,另外,也可能需要限制某個程序所能訪問的資源。windows提供了乙個稱為作業  (job)的核心物件,它允許我們將程序組在一起並建立乙個「沙箱」來限制進行能夠做些什麼。 那麼我們可以將作業理解成乙個程序的容器。如果乙個程序已經與乙個作業關聯,則該程序及它的所有子程序都無法從作業中去除掉,這個安全特性可以保證程序無法擺脫對它施加的限制。

建立作業核心物件函式:handle createjobobject();

根據作業物件名字,另一程序通過「開啟作業作業物件函式:handle openjobobject()」對作業進行訪問。

1. 對作業的程序施加限制

建立乙個作業之後,一般會根據作業中的程序能夠執行哪些操作來建立乙個沙箱,可限制的型別:

1)基本限額和擴充套件基本限額,用於防止作業中的程序獨佔系統資源;

2)基本的ui限制,用於防止作業內的進得更改使用者介面;

3)安全限額,用於防止作業內的程序訪問安全資源(檔案、登錄檔子項等)。

施加限制函式 :setinformationjobobject()

2.將程序放入作業中

createprocess時,需指定create_suspendde標誌,然後呼叫assignprocesstojobobject(),將程序放入到作業中。

3.終止作業中的所有程序

通過呼叫terminatejobobject()可殺死作業內部所有程序,這類似於對作業內的每個程序呼叫terminateprocess,將所有的退出碼設為uexitcode.

4.作業通知

1)對於一些簡單的通知,可通知類似waitforsingleobject這樣的函式來等待通知,比如想知道程序分配的cpu時間是否已用完,因為如果作業中的進得還沒用完分配的cpu時間,作業核心物件就處於未觸發狀態。如果作業的所有程序都用完了所分配的cpu時間,windows會強行殺死作業中的所有程序並觸發作業核心物件。

2)對於一些更詳細的通知,比如程序建立/終止執行,這些需建立乙個i/o完成埠核心物件,並作業物件與完成埠關聯,然後必須 有乙個或多個執行緒等待作業通知到達完成埠,再進行處理。

Windows核心程式設計

內容簡介 這是一本經典的windows核心程式設計指南,從第1版到第5版,引領著數十萬程式設計師走入windows開發陣營,培養了大批精英。作為windows開發人員的必備參考,本書是為打算理解windows的c和c 程式設計師精心設計的。第5版全面覆蓋windows xp,windows vist...

《Windows核心程式設計》第五章 作業

include include include using namespace std typedef struct threadparam pthreadparam void monitorcompleteport lpvoid lpparam printf end thread success....

WINDOWS核心程式設計 核心物件

今天想把看的第三章的心得寫下來。這章主要介紹了核心物件。在windows中,核心物件是由作業系統來管理,儘管使用者能夠建立它,但是在建立之後,使用者對該核心物件的操作都是委託給作業系統。通常使用者建立和使用的物件分為 使用者物件 如 hicon createicon prama gdi物件函式以及核...