何為控制代碼

來源:互聯網
上載者:User

到底何為控制代碼,自從學習VC以來,這個問題一直困擾著我,最近我從微軟出版的《Windows 核心編程》一書中找到了比較好的答案,之前在百度、Googo等搜尋引擎中找到的答案都不令人滿意,大家都把控制代碼解釋為指標,標識一個對象,其實這個理解不完全正確。

現在我將控制代碼表的結構如下:

 

        我們知道,一個進程在初始化時,系統將為他分配一個控制代碼表(handle table),這個控制代碼表僅僅供核心對象使用,不適用於使用者物件,用於建立核心對象的任何函數都會返回一個與進程相關的控制代碼,這個控制代碼可以由同一個進程中啟動並執行所有線程使用,系統用索引來標識核心對象的資訊儲存在進程控制代碼表中的位置,要得到實際索引值,就需要得到控制代碼。控制代碼和索引之間的關係在大部分作業系統中是使控制代碼值右移兩位。

     所以我們通常說控制代碼標識一個對象,這句話沒有錯誤,說它是一個指標就有問題了,因為我們是通過使用某個對象的控制代碼從而得到該對象在控制代碼表中的索引,最終得到該對象在記憶體中的地址,即指標。

聯繫我們

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