句柄是一个序号, 它不是一个内存地址。 它用于管理Windows内核对象,比如用户打开一个文件,Windows即会建立一个文件内核对象,所谓内核对象就是一块内存结构,里面有文件路径,文件大小,当前文件指针等等信息。Windows系统会打开很多的文件,因此就有很多的文件内核对象,同样Windows系统还会建立其它的类型的很多很多的内核对象。如何管理这么多的内核对象 呢?Windows通过建立一个叫做句柄表的东西,用于记录内核对象的地址。表中每一个元素,都是一个内核对象的起始地址,然后给每一个对象对应一个序号,此序号即为句柄。 //句柄表类似于下面的结构,像0、1、2这样的序号即为句柄 ---------------------------------------------------- 0 第一个内核对象的地址 1 第二个内核对象的地址 2 第三个内核对象的地址 ----------------------------------------------------

差不多如此了。在16位windows时期,句柄差不多也是对象在内存中分配的初始地址;但在win32,标识对象用一个32位的,唯一的整数.然后系统同这个对象打交道,主要就通过这个handle.
传统上操作系统内核和系统服务API都是 C 语言接口的,但是其内部设计理念上又是OO的,所以有对象概念却没有对应的语言语法支持。句柄的作用就是在 C 语言环境下代替 C++ 的对象指针来用的。
创建句柄就是构造,销毁句柄就是析构,用句柄调用函数相当于传入this指针。如果有系统API是 C++ 接口的,那么就没有句柄了,而是某个接口指针,IXXXPtr之类的,比如Windows的com ptr。
句柄是系统分配给你操作文件的权限,你操作所有的文件都需要用到系统分配给你的句柄.比如说
fin就是你申请后,系统分配给你c:\123.txt的句柄.你通过FIN来调用这个文件.
说简单点,句柄无效出现这种提示,有三种可能:;
3、系统有故障;你可以把软件在别人的相同系统的电脑上装一下 ,如果不可以使用,你的软件有问题;如果可以使用,你的电脑很有可能中毒了,格式化硬盘,重装系统吧;所谓句柄实际上是一个数据,是一个Long (整长型)的数据;句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等,WINDOWS句柄有点象C语言中的文件句柄;从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样;但是,也可能有一个名字和你一样的人,从数据类型上来看它只是一个16位的无符号整数,应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。