《Windows核心程式設計》讀書筆記 五

2021-03-31 08:56:57 字數 1011 閱讀 9096

第三章  核心物件

乙個核心物件就是乙個由核心分配的記憶體塊,該記憶體塊是一種資料結構,只能由該核心訪問。它的成員負責維護該物件的各種資訊,有些資料成員是所有物件型別中相同的,但大多數資料成員屬於特定的物件型別。比如訪問符號物件、事件物件、檔案物件、檔案對映物件、i/o完成埠物件、作業物件、信箱物件、互斥物件、管道物件、程序物件、信標物件、執行緒物件和等待計時器物件等。這些都是乙個核心物件。

由於核心物件的資料結構只能被核心訪問,因此應用程式無法在記憶體中找到這些資料結構並直接改變它們的內容,只能通過windows提供的一組函式來對待這些結構進行操作。

核心物件的使用計數

核心物件由核心所擁有,而不是由程序所擁有。換句話說,核心物件不一定因建立它的程序的終止而撤消。核心物件的存在時間可以可以比建立該物件的程序長。

核心通過每個物件型別常用的資料成員--使用計數,來確認有多少個程序正在使用某個核心物件。物件剛建立時,該物件的使用計數被置為1,隨後就隨著程序的訪問遞增,隨著程序的終止遞減。如果核心物件的使用計數降為0,核心就撤消該物件,以確保在沒有程序引用該物件時系統中不保留任何核心物件。

安全性核心物件能夠得到安全描述符的保護。安全描述符用於描述誰建立了該物件,誰能夠訪問或使用該物件,誰無權訪問該物件。安全描述符通常在編寫伺服器應用程式時使用,如果你編寫客戶機端的應用程式,那麼可以忽略核心物件的這個特性。

用於建立核心物件的函式幾乎都有乙個指向security_attributes結構的指標作為其引數。大多數應用程式只是為該引數傳遞null,這樣就可以建立帶有預設安全性的核心物件。預設安全性意味著物件的管理小組的任何成員和物件的建立者都擁有對該物件的全部訪問權,而其他所有人均無權訪問該物件。但是,可以指定乙個s ecurity_ attributes結構,對它進行初始化,並為該引數傳遞該結構的位址。secu rity_attributes結構類似下面的樣子:

typedef struct_security_attributessecurity_attributes;

該結構中包含的與安全性有關的成員實際上只有乙個,即lpsecuritydescriptor。

讀書筆記 Windows核心程式設計

第二章 從windows nt後,windows所有版本都用unicode來構建。如果輸入乙個非unicom的字串,如ansi,函式會將其先轉換為unicode,再把結果傳回作業系統,這樣經過轉換後,需要更多的記憶體,而且執行速度更慢。並且,目前已知的windows的這些轉換函式存在一些bug。所有...

《Windows核心程式設計》讀書筆記(一)

第1章對程式錯誤的處理 1 常見的windows函式的返回型別 void 無返回值型,該函式的執行不可能失敗。windows函式很少此型別 bool 函式執行失敗則返回0,否則返回非0 handle 失敗則返回null,否則返回乙個可操作的物件的handle。注 有些函式會返回乙個控制代碼值inva...

《Windows核心程式設計》讀書筆記(三)

unicode 寬位元組字符集是是為了解決軟體本地化 多語言版本化 而定製的一項技術標準。unicode字串中的所有字元都是16位的 兩個位元組 程式設計師只需要對指標進行遞增或者遞減,就可以遍歷字串中的各個字元,不在需要像單位元組字元一樣去判斷下一位元組是屬於同一字元的組成部分還是乙個新字元。使用...