亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

[C++]什么是句柄?為什么會有句柄?

2019-11-06 09:10:39
字體:
來源:轉載
供稿:網友

從廣義上,能夠從一個數值拎起一大堆數據的東西都可以叫做句柄。句柄的英文是”Handle”,本義就是”柄”,只是在計算機科學中,被特別地翻譯成”句柄”,其實還是個”柄”。從一個小東西拎起一大堆東西,這難道不像是個”柄”嗎?

然后,指針其實也是一種”句柄”,只是由于指針同時擁有更特殊的含義——實實在在地對應內存里地一個地址——所以,通常不把指針說成是”句柄”。但指針也有著能從一個32位的值引用到一大堆數據的作用,這不是句柄又是什么?

Windows系統中有許多內核對象(這里的對象不完全等價于”面向對象程序設計”一詞中的”對象”,雖然實質上還真差不多),比如打開的文件,創建的線程,程序的窗口,等等。這些重要的對象肯定不是4個字節或者8個字節足以完全描述的,他們擁有大量的屬性。為了保存這樣一個”對象”的狀態,往往需要上百甚至上千字節的內存空間,那么怎么在程序間或程序內部的子過程(函數)之間傳遞這些數據呢?拖著這成百上千的字節拷貝來拷貝去嗎?顯然會浪費效率。那么怎么辦?當然傳遞這些對象的首地址是一個辦法,但這至少有兩個缺點:

暴露了內核對象本身,使得程序(而不是操作系統內核)也可以任意地修改對象地內部狀態(首地址都知道了,還有什么不能改的?),這顯然是操作系統內核所不允許的; 操作系統有定期整理內存的責任,如果一些內存整理過一次后,對象被搬走了怎么辦? 所以,Windows操作系統就采用進一步的間接:在進程的地址空間中設一張表,表里頭專門保存一些編號和由這個編號對應一個地址,而由那個地址去引用實際的對象,這個編號跟那個地址在數值上沒有任何規律性的聯系,純粹是個映射而已。

在Windows系統中,這個編號就叫做”句柄”。

Handle在Windows中的含義很廣泛,以下關于談到的Handle除非特別說明,將僅限于進程、線程的上下文中。

1、先來談談Handle

Handle本身是一個32位的無符號整數,它用來代表一個內核對象。它并不指向實際的內核對象,用戶模式下的程序永遠不可能獲得一個內核對象的實際地址(一般情況下)。那么Handle的意義何在?它實際上是作為一個索引在一個表中查找對應的內核對象的實際地址。那么這個表在哪里呢?每個進程都有這樣的一個表,叫句柄表。該表的第一項就是進程自己的句柄,這也是為什么你調用GetCurrentPRocess()總是返回0x7FFFFFFF原因。

簡單地說,Handle就是一種用來”間接”代表一個內核對象的整數值。你可以在程序中使用handle來代表你想要操作的內核對象。這里的內核對象包括:事件(Event)、線程、進程、Mutex等等。我們最常見的就是文件句柄(file handle)。

另外要注意的是,Handle僅在其所屬的進程中才有意義。將一個進程擁有的handle傳給另一個進程沒有任何意義,如果非要這么做,則需要使用DuplicateHandle(),在多個進程間傳遞Handle是另外一個話題了,與這里要討論的無關。

2、進程ID

首先,進程ID是一個32位無符號整數,每個進程都有這樣的一個ID,并且該ID在系統范圍內是唯一的。系統使用該ID來唯一確定一個進程。

深入些說,系統可能使用進程ID來計算代表該進程的內核對象的基地址(及EPROCESS結構的基地址),具體的計算公式你可以去問微軟的OS開發人員。

3、HINSTANCE

HINSTANCE也是一個32無符號整數,它表示程序加載到內存中的基地址。

參考文章 http://www.cppblog.com/mymsdn/archive/2009/02/19/handle-in-windows.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产免费一区二区三区在线观看| 日韩视频免费中文字幕| 亚洲人成电影在线观看天堂色| 国产91在线播放| 国产精品视频区| 国内精品在线一区| 久久久久久久一| 精品中文字幕在线2019| 欧美日韩激情网| 97免费中文视频在线观看| 92看片淫黄大片欧美看国产片| 91精品国产综合久久男男| 日韩经典中文字幕| 九九精品视频在线| 亚洲黄一区二区| 欧美电影电视剧在线观看| 国产原创欧美精品| 久久久成人精品| 国产91精品久| 亚洲影视中文字幕| 91精品国产99久久久久久| 日韩精品久久久久| 久久综合九色九九| 91精品国产高清久久久久久久久| 成人在线精品视频| 欧美视频在线免费| 日本亚洲欧洲色α| 日韩av免费在线播放| 97av在线视频免费播放| 国产日本欧美在线观看| 亚洲新中文字幕| 国产精品国模在线| 91免费欧美精品| 国产精品久久久久久婷婷天堂| 国产精品第一页在线| 免费av一区二区| 91亚洲午夜在线| 97久久久久久| 成人网址在线观看| 久久免费国产视频| 亚洲天堂男人天堂女人天堂| 国产精品视频大全| 久久影视电视剧免费网站清宫辞电视| 亚洲视频欧洲视频| 91久久精品国产91久久| 大荫蒂欧美视频另类xxxx| 国产精品自拍偷拍| 奇米成人av国产一区二区三区| 欧美区在线播放| 孩xxxx性bbbb欧美| 亚洲国产精品资源| 亚洲第一区中文字幕| 欧美国产日韩xxxxx| 日韩欧美中文在线| 欧美在线播放视频| 欧美日韩成人在线视频| 国产mv免费观看入口亚洲| 国产精品青草久久久久福利99| 精品久久久久久久久久| 欧美日韩激情美女| 国产激情久久久久| 亚洲2020天天堂在线观看| 日韩久久午夜影院| 国产精品视频yy9099| 午夜精品久久久久久久99黑人| 午夜精品一区二区三区视频免费看| 欧美性猛xxx| 亚洲第一偷拍网| 一区二区欧美激情| 国外成人免费在线播放| 国产成人自拍视频在线观看| 宅男66日本亚洲欧美视频| 日韩视频亚洲视频| 国产日韩欧美影视| 亚洲天堂一区二区三区| 人妖精品videosex性欧美| 久久综合88中文色鬼| 久久这里有精品视频| 成人福利视频在线观看| 欧美成人午夜激情视频| 久久久久久久久综合| 一级做a爰片久久毛片美女图片| 亚洲电影免费观看高清完整版在线| 欧美久久久精品| 日本精品视频在线观看| 这里只有精品在线观看| 在线成人中文字幕| 色综合久久久久久中文网| 日本韩国在线不卡| 在线观看国产精品日韩av| 成人黄色免费在线观看| 国产一区二区三区三区在线观看| 亚洲精品国产精品国自产观看浪潮| 国产精品色婷婷视频| 国产精品www网站| 国产精品久久久久久久app| 欧美高清在线观看| 中文日韩在线视频| 亚洲国产精品热久久| 亚洲男人天堂久| 97久久伊人激情网| 久久久国产精品亚洲一区| 欧美大片第1页| 欧美日韩裸体免费视频| 黑人巨大精品欧美一区免费视频| 国产福利精品av综合导导航| 成人免费观看49www在线观看| 精品久久久视频| 日韩亚洲精品视频| 亚洲欧美一区二区三区情侣bbw| 亚洲新中文字幕| 久久久久九九九九| 国产精品亚洲片夜色在线| 中文字幕久精品免费视频| 91国内免费在线视频| 国产脚交av在线一区二区| 综合久久五月天| 美女啪啪无遮挡免费久久网站| 精品国产乱码久久久久久天美| 97国产真实伦对白精彩视频8| 亚洲欧美国产日韩天堂区| 亚洲男人第一av网站| 国产精品久久久久国产a级| 国产精品扒开腿做爽爽爽的视频| 丝袜美腿精品国产二区| 久久成年人视频| 久久久久久亚洲| 国产成人精品一区| 97视频在线观看成人| 97在线看免费观看视频在线观看| 久久久久久久网站| 国产在线观看一区二区三区| 久久99久久99精品中文字幕| 久久久久久久97| 国产精品无av码在线观看| 久久精品99久久香蕉国产色戒| 欧美日韩精品中文字幕| 日韩欧美中文字幕在线观看| 亚洲色图狂野欧美| 亚洲一区二区日本| 欧美大人香蕉在线| 在线播放精品一区二区三区| 深夜福利91大全| 国产精品高潮呻吟久久av野狼| 日韩精品在线免费播放| 亚洲欧美一区二区三区四区| 中文字幕亚洲无线码a| 精品在线小视频| 欧美成人免费大片| 国产一区二区三区在线| 91精品视频网站| 午夜精品福利电影| 国产精品v日韩精品| 中文字幕自拍vr一区二区三区| 欧美视频13p| 日韩美女在线观看一区| 91久久在线观看| 久久精品成人一区二区三区| 色综合久综合久久综合久鬼88| 九色精品美女在线| 亚洲综合精品一区二区| 日本欧美一级片| 国产精品精品一区二区三区午夜版| 日本久久亚洲电影|