控制代碼的本質

2021-04-13 06:18:05 字數 643 閱讀 2172

handle就是pvoid,也就是無型別指標,

上面這些資源的控制代碼handles都不過是指向struct的指標,至於這個struct的用處,連m$都說unused了,現在解釋下m$這麼做的意義,這就是所謂資料封裝,你可以在你的程式中把m$的內部結構指標傳來傳去,可是你卻不知道它到底指向的內容是什麼。

控制代碼與指標確實是完全不同的兩個概念。控制代碼僅僅是乙個32位整數,win32中用於標記某個系統或程序的物件,可以理解為物件索引(由於m$未完全公開相關技術,在一定程度上只能如此理解),這個索引更像是一種對映關係(從控制代碼到物件指標的對映),而不是純粹意義上的「陣列下標」。

控制代碼可以理解為用於指向或標識記憶體的一塊「資源」,這些資源如:檔案(file)、記憶體塊(block of memory)、選單(menu)等等。作業系統通過控制代碼來定位核心物件和系統資源。

指標即為指向記憶體的「資料或指令」某一單元。

說的確切一點,控制代碼實際上是一種指向某種資源的指標,但與指標又有所不同:指標對應著乙個資料在記憶體中的位址,得到了指標就可以自由地修改該資料。windows並不希望一般程式修改其內部資料結構,因為這樣太不安全。所以windows給每個使用globalalloc等函式宣告的記憶體區域指定乙個控制代碼(本質上仍是乙個指標,但不要直接操作它),平時你只是在呼叫api函式時利用這個控制代碼來說明要操作哪段記憶體。  

控制代碼的本質

控制代碼 是wondows用來標識被應用程式所建立或使用的物件的唯一整數,windows使用各種各樣的 控制代碼標識諸如應用程式例項,視窗,控制,位圖,gdi物件等等。windows 控制代碼有點象c語言中的檔案控制代碼。從上面的定義中的我們可以看到,控制代碼是乙個識別符號,是拿來標識物件或者專案的...

控制代碼的本質

一 書上定義 microsoft press,by richard wilton 在windows環境中,控制代碼是用來標識專案的,這些專案包括 模組 module 任務 task 例項 instance 檔案 file 記憶體塊 block of memory 選單 menu 控制 control...

模組控制代碼(例項控制代碼)和控制代碼的區別

解釋一 1 模組的概念 乙個模組代表的是乙個執行中的exe檔案或dll檔案,用來代表這個檔案中所有的 和資源,磁碟上的檔案不是模組,裝入記憶體後執行時就叫做模組。乙個應用程式呼叫其他dll中的api時,這些dll檔案被裝入記憶體,就產生了不同的模組,為了區分位址空間中的不同模組,每個模組都有乙個惟一...