如题所述
在Windows程序设计中,句柄是无法精确定义的术语。随便找一个高手,让他给你讲讲句柄是什么,恐怕他都很难给你一个具体的定义来。
在Windows程序设计中,句柄无所不在,窗口有窗口的句柄HWND,线程和进程也有句柄HANDLE,甚至有人把套接字也称为句柄(我就是这样的)。
句柄在英文中是handle,作为动词讲是处理的意思。简而言之,句柄是处理对象的一个接口,对于程序中所涉及的对象,你可以通过句柄去操作他。你不应该试图去回答句柄是什么,而应该从务虚的角度去理解他,知道他干什么即可。
有 人说,因为handle的定义是void *,因此他是一个指针。有些熟悉内核的人说这是一个索引。这些说法都是不准确的。需要注意的是,微软并没有精确定义句柄的含义,也许在某个特殊的操作系统 中,他使用了一种内部含义,但是在其他版本中,就不保证这样了。任何对句柄的内在假设都可能导致灾难性的后果。
API是接口,句柄是接口,两者有什么区别?API是一个通用的函数族,他处理所有的对象,而句柄是和某个具体对象相关联的数据结构。只有借助句柄,API才知道处理哪个对象。句柄是对内核对象的引用。
在Windows程序设计中,句柄无所不在,窗口有窗口的句柄HWND,线程和进程也有句柄HANDLE,甚至有人把套接字也称为句柄(我就是这样的)。
句柄在英文中是handle,作为动词讲是处理的意思。简而言之,句柄是处理对象的一个接口,对于程序中所涉及的对象,你可以通过句柄去操作他。你不应该试图去回答句柄是什么,而应该从务虚的角度去理解他,知道他干什么即可。
有 人说,因为handle的定义是void *,因此他是一个指针。有些熟悉内核的人说这是一个索引。这些说法都是不准确的。需要注意的是,微软并没有精确定义句柄的含义,也许在某个特殊的操作系统 中,他使用了一种内部含义,但是在其他版本中,就不保证这样了。任何对句柄的内在假设都可能导致灾难性的后果。
API是接口,句柄是接口,两者有什么区别?API是一个通用的函数族,他处理所有的对象,而句柄是和某个具体对象相关联的数据结构。只有借助句柄,API才知道处理哪个对象。句柄是对内核对象的引用。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2016-11-26
内存地址是计算机硬件中的概念,用来描述计算机内部存储的物理位置;
指针是某些编程语言中的概念,用来描述程序数据的存储位置;
句柄/ID指针/Handle是程序开发API中某些函数接口中的概念,通常用来描述和资源(包括内存分配、文件存取、设备驱动等等)相关的数据结构,由于用直接用结构作传递参数效率和通用性不好,所以一般用指针,这类指针被取名为Handle,由于资源有很多种,指向的结构也不全一样,所以基于通用性考虑,该类指针通常被定义成void*,或基类指针。本回答被网友采纳
指针是某些编程语言中的概念,用来描述程序数据的存储位置;
句柄/ID指针/Handle是程序开发API中某些函数接口中的概念,通常用来描述和资源(包括内存分配、文件存取、设备驱动等等)相关的数据结构,由于用直接用结构作传递参数效率和通用性不好,所以一般用指针,这类指针被取名为Handle,由于资源有很多种,指向的结构也不全一样,所以基于通用性考虑,该类指针通常被定义成void*,或基类指针。本回答被网友采纳