《Windows核心程式設計》筆記1 核心物件

2021-09-08 05:47:56 字數 1200 閱讀 6529

由於.net framework中很多地方需要用到以前win32中的一些知識點,不了解其中的來朧去脈學習起來會比較吃力,於是準備用點時間補一下windows 核心方面的知識點,參考書本是經典的核心物件是核心分配的乙個記憶體塊,這種記憶體塊是乙個資料結構,表示核心物件的各種特徵。並且只能由核心來訪問。應用程式若需要訪問核心物件,需要通過作業系統提供的函式來進行,不能直接訪問核心物件(

windows

從安全性方面來考慮的)。

其二,物件者,資料結構上所承載的資料也。不同於其它物件,資料結構可以自由更改,核心物件的資料結構必須有幾點是符合規範的,且都是固定的。應用程式只能建立,使用,修改核心物件內的資料,而無法更改其記憶體的結構狀態。

其三,建立核心物件是返回該物件的乙個控制代碼(可以理解為一種特殊的指標),這些控制代碼可在建立該核心的程序內使用,而不可在外部程序中使用,我們通過操縱控制代碼來操縱核心物件。(注:是控制代碼不可在外部程序中使用,而非核心物件,核心物件可以在多個程序間共享。)

其四,即然我們無法更改核心物件的資料結構,我們如何來操縱這些核心物件,答:microsoft定義了一組函式,以便用很好的方法來對這些資料結構進行操作。我們將建立得到的控制代碼傳給這些函式,系統就知道你要操作哪個核心物件, 然後會按系統定義的方法來進行操作。

其五,核心物件由系統來分配建立,它的擁有者是屬於核心的,而不是屬於程序的。所以,如果該程序呼叫了乙個建立核心物件的函式,然後程序終止執行,但是核心物件不一定會被撤銷。(在大多數情況下,核心物件是會被撤銷的,如果有另一程序擁有這個核心物件的控制代碼,則不會被撤銷。)記住:核心物件存在的時間可能會比建立該物件的程序壽命要長。

其六,正是由於多個程序可以共享乙個核心物件,所以,核心物件的資料結構中必須有一項計數器的資料成員,以表示有多少個程序擁有該核心物件。

核心物件的安全性:

核心物件能夠得到安全描述符的保護,安全描述符描述了誰建立了該物件,誰可以使用該物件,誰無權使用該物件。那麼,如何使用該安全特性呢?

舉一例:

其中,第二個引數psecurity_attributes就是關於安全性的引數,一般傳入null即可,表示預設安全。

關於windows中的其它物件。應用程式可以建立諸如選單,視窗,游標,刷子等物件,這些屬於使用者物件或圖形裝置介面物件,而並不是核心物件,一定要區分開來。若要確定建立的物件是否屬於核心物件,則要檢視建立物件的函式,是否有安全描述符引數。 

關閉核心物件,呼叫系統的函式bool closehandle(handle hobj)來關閉核心。

windows核心程式設計 記錄 1

物件,windows分為使用者物件和核心物件.說的最多的就是核心物件.核心物件有很多,程序,檔案,管道,and so on.需要記錄的只有乙個東西 closehandle 程序,有程序的核心物件,程序的核心物件比此程序的存在週期要常.程序結束的時候它所對應的核心物件並不會立刻結束,而是檢查它的計數器...

Windows核心程式設計筆記 (1)錯誤處理

windows函式呼叫失敗時返回的值是和函式返回值的資料型別是有關的 資料型別 函式呼叫失敗 除傳參錯誤,程式設計師書寫錯誤等 返回的值 void 一般不會失敗 bool 函式失敗返回值為0,否則返回 個非0值,穩妥的做法為判斷值是否為false pvoid 呼叫失敗返回null,否則返回乙個資料塊...

windows核心程式設計筆記(一)

1.setwindowredraw 設定視窗的可重繪狀態 這個函式是不是把整個視窗 包括視窗控制項 的和重繪相關的訊號 遮蔽掉了?2.combobox setitemdata 巨集 函式原型 int combobox setitemdata hwnd hwndctl,空間控制代碼 int index...