windows核心程式設計之核心物件

2021-07-03 21:55:04 字數 1101 閱讀 1683

由於不是計算機科班出身,一直對於程序和執行緒沒有深入的了解,現開始看windows核心程式設計,將具體內容整理一下,以加深印象。

1、核心物件,即作業系統維護的乙個資料結構,內部維護該物件的各種資料資訊,常見的核心物件有:用於建立程序的程序核心物件,用於建立執行緒的執行緒核心物件,建立檔案的檔案核心物件,用於多執行緒互斥和同步的互斥物件、信標物件和事件物件等。在windows作業系統中,只有系統本身可以修改核心物件,應用層的**無法修改,如果應用層想要獲取該核心物件或者使用該核心物件應該怎麼辦呢?windows系統提供了各種api函式供使用,具體的api函式稍後總結。

2、核心物件的屬性

(1)核心物件的使用計數器

第一部分已經講到核心物件是由系統核心來擁有而不是由程序擁有,因此假設乙個程序呼叫windows的api建立了乙個核心物件,但是在程序終止執行之前並沒有撤銷該物件,則該核心物件可能還存在,因為可能其他程序在使用該核心物件,那麼問題來了,應該如何知道該核心物件由多少程序使用呢?答案是核心物件維護的使用計數器,當核心物件第乙個由乙個程序建立時,該核心物件的使用計數器記為1,如果有其他的程序訪問該核心物件,核心物件的使用計數器加1,當該程序結束,使用計數器減1,如果核心發現該核心物件的使用計數器減為0,則撤銷該物件,否則一直存在。

(2)安全性

在呼叫windows的api建立核心物件時,每乙個api都會有 乙個指向s e c u r i t y _ at t r i b u t e s結構體的指標,該結構體即儲存了核心物件安全性的設定,一般在應用程式中設為null,使用預設的安全設定即可。另外區分核心物件和普通的使用者物件的乙個標誌就是看在建立該物件的api中有沒有安全屬性設定。

3、核心物件的操作

對於核心物件的操作包括核心物件的建立和核心物件的關閉

(1)建立核心物件

windows作業系統建立核心物件的方式為呼叫create*()函式,如建立執行緒核心物件即呼叫createthread函式,建立程序核心函式即呼叫createprocess函式,這些函式返回乙個控制代碼,並儲存在程序控制代碼表中,作為核心物件的索引。

(2)關閉核心物件

當核心物件使用完成之後或者在程序終止執行之前需呼叫closehandle()關閉該核心物件,但注意該核心物件並不一定會銷毀,因為,核心物件的使用計數器並不一定為0.

windows核心程式設計之程序 1

我對程序的理解,由於程序是不活潑的,活潑的是程序裡面的執行緒。所以,程序相當於乙個容器,只有裡面有東西 執行緒 該容器才有存在的必要,如果裡面的東西用光了 執行緒全部終止執行 瓶子就被 程序的位址空間就被系統 或重新分配給新的程序 多工搶占式作業系統 每個程序都有執行緒,每個執行緒都有自己的cpu暫...

windows核心程式設計之程序 3

獲取系統版本的函式 getversion返回乙個dword型別的值,高子返回ms dos版本號,低字返回windows版本號 本來按照邏輯來說應該是低字的高位元組返回windows的主版本號,低位元組返回此版本號,但是編寫該 程式設計師犯了乙個小錯誤,主版本號和次版本號的位置弄反了,高位元組返回次版...

Windows核心程式設計之一

作業系統核心是指大多數作業系統的核心部分。它由作業系統中用於管理儲存器 檔案 外設和系統資源的那些部分組成。作業系統核心通常執行程序,並提供程序間的通訊。核心物件 每個核心物件都只是乙個記憶體塊,它由作業系統核心分配,並只能由作業系統核心訪問。這個記憶體塊是乙個資料結構,其成員維護著與物件相關的資訊...