【Windows核心原理與實現】讀書筆記(三)

來源:互聯網
上載者:User
Windows核心中對象管理

Windows對象管理器的基本設計意圖是:

  • 為執行體的資料結構提供一種統一又可擴充的定義和控制機制。
  • 提供統一的安全訪問機制。
  • 在無需修改已有系統代碼的情況下,加入新的物件類型。
  • 提供一組標準的API來對對象執行各種操作。
  • 提供一種命名機制,與檔案系統的命名機制整合在一起。

每一個對象都由兩部分構成:對象頭和對象體,所有對象的對象頭都具有統一的格式,對象頭包含了對象管理所需要的基本資料,包括對象名稱、類型、引用計數以及安全性描述元等。在Windows中,每一種對象都需要一個對應類型的類型對象(即OBJECT_TYPE對象)。系統定義的對象種類是有限的,WRK支援31種對象(內建),各有一個全域的POBJECT。TYPE變數指向其類型對象。

WRK限定不超過48個類型對象,系統全域變數ObpObjectTypes數組記錄了所有已建立的類型對象。

對象的構造是由兩部分來完成的:(1)調用ObCreateObject,根據指定的類型對象來完成對象頭的初始化,並且按照指定的大小來指派至體的記憶體;(2)完成對象體的初始化。前者可以統一完成,而後者不可以,因為各種類型的對象有自己不同的初始化邏輯。

類型對象可以追蹤記錄當前所有此種類型的對象。因為所有的對象都是在ObpAllocateObject和ObpFreeobject中分配和釋放的。

對象管理器的兩個介面函數ObOpenObjectByName和ObReferenceObjectByName,正是通過ObpLookupObjectName來完成其開啟對象或引用對象的功能的,另一個介面函數ObInsertObject,它的作用是把一個對象插入到一個進程的控制代碼表中,它也通過ObpLookupObjectName來驗證待插入的對象是否在全域名字空間中並不存在。

ObpLookupObjectName的基本執行邏輯:

  • 參數檢查
  • 如果調用者指定了RootDirectoryHandle參數,則利用此RootDirectory的Parse方法來解析對象,直到解析成功或者不成功,或者指示從頭解析。
  • 如果調用者沒有指定RootDirectoryHandle參數,則系統從全域的根目錄ObpRootDirectoryObject開始解析。這種情況下,傳遞進來的對象名稱必須以"\"開始。如果待尋找的名稱僅僅是"\",則執行特殊處理。否則,執行下面的邏輯:(1)首先判斷名稱是否以"\??\"開頭,是的話,需要拿到當前進程的DeviceMap(裝置表),以進一步查詢。(2)如果名稱正好是"\??",則直接返回當前進程的DeviceMap作為結果。(3)調用ObpLookupDirectoryEntry函數,層層遞進,或者碰到具有Parse方法的對象,由它來解析餘下的名稱字串,或者碰到子目錄對象,從而可以在子目錄對象中進一步查詢下一級名稱。

進程如果需要使用對象,必須通過控制代碼來完成。在核心中,將一個控制代碼轉換成對應的對象,可以通過ObReferenceObjectByHandle函數來完成。

對象的聲明周期由對象的引用計數來管理,一旦引用計數為零,則對象的聲明周期結束,它所佔用的記憶體也可以被回收。對象的引用計數來源於兩個方面:(1)核心中指標引用;(2)進程開啟一個對象並獲得一個控制代碼,它以後通過此控制代碼來引用此對象。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.