Ⅰ 句柄是什麼
簡單的說是無符號長整數,復雜的說是一種資源標識,有點類似資源指針,但不是指針,因為系統擔心用戶不恰當的使用指針造成嚴重後果。
網路如下:
HANDLE(句柄)是Windows操作系統中的一個概念。在Windows程序中,有各種各樣的資源(窗口、圖標、游標等),系統在創建這些資源時會為它們分配內存,並返回標示這些資源的標示號,即句柄。句柄指的是一個核心對象在某一個進程中的唯一索引,而不是指針。由於地址空間的限制,句柄所標識的內容對進程是不可見的,只能由操作系統通過進程句柄列表來進行維護。句柄列表:每個進程都要創建一個句柄列表,這些句柄指向各種系統資源,比如信號量,線程,和文件等,進程中的所有線程都可以訪問這些資源。
其實我們編程時輸出一下句柄的值就可以發現這些值往往非常小(<100)。由此就可以看出句柄的性質了。
Ⅱ 句柄什麼意思
句柄有兩種意思,其中第一種是指程序設計,第二種是指Windows編程。
句柄實際上是一個數據,是一個Long (整長型)的數據。
句柄是WONDOWS用來標識被應用程序所建立或使用的對象的唯一整數,WINDOWS使用各種各樣的句柄標識諸如應用程序實例,窗口,控制,點陣圖,GDI對象等等。
WINDOWS句柄有點象C語言中的文件句柄。
從上面的定義中的我們可以看到,句柄是一個標識符,是拿來標識對象或者項目的,它就象我們的姓名一樣,每個人都會有一個,不同的人的姓名不一樣,但是,也可能有一個名字和你一樣的人。
從數據類型上來看它只是一個16位的無符號整數。應用程序幾乎總是通過調用一個WINDOWS函數來獲得一個句柄,之後其他的WINDOWS函數就可以使用該句柄,以引用相應的對象。
(2)什麼是句柄擴展閱讀:
句柄的具體作用:
Windows是一個以虛擬內存為基礎的操作系統。在這種系統下,Windows內存管理器經常在內存中來回移動對象,依此來滿足各種應用程序的內存需要。對象被移動意味著它的地址變化了。
地址總是如此變化 ,為了尋找到對象,Windows操作系統為各應用程序騰出一些內存儲地址,用來專門登記各應用對象在內存中的地址變化,而這個地址(存儲單元的位置)本身是不變的。
Windows內存管理器在移動對象在內存中的位置後,把對象新的地址告知這個句柄地址來保存。
這樣我們只需記住這個句柄地址就可以間接地知道對象具體在內存中的哪個位置。這個地址是在對象裝載(Load)時由系統分配給的,當系統卸載時(Unload)又釋放給系統。
Ⅲ 句柄是什麼
昨天回答過了。
句柄是從英文翻譯過來的詞,原文叫handle,操縱桿的意思。翻譯成句柄,很令人費解。
從計算機軟體核心來看,句柄是一個無符號整型數,它相當於一個指針地址,指向一個「資源塊」,例如 HWND 型的 句柄,不同的句柄 指向 不同的 窗體資源塊。
從我們寫程序來看,可以把它看成 窗 的 ID ( 標識),例如:HWND hwd1,hwd2;
hwd1 就是 1號窗,hwd2 就是 2號窗。
對 hwd1 的操作,就是對 1號窗 做操作。
對 hwd2 的操作,就是對 2號窗 做操作。
c/c++ 有多種多樣的 句柄。我們把他們看成 ID 或 一樣東西的別名,一個對象(object) 的別名。
Ⅳ 句柄是什麼
句柄就是用來區分各種內存對象的唯一標識符號,是個32位整數。
有些是整個系統唯一(如窗口句柄),有些是當前進程或線程中唯一
(如線程句柄,全局的有另一個標識符)。
詳細的可分為許多種,都是以H開頭的。在VB中使用時全部都用Long。
常見的有窗口句柄(HWND),設備描述表句柄(HDC),內存句柄(HMEM),
文件句柄,進程句柄,線程句柄,筆的類型句柄(HPEN),字體句柄(HFONT),
區域句柄(HRGN)等等。
在申請句柄時是要佔用資源的,分三類SYSTEM、USER、GDI。
而WINDOWS的資源是固定的,並不隨內存的擴大而擴大,所以使用完以後一定要釋
放。
>
如果只用VB本身的代碼一般是不會用到句柄的,但要是使用API函數的話,
大多數會使用。
再Windows系統中,句柄(我一直覺得這個詞翻譯得特別別扭)分為三大類:Kernel
Handle、UserHandle和應用程序自定義的Handle。
KernelHandle實際上是進程內Kernel對象的指針表索引,Kernel對象包括進程、文
件、信號等。但是MS為了掩蓋著一事實,在系統啟動時生成了一個所謂Obsfucator的值
(其實應該是Obfuscator,MicrosoftBugs(R):),生成Handle後將Handle與這個值異
或後返回給應用程序,所以看到的Handle都是一些很大而且毫無意義的數字。這些
Handle和索引的對象是由KRNL32.DLL和VMM32.VXD共同管理的,所以稱之為Kernel
Handle。
UserHandle是用來標示窗口、DC等對象的,他們是真實的指針,但指向的並不是對象
的開頭,有一個偏移量。同樣,這些對象是由USER32.DLL管理的。
第三種Handle不過是應用程序自定義的一些索引之類的東東,具體的意義和應用程序相關
Ⅳ 什麼是句柄
句柄,一個句柄是指使用的一個唯一的整數值,是指一個四位元組長的數值,用於標志應用程序中的不同對象和同類對象中的不同的實例,諸如,一個窗口,控制項或者文件等,應用程序能夠通過句柄訪問相應的對象的信息。
Ⅵ 什麼是句柄
句柄就是個數字,一般和當前系統下的整數的位數一樣,比如32bit系統下就是4個位元組。
這個數字是一個對象的唯一標示,和對象一一對應。
這個對象可以是一個塊內存,一個資源,或者一個服務的context(如 socket,thread)等等。
這個數字的來源可以有很多中,只要能保證和它代表的對象保持唯一對應就可以,比如可以用內存地址,也可以用句柄表的序號,或者乾脆用一個自增ID,再或者用以上的值去異或一個常數。
(6)什麼是句柄擴展閱讀:
windows 之所以要設立句柄,根本上源於內存管理機制的問題—虛擬地址,簡而言之數據的地址需要變動,變動以後就需要有人來記錄管理變動,(就好像戶籍管理一樣),因此系統用句柄來記載數據地址的變更。
傳統上操作系統內核和系統服務API都是 C 語言介面的,但是其內部設計理念上又是OO的,所以有對象概念卻沒有對應的語言語法支持。
句柄的作用就是在 C 語言環境下代替 C++ 的對象指針來用的,創建句柄就是構造,銷毀句柄就是析構,用句柄調用函數相當於傳入this指針。
如果有系統API是 C++ 介面的,那麼就沒有句柄了,而是某個介面指針,IXXXPtr之類的,比如Windows的com ptr。
Ⅶ 什麼是句柄什麼是最左素短語
句柄(Handle)是一個是用來標識對象或者項目的標識符,可以用來描述窗體、文件等,值得注意的是句柄不能是常量。
Windows之所以要設立句柄,根本上源於內存管理機制的問題,即虛擬地址。簡而言之數據的地址需要變動,變動以後就需要有人來記錄、管理變動,因此系統用句柄來記載數據地址的變更。
最左素短語就是處於句型最左邊的素短語的短語。素短語是一個遞歸的定義,至少含有一個終結符,並且除它自身之外不再含任何更小的素短語。
(7)什麼是句柄擴展閱讀:
句柄的使用
句柄在Windows編程中是一個很重要的概念,在 Windows程序中並不是用物理地址來標識一個內存塊、文件、任務或動態裝入模塊的。相反地,Windows API給這些項目分配確定的句柄,並將句柄返回給應用程序,然後通過句柄來進行操作。
應該明白的是,句柄是一個標識符,是用來標識對象或者項目的。從數據類型上來看它只是一個16位的無符號整數。
應用程序幾乎總是通過調用一個Windows函數來獲得一個句柄,之後其他的Windows函數就可以使用該句柄,以引用相應的對象。在 Windows編程中會用到大量的句柄。
Ⅷ 什麼是句柄最好說簡單易懂點
句柄:
柄,主幹、主要部分的意思
即句子的主幹、中心思想部分。
Ⅸ 什麼是句柄什麼是最左素短語
句柄是一個是用來標識對象或者項目的標識符,可以用來描述窗體、文件等,值得注意的是句柄不能是常量。
最左素短語是句型中最左邊的素短語。素短語是指至少含有一個終結符的短語,並且除自身外,不包含更小的素短語。
句柄並不是一種具體的、固定不變的數據類型或實體,而是代表了程序設計中的一個廣義的概念。句柄一般是指獲取另一個對象的方法一個廣義的指針。
它的具體形式可能是一個整數、一個對象或就是一個真實的指針,而它的目的就是建立起與被訪問對象之間的唯一的聯系。
(9)什麼是句柄擴展閱讀:
句柄在 Windows編程中是一個很重要的概念,在 Windows程序中並不是用物理地址來標識一個內存塊、文件、任務或動態裝入模塊的。相反地,Windows API給這些項目分配確定的句柄,並將句柄返回給應用程序,然後通過句柄來進行操作。
應該明白的是,句柄是一個標識符,是用來標識對象或者項目的。從數據類型上來看它只是一個16位的無符號整數。應用程序幾乎總是通過調用一個Windows函數來獲得一個句柄,之後其他的Windows函數就可以使用該句柄,以引用相應的對象。在 Windows編程中會用到大量的句柄。