1.句柄是什么

2.WINDOWS任务管理器中的句柄,以及核心内存中的分页是什么啊?

3.系统术语“句柄”,句柄无效,是什么意思?

4.什么是句柄?以及什么是句柄图形,窗口句柄等?可否为我形象的说明?谢谢!

句柄是什么

win7句柄数过高怎么解决-电脑系统句柄什么意思

句柄就是用来区分各种内存对象的唯一标识符号,是个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不过是应用程序自定义的一些索引之类的东东,具体的意义和应用程序相关

WINDOWS任务管理器中的句柄,以及核心内存中的分页是什么啊?

你好!

关于句柄:句柄是WINDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。

从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。在WINDOWS编程中会用到大量的句柄,比如:HINSTANCE(实例句柄),HBITMAP(位图句柄),HDC(设备描述表句柄),HICON(图标句柄)等等,这当中还有一个通用的句柄,就是HANDLE

关于核心内存:核心内存即内核内存,是操作系统为内核对象分配的内存

核心内存是虚拟内存,自己或系统自动设置。

内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题, Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。举一个例子来说,如果电脑只有128MB物理内存的话,当读取一个容量为200MB的文件时,就必须要用到比较大的虚拟内存,文件被内存读取之后就会先储存到虚拟内存,等待内存把文件全部储存到虚拟内存之后,跟着就会把虚拟内里储存的文件释放到原来的安装目录里了。

系统术语“句柄”,句柄无效,是什么意思?

所谓句柄实际上是一个数据,是一个Long (整长型)的数据。

句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。

从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。

如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢?

为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。

句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地址(不稳定)→实际对象

本质:WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。

但是必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。如我们把进入**院看**看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次**院售给我们的门票总是不同的一个座位是一样的道理。

什么是句柄?以及什么是句柄图形,窗口句柄等?可否为我形象的说明?谢谢!

1)句柄在Windows系统中,是一个32位的整数;

2)Windows系统中很多(内存中)(如打开的文件,窗口,线程对象,进程对象等)都是用句柄来表示;

3)句柄相当于对象的,每一个对象的句柄,在系统中唯一的;

4)使用句柄,对操作系统来说,可以简化接口函数的设计(整数标识不同的对象);

5)每个应用程序启动,操作系统底层会为其创建句柄表。