- N +

句柄是什么類型的數據?windows句柄是什么意思

本篇文章給大家談談句柄是什么類型的數據,以及windows句柄是什么意思對應的知識點,文章可能有點長,但是希望大家可以閱讀完,增長自己的知識,最重要的是希望對各位有所幫助,可以解決了您的問題,不要忘了收藏本站喔。

^是什么意思

^,中文尚無通用名稱,可以是乘方、插入符號、插入符、脫字符號[1]等;英文稱為caret(英語發音:/?k?r?t/),是個倒V形的字素。說得明白一點,^就是ASCII碼位5Ehex或其他字符集稱為帽子(hat)、控制符(control)又或上箭頭(uparrow)的移格字符。

什么是文件句柄

這是操作系統里的一個概念,句柄是WONDOWS用來標識被應用程序所建立或使用的對象的唯一整數,WINDOWS使用各種各樣的句柄標識諸如應用程序實例,窗口,控制,位圖,GDI對象等等。

WINDOWS句柄有點象C語言中的文件句柄。從上面的定義中的我們可以看到,句柄是一個標識符,是拿來標識對象或者項目的,它就象我們的姓名一樣,每個人都會有一個,不同的人的姓名不一樣,但是,也可能有一個名字和你一樣的人。

從數據類型上來看它只是一個16位的無符號整數。

應用程序幾乎總是通過調用一個WINDOWS函數來獲得一個句柄,之后其他的WINDOWS函數就可以使用該句柄,以引用相應的對象。

如果想更透徹一點地認識句柄,我可以告訴大家,句柄是一種指向指針的指針。我們知道,所謂指針是一種內存地址。應用程序啟動后,組成這個程序的各對象是住留在內存的。

如果簡單地理解,似乎我們只要獲知這個內存的首地址,那么就可以隨時用這個地址訪問對象。但是,如果您真的這樣認為,那么您就大錯特錯了。我們知道,Windows是一個以虛擬內存為基礎的操作系統。在這種系統環境下,Windows內存管理器經常在內存中來回移動對象,依此來滿足各種應用程序的內存需要。

對象被移動意味著它的地址變化了。如果地址總是如此變化,我們該到哪里去找該對象呢?為了解決這個問題,Windows操作系統為各應用程序騰出一些內存儲地址,用來專門登記各應用對象在內存中的地址變化,而這個地址(存儲單元的位置)本身是不變的。

Windows內存管理器在移動對象在內存中的位置后,把對象新的地址告知這個句柄地址來保存。

這樣我們只需記住這個句柄地址就可以間接地知道對象具體在內存中的哪個位置。

這個地址是在對象裝載(Load)時由系統分配給的,當系統卸載時(Unload)又釋放給系統。

句柄地址(穩定)→記載著對象在內存中的地址----→對象在內存中的地址(不穩定)→實際對象本質:WINDOWS程序中并不是用物理地址來標識一個內存塊,文件,任務或動態裝入模塊的,相反的,WINDOWSAPI給這些項目分配確定的句柄,并將句柄返回給應用程序,然后通過句柄來進行操作。

但是必須注意的是程序每次從新啟動,系統不能保證分配給這個程序的句柄還是原來的那個句柄,而且絕大多數情況的確不一樣的。

假如我們把進入電影院看電影看成是一個應用程序的啟動運行,那么系統給應用程序分配的句柄總是不一樣,這和每次電影院售給我們的門票總是不同的一個座位是一樣的道理。

微軟是否必須制造與開關相同的拆分句柄

句柄,是整個windows編程的基礎。一個句柄是指使用的一個唯一的整數值,即一個四字節長的數值,來標志應用程序中的不同對象和同類對象中的不同的實例,諸如,一個窗口,按鈕,圖標,滾動條,輸出設備,控件或者文件等。應用程序能夠通過句柄訪問相應的對象的信息,但是句柄不是一個指針,程序不能利用句柄來直接閱讀文件中的信息。如果句柄不用在I/O文件中,它是毫無用處的。句柄是windows用來標志應用程序中建立的或是使用的唯一整數,windows使用了大量的句柄來標志很多對象。

windows之所以要設立句柄,根本上源于內存管理機制的問題—虛擬地址,簡而言之數據的地址需要變動,變動以后就需要有人來記錄管理變動,(就好像戶籍管理一樣),因此系統用句柄來記載數據地址的變更。

數據對象加載進入內存中之后即獲得了地址,但是這個地址并不是固定的,(至于為什么以及什么情況下變動具體需要大家研究虛擬地址的原理與機制我這里只提我確定知道的例子)數據對象會根據需要在內存與硬盤之間游弋移動(例如不常用的數據會為常用數據讓出其占用的內存空間進而被淘汰進硬盤中的虛擬內存之中以優化配置整體系統的資源進而提升效率性能),因此其物理地址總是變動的,那么作為管理者則必須對管理對象所發生的變化了如指掌才行,因此系統為進程分配固定的地址(句柄)來存儲進程下的數據對象變化后的地址也就是當前的地址,其實設計機制很簡單:系統的某個部門移動了對象的地址后,同時上報給句柄所屬部門管理者,管理者將改動寫入句柄即可。該數據被重新起用時去其所屬句柄內按內容存取即可。

句柄,英文:HANDLE,在Windows編程中是一個很重要的概念,在許多地方都扮演著重要的角色。但由此而產生的句柄概念也大同小異,比如:《MicrosoftWindows3Developer'sWorkshop》(MicrosoftPress,byRichardWilton)一書中句柄的概念是:在Windows環境中,句柄是用來標識項目的。

在程序設計中,句柄是一種特殊的智能指針。當一個應用程序要引用其他系統(如數據庫、操作系統)所管理的內存塊或對象時,就要使用句柄。

句柄與普通指針的區別在于,指針包含的是引用對象的內存地址,而句柄則是由系統所管理的引用標識,該標識可以被系統重新定位到一個內存地址上。這種間接訪問對象的模式增強了系統對引用對象的控制。

在上世紀80年代的操作系統(如MacOS和Windows)的內存管理中,句柄被廣泛應用。Unix系統的文件描述符基本上也屬于句柄。和其它桌面環境一樣,WindowsAPI大量使用句柄來標識系統中的對象,并建立與用戶空間之間的通信渠道。例如,桌面上的一個窗體由一個HWND類型的句柄來標識。如今,內存容量的增大和算法使得更簡單的指針愈加受到青睞,而指向另一指針的那類句柄受到冷淡。盡管如此,許多操作系統仍然把指向私有對象的指針以及進程傳遞給客戶端的內部數組下標稱為句柄。

衛生間中hgrn是什么

是一個句柄類型,同樣的還有HBRUSH,HFONT,HBITMAP,HPALETTE,HGRN等句柄是由操作系統來定位對象的一種間接指針,操作系統可以用這個東西來定位到我們創建的對象。

電腦出現句柄無效怎么解決

句柄無效通常是編程的錯誤。

這個警告音是否由于安裝了第三方軟件后提示的,如果是建議卸載掉不要使用,或查看是不是游戲本身遇到了問題,可以卸載重新下載安裝。

系統不能加載用戶配置,但能加載默認配置。

一般出現這個問題都是電腦的驅動程序出現了問題,可以先嘗試將電腦關閉然后重新啟動,安裝驅動程序試試。

mpi中什么是句柄

mpi中句柄是指WONDOWS用來標識被應用程序所建立或使用的對象的唯一整數,WINDOWS使用各種各樣的句柄標識諸如應用程序實例,窗口,控制,位圖,GDI對象等等。WINDOWS句柄有點象C語言中的文件句柄。從上面的定義中的我們可以看到,句柄是一個標識符,是拿來標識對象或者項目的,它就象我們的姓名一樣,每個人都會有一個,不同的人的姓名不一樣,但是,也可能有一個名字和你一樣的人。

從數據類型上來看它只是一個16位的無符號整數。

關于本次句柄是什么類型的數據和windows句柄是什么意思的問題分享到這里就結束了,如果解決了您的問題,我們非常高興。

返回列表
上一篇:
下一篇: