天天看點

句柄

1、句柄概念

       句柄,是整個windows程式設計的基礎。一個句柄是指使用的一個唯一的整數值,即一個四位元組長的數值,來标示應用程式中的不同對象和同類對象中的不同的執行個體,諸如,一個視窗,按鈕,圖示,滾動條,輸出裝置,控件或者檔案等。應用程式能夠通過句柄通路相應的對象的資訊,但是句柄不是一個指針,程式不能利用句柄來直接閱讀檔案中的資訊。如果句柄不用在I/O檔案中,它是毫無用處的。 句柄是windows用來标志應用程式中建立的或是使用的唯一整數,windows使用了大量的句柄來标志很多對象。

       WINDOWS程式中并不是用實體位址來辨別一個記憶體塊,檔案,任務或動态裝入子產品的。相反,WINDOWS API給這些項目配置設定确定的句柄,并将句柄傳回給應用程式,然後通過句柄來進行操作。

       句柄是一個辨別符,是拿來辨別對象或者項目的。應用程式幾乎總是通過調用一個WINDOWS函數來獲得一個句柄,之後其他的WINDOWS函數就可以使用該句柄,以引用相應的對象。

2、句柄作用

  如果想更透徹一點地認識句柄,我可以告訴大家,句柄是一種指向指針的指針。我們知道,所謂指針是一種記憶體位址。應用程式啟動後,組成這個程式的各對象是駐留在記憶體中的。簡單地了解,似乎我們隻要獲知這個記憶體的首位址,就可以随時用這個位址通路對象了。如果您真的這樣認為,那您可就大錯特錯了。我們知道,Windows是一個以虛拟記憶體為基礎的作業系統。在這種系統環境下,Windows記憶體管理器經常在記憶體中來回移動對象,以此來滿足各種應用程式的記憶體需要。對象被移動意味着它的位址變化了。如果位址總是如此變化,我們該到哪裡去找那一個對象呢?

  為了解決這個問題,Windows作業系統為全體應用程式騰出一些記憶體單元,用來專門登記各應用程式的對象在記憶體中的位址的變化,而前者的實體位址在系統運作期間是始終保持不變的。Windows記憶體管理器移動了對象在記憶體中的位置後,會把該對象新的位址及時地告知給對應的句柄進行更新。這樣我們隻要知道這個句柄,就可以間接地知道對象具體在記憶體中的哪個位置了。這個位址是在對象裝載(Load)時由系統配置設定給的,當對象解除安裝時(Unload)又釋放給系統。

上一篇: 句柄
下一篇: 句柄

繼續閱讀