複製鏈接
請複製以下鏈接發送給好友

內核對象

鎖定
進程對象有一個進程I D 、一個基本優先級和一個退出代碼,而文件對象則擁有一個字節位移、一個共享模式和一個打開模式。
中文名
內核對象
外文名
Kernel object
表達式
有一個進程I D 、一個基本優先級
適用領域
計算機
應用學科
物理

內核對象性質

內核對象是系統提供的用户模式下代碼與內核模式下代碼進行交互的基本接口。
內核對象的數據結構只能被內核訪問,因此應用程序無法在內存中找到這些數據結構並直接改變它們的內容。Microsoft 規定了這個限制條件,目的是為了確保內核對象結構保持狀態的一致。這個限制也使Microsoft能夠在不破壞任何應用程序的情況下在這些結構中添加、 刪除和修改數據成員。
當調用一個用於創建內核對象的函數時,該函數就返回一個用於標識該對象的句柄如果將該句柄值傳遞給另一個進程中的一個線程,那麼這另一個進程使用你的進程的句柄值所作的調用就會失敗。如果想在多個進程中共享內核對象,要通過一定的機制。
如對象句柄的繼承性,命名對象,複製對象句柄。
除了內核對象外,你的應用程序也可以使用其他類型的對象,如菜單、窗口、鼠標光標、刷子和字體等。這些對象屬於用户對象圖形設備接口(GDI)對象,而不是內核對象。
若要確定一個對象是否屬於內核對象,最容易的方法是觀察創建該對象所用的函數。

內核對象數據操作

作為一個軟件開發人員,你經常需要創建、打開和操作各種內核對象。系統要創建和操作若干類型的內核對象,比如存取符號對象、事件對象、文件對象、文件映射對象、I/O完成端口對象、作業對象、信箱對象、互斥對象、管道對象、進程對象、信標對象、線程對象和等待計時器對象等。這些對象都是通過調用函數來創建的。每個內核對象只是內核分配的一個內存塊,並且只能由該內核訪問。該內存塊是一種數據結構,它的成員負責維護該對象的各種信息。有些數據成員(如安全性描述符、使用計數等)在所有對象類型中是相同的,但大多數數據成員屬於特定的對象類型。例如,進程對象有一個進程ID、一個基本優先級和一個退出代碼,而文件對象則擁有一個字節位移、一個共享模式和一個打開模式。
這個限制條件確保了內核對象結構保持狀態的一致。這個限制也使內核能夠在不破壞任何應用程序的情況下在這些結構中添加、刪除和修改數據成員
如果我們不能直接改變這些數據結構,那麼我們的應用程序如何才能操作這些內核對象呢?解決辦法是,提供一組函數,以便用定義得很好的方法來對這些結構進行操作。這些內核對象始終都可以通過這些函數進行訪問。該句柄可以被視為一個不透明值,你的進程中的任何線程都可以使用這個值。將這個句柄傳遞給內核的各個函數,這樣,系統就能知道你想操作哪個內核對象。
為了使操作系統變得更加健壯,這些句柄值是與進程密切相關的。因此,如果將該句柄值傳遞給另一個進程中的一個線程(使用某種形式的進程間的通信)那麼這另一個進程使用你的進程的句柄值所作的調用就會失敗。

內核對象內核對象分類

如下:存取符號對象、事件對象、文件對象、文件映射對象、I / O完成端口對象、作業對象、信箱對象、互斥對象、管道對象、進程對象、信標對象、線程對象和等待計時器對象等。這些對象都是通過調用函數來創建的。

內核對象安全性

內核對象可以用一個安全描述符(security descriptor,SD)來保護。安全描述符描述了誰擁有對象;哪些組和用户被允許訪問或使用此對象;哪些組和用户被拒絕訪問此對象。安全描述符通常在編寫服務器應用程序的時候使用。