1. 程式人生 > >Windows常見面試題——句柄

Windows常見面試題——句柄

Windows;面試;

1.什麽是句柄,請談談你的理解

答:句柄實際上是一個long型數據,是操作系統在生成對象時為對象分配的唯一標識。
Windows雖然是C和匯編寫的,但是也使用了面向對象的思想。(比如窗口,文件,繪圖設備環境等等) 他們都是對象,一個對象的數據應該是隱藏起來的,我們應當只能通過接口去修改數據,但是和C++不同的是,沒有把函數和數據封裝到一起,所以就有了句柄這一概念,用以代表某一個對象,然後使用函數來操作這個對象時,就需要把句柄傳進去,作用類似於C++中的this指針。最終目的是用來訪問對象,一個句柄代表著一個對於對象的打開操作。句柄就是我們去訪問對象的鑰匙,是對象的索引。

2.句柄都有哪些種類?

答:常見的句柄有:
HWND 窗口句柄
HINSTANCE 當前實列句柄
HCURSOR 光標句柄
HFONT 字體句柄
HPEN 畫筆句柄
HBRUSH 畫刷句柄
HDC 設備環境句柄
HBITMAP 位圖句柄
HICON 圖標句柄
HMENU 菜單句柄
HFILE 文件句柄

3.對於內核進程來說,進程中有一個進程表。不同進程中的進程表存儲的相同的句柄值代表的是同一個內核對象嗎?

答:內核對象的句柄是和進程相關的,對於同一個對象來講,在不同的進程中,其句柄值是不一樣的,這點和GDI對象不同,GDI對象的句柄值是全局有效的,在不同的進程中,可以使用同一個句柄值訪問同一個GDI對象。在每一個進程對象中,都有一個句柄表,用以記錄本進程所打開的所有內核對象,句柄的值則可以簡單的看作句柄表中的索引,所以內核對象的句柄值,僅僅對本進程有效。

4.什麽是模塊,模塊句柄的本質是什麽?

Windows常見面試題——句柄