`

句柄是什么

阅读更多

原写于2012-04-06

 

注:摘自网络,整理转载

 

1.句柄就是一个标识符,只要获得对象的句柄,我们就可以对对象进行任意的操作。

 

2.句柄不是指针,操作系统用句柄可以找到一块内存,这个句柄可能是标识符,mapkey,也可能是指针,看操作系统怎么处理的了。

fd算是在某种程度上替代句柄吧,Linux 有相应机制,但没有统一的句柄类型,各种类型的系统资源由各自的类型来标识,由各自的接口操作。

 

3.http://tech.ddvip.com/2009-06/1244006580122204_11.html

在操作系统层面上,文件操作也有类似于FILE的一个概念,在Linux里,这叫做文件描述符(File Descriptor),而在Windows里,叫做句柄(Handle)(以下在没有歧义的时候统称为句柄)。用户通过某个函数打开文件以获得句柄,此 后用户操纵文件皆通过该句柄进行。

 

设计这么一个句柄的原因在于句柄可以防止用户随意读写操作系统内核的文件对象。无论是Linux还是Windows,文件句柄总是和内核的文件对象相关联的,但如何关联细节用户并不可见。内核可以通过句柄来计算出内核里文件对象的地址,但此能力并不对用户开放。

下面举一个实际的例子,在Linux中,值为012fd分别代表标准输入、标准输出和标准错误输出。在程序中打开文件得到的fd3开始增长。 fd具体是什么呢?在内核中,每一个进程都有一个私有的打开文件表,这个表是一个指针数组,每一个元素都指向一个内核的打开文件对象。而fd,就是这 个表的下标。当用户打开一个文件时,内核会在内部生成一个打开文件对象,并在这个表里找到一个空项,让这一项指向生成的打开文件对象,并返回这一项的下标 作为fd。由于这个表处于内核,并且用户无法访问到,因此用户即使拥有fd,也无法得到打开文件对象的地址,只能够通过系统提供的函数来操作。

 C语言里,操纵文件的渠道则是FILE结构,不难想象,C语言中的FILE结构必定和fd有一对一的关系,每个FILE结构都会记录自己唯一对应的fd

 

写道
句柄 http://zh.wikipedia.org/wiki/%E5%8F%A5%E6%9F%84
在程序设计 中,句柄是一种特殊的智能指针 。当一个应用程序 要引用其他系统(如数据库、操作系统 )所管理的内存 块或对象 时,就要使用句柄。
句柄与普通指针 的区别在于,指针包含的是引用对象 的内存地址 ,而句柄则是由系统所管理的引用标识,该标识可以被系统重新定位到一个内存地址 上。这种间接访问对象 的模式增强了系统对引用对象 的控制。(参见封装 )。
在上世纪80年代的操作系统(如Mac OS 和Windows )的内存管理 中,句柄被广泛应用。Unix 系统的文件描述符 基本上也属于句柄。和其它桌面环境 一样,Windows API 大量使用句柄来标识系统中的对象 ,并建立操作系统与用户空间 之间的通信渠道。例如,桌面上的一个窗体由一个HWND 类型的句柄来标识。
如今,内存 容量的增大和虚拟内存 算法使得更简单的指针 愈加受到青睐,而指向另一指针的那类句柄受到冷淡。尽管如此,许多操作系统 仍然把指向私有对象 的指针以及进程传递给客户端 的内部数组 下标称为句柄。

 

 

分享到:
评论

相关推荐

    什么是句柄

    ### 什么是句柄 在计算机科学领域,句柄(Handle)是一个重要的概念,尤其是在操作系统和编程语言中。从直观的角度理解,句柄就像一个“把手”,通过它,我们可以轻松地“抓取”和操作背后复杂的数据结构或资源,而...

    获取窗口标题和句柄

    首先,我们要理解窗口句柄是什么。句柄是Windows操作系统分配给每个窗口、控件或者任何其他系统资源的一个唯一标识符。这个标识符使得应用程序能够通过这个句柄与特定的窗口进行交互,如改变窗口大小、位置,甚至...

    易语言取窗口句柄标题类名模块源码.zip

    首先,我们要理解窗口句柄是什么。在Windows操作系统中,窗口句柄(HWND)是系统分配给每个窗口的一个唯一标识符,类似于窗口的身份证明。通过窗口句柄,程序可以对特定窗口进行操作,如发送消息、改变大小、移动...

    窗口句柄查询器01.rar

    首先,我们要理解窗口句柄是什么。在Windows编程中,当创建一个窗口时,系统会为这个窗口生成一个句柄,它是一个整数值,代表了窗口在内存中的位置。开发人员可以利用这个句柄发送消息、改变窗口属性、绘制窗口内容...

    mfc获得各个类的句柄.doc

    这是一个关于mfc获得各个类的句柄的文档资源,有需要的朋友下载阅读哦。

    句柄搜索 显示句柄

    首先,我们要理解什么是句柄。在Windows操作系统中,句柄是一种标识符,用于唯一地引用系统中的对象,如进程、线程、窗口、文件、设备等。句柄是操作系统内部使用的32位或64位无符号整数,它不是对象本身,而是指向...

    什么是句柄-之一

    "句柄的概念和实现机理" 句柄是 Windows 操作系统中用来标识被应用程序所建立或使用的对象的唯一整数。它有点象 C 语言中的文件句柄,用于标识对象或者项目,每个对象或者项目都有一个不同的句柄。从数据类型上来看...

    窗口句柄捕获工具

    【标题】:“窗口句柄捕获工具”是一种实用程序,专为开发者设计,用于便捷地实时获取鼠标指针下方窗口的句柄。这个小工具在功能上超越了经典的Spy++,提供了一个更简单、更直观的界面来追踪和分析Windows应用程序的...

    个人做到VB获取简单游戏句柄器

    2. **句柄的概念**:理解句柄是什么,以及如何通过句柄来操作窗口或控件。 3. **错误处理**:由于游戏可能会动态改变窗口属性,因此需要考虑句柄无效或找不到的情况,添加适当的错误处理代码。 4. **同步和异步操作*...

    易语言句柄查找工具

    首先,我们来理解什么是句柄。句柄不是对象本身,而是一个唯一的数值,通过这个数值,程序可以与操作系统交互,对特定的对象进行操作。由于句柄的存在,应用程序可以安全地处理系统资源,因为它们不必直接操作这些...

    GetPanelHandle.zip_labview 句柄_labview窗口句柄_labview获取句柄_句柄_句柄labvi

    找了好久才找到的,用LabVIEW编写的,可以获取窗口句柄的一个函数,很好用

    c# 句柄类库 .net操作句柄

    在.NET框架中,C#语言提供了丰富的类库来操作各种系统资源,其中之一就是对句柄的操作。句柄在操作系统中是一种标识符,用于唯一地识别和访问操作系统内核中的对象,如窗口、文件、设备等。本文将深入探讨C#中如何...

    窗口句柄浅析和获取窗口句柄的方法

    在Windows编程中,句柄(Handle)是一个至关重要的概念,它是操作系统用来唯一标识系统资源如窗口、内存块、文件、GDI对象等的一种抽象标识符。句柄并不是资源的实际地址,而是一个由操作系统分配的整数值,用于在...

    MFC 句柄的理解

    在MFC中,句柄(Handle)扮演着关键角色,它是一种标识符,用于间接访问操作系统中的内核对象。理解句柄的概念对于进行高效且安全的Windows编程至关重要。 首先,句柄是一个数值,它可以用来检索和操作大量的数据,...

    VB获取窗口句柄

    在编程领域,窗口句柄(Window Handle)是一个重要的概念,特别是在使用Visual Basic(VB)进行Windows应用程序开发时。窗口句柄是操作系统分配给每个窗口的一个唯一标识符,它是一个整数值,用来区分系统中的不同...

    windows进程句柄权限控制

    首先,我们需要理解什么是进程句柄。在Windows中,每个对象(如文件、窗口、线程、进程等)都有一个唯一的标识符,称为对象句柄。进程句柄就是进程对这些对象的引用,通过句柄,进程可以访问和操作对象。句柄不仅...

    句柄查看精灵(ViewWizard)查看窗口和控件句柄、类名、标题、风格

    【标题】"句柄查看精灵(ViewWizard):深入探索窗口与控件的句柄和属性" 在Windows操作系统中,程序的界面是由各种窗口和控件构成的,它们通过句柄来唯一标识。句柄查看精灵(ViewWizard)是一款强大的工具,它能够...

    窗口句柄获取教程

    窗口句柄获取及API的调用: .版本 2 .程序集 窗口程序集1 .子程序 _按钮_点击按钮_被单击 .局部变量 父窗口句柄, 整数型 .局部变量 编辑框窗口句柄, 整数型 .局部变量 按钮窗口句柄, 整数型 .局部变量 临时文本, ...

    spy 微软工具 查看句柄

    标题中的“spy 微软工具 查看句柄”指的是微软提供的一款名为Spy++的调试工具,它是Visual Studio开发环境的一部分。Spy++是一个强大的系统监视工具,尤其适用于Windows应用程序的开发者,它可以帮助用户查看窗口...

    myspy查看句柄工具

    首先,我们来详细了解一下什么是句柄。句柄是一个非零整数值,它代表了系统内部的一个指针,但这个值对用户来说是透明的。由于系统对象可能被频繁创建和销毁,直接使用内存地址作为标识不安全,因此使用句柄作为对象...

Global site tag (gtag.js) - Google Analytics