国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
句柄和ID
句柄和ID
 
在Windows程序設(shè)計中,句柄是無法精確定義的術(shù)語。隨便找一個高手,讓他給你講講句柄是什么,恐怕他都很難給你一個具體的定義來。

在Windows程序設(shè)計中,句柄無所不在,窗口有窗口的句柄HWND,線程和進程也有句柄HANDLE,甚至有人把套接字也稱為句柄(我就是這樣的)。

句柄在英文中是handle,作為動詞講是處理的意思。簡而言之,句柄是處理對象的一個接口,對于程序中所涉及的對象,你可以通過句柄去操作他。你不應(yīng)該試圖去回答句柄是什么,而應(yīng)該從務(wù)虛的角度去理解他,知道他干什么即可。

有人說,因為handle的定義是void *,因此他是一個指針。有些熟悉內(nèi)核的人說這是一個索引。這些說法都是不準確的。需要注意的是,微軟并沒有精確定義句柄的含義,也許在某個特殊的操作系統(tǒng)中,他使用了一種內(nèi)部含義,但是在其他版本中,就不保證這樣了。任何對句柄的內(nèi)在假設(shè)都可能導(dǎo)致災(zāi)難性的后果。

API是接口,句柄是接口,兩者有什么區(qū)別?API是一個通用的函數(shù)族,他處理所有的對象,而句柄是和某個具體對象相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。只有借助句柄,API才知道處理哪個對象。

有些對象有ID。句柄表示特殊的對象,ID也表示某個對象,為什么要兩個東西來表示?

首先,句柄不能唯一表示對象。一個對象可以有多個句柄。例如:假設(shè)我們用CreateProcess創(chuàng)建一個進程,該進程的第一個線程的句柄會返回給調(diào)用CreateProcess的進程。同時,在新創(chuàng)建的進程中,該線程也會有一個句柄。這樣,這個線程就有兩個句柄。我們也可以用DuplicateHandle復(fù)制一個句柄,這個句柄和原來句柄是不一樣的,但是他們都表示同一個對象。而每個有ID的對象,在系統(tǒng)范圍內(nèi),ID肯定是唯一的。

其次,句柄所能實現(xiàn)的功能ID不能實現(xiàn)。畢竟ID只是一個數(shù)字,他不能記錄很多信息。而句柄可能在其內(nèi)部結(jié)構(gòu)中記錄了很多信息(如權(quán)限、有無信號等)。

總之,如果試圖解釋他到底是什么,學(xué)習(xí)句柄就會誤入歧途。從虛的角度去理解,對于新手是難一點,但是這也許是唯一正確的辦法。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
線程ID與線程句柄區(qū)別
秒殺多線程第七篇 經(jīng)典線程同步 互斥量Mutex
什么是句柄?為什么會有句柄?HANDLE
WindowsAPI函數(shù)定義大全0.4 綠色免費版下載
c++11 線程:讓你的多線程任務(wù)更輕松
利用Win32 Debug API打造自己的調(diào)試器Debugger
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服