`

何为句柄

阅读更多
引用
句柄是一种指向指针的指针。
我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢?
  为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。
  注意:
  内核对象句柄,是用来标识某个内核对象的一个id
  同一个对象的该id对于每个进程是不同的,具体如何实现是ms不公开的算法,以下是一个近似的,可能的算法:
  进程创建时,windows系统为进程构造了一个句柄表
  当该进程希望获得一个内核对象句柄或者创建一个内核对象从而获得该对象句柄时
  系统会将在句柄表中增加一个表项,表项的内容中存储了指向目标内核对象的指针
  同时,系统返回这个表项在句柄表中的索引作为句柄
  
  这样,进程就通过句柄查询句柄表得到对象指针,从而可以访问该对象。
  同时又由于有了句柄表的保护,可以防止对内核对象的非法操作
分享到:
评论

相关推荐

    句柄搜索 显示句柄

    在IT领域,句柄搜索和显示句柄是操作系统级别的编程技术,主要应用于系统资源的管理和调试。本篇文章将深入探讨2012年备受推崇的“金鹰句柄搜索”工具,它集成了闪动句柄功能,为开发者和系统管理员提供了一种强大的...

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

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

    窗口句柄捕获工具

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

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

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

    易语言句柄查找工具

    《易语言句柄查找工具详解》 在计算机编程领域,特别是在Windows系统环境下,"句柄"(Handle)是一个重要的概念。句柄是操作系统为应用程序提供的一种机制,它用于标识和引用系统中的对象,如窗口、文件、设备等。...

    窗口句柄获取教程

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

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

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

    易语言鼠标获取窗口句柄源码

    然而,在易语言中,由于句柄通常是整数值,不需要特别的释放操作,但仍然需要注意句柄的有效性,防止对无效句柄进行操作。 核心知识点四:源码分析与调试 对于给定的“易语言鼠标获取窗口句柄源码”,我们可以通过...

    windows进程句柄权限控制

    在Windows操作系统中,进程句柄权限控制是内核级别的安全机制,它关乎系统资源的访问与管理。进程句柄是Windows系统中用于标识和管理对象(如文件、窗口、设备等)的一种方式,而权限控制则确保了只有拥有适当权限的...

    VB获取窗口句柄

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

    易语言取当前激活的窗口句柄

    在IT领域,尤其是在编程实践中,窗口句柄是一个重要的概念,特别是在Windows操作系统下的应用程序开发中。窗口句柄(HWND)是Windows API提供的一种机制,用于唯一标识一个窗口对象。它是一个整数值,用来作为函数...

    e语言-句柄操作类易语言模块

    资源介绍:通过句柄操作创建,发送文本消息,发送消息,禁止,可视,取标题, 取窗口风格,取窗口扩展风格,取当前句柄,取父句柄,取类名,取内容,取上一个句柄,取下一个句柄,取子句柄,通过标题创建,通标题...

    Matlab GUI函数句柄

    Matlab GUI(Graphical User Interface)函数句柄是用于在Matlab环境中操作和控制图形用户界面组件的关键概念。GUI函数句柄提供了对图形对象(如按钮、文本框、轴等)的唯一标识,使得程序员能够精确地操控这些对象...

    窗体句柄_vb句柄获取窗口_

    在编程领域,尤其是在Windows应用程序开发中,"窗体句柄"(Window Handle)是一个非常重要的概念。窗体句柄是操作系统用来唯一标识一个窗口的整数值,它相当于窗口的一个身份证,使得程序可以通过这个句柄来操作或...

    动态捕获Windows窗口句柄工具

    动态捕获Windows窗口句柄工具。 Inspect 支持无焦点窗口捕获,可动态实时监听当前系统打开的窗口,并获取窗口的详细信息。 可以很方便的对软件进行模拟操作。。。 DDDD 动态捕获Windows窗口句柄工具。 Inspect 支持...

    C++典型句柄类的实现

    在C++编程中,句柄类是一种常见的设计模式,它用于封装对底层资源(如对象指针)的访问,提供安全、高效的管理机制。本文将深入探讨如何实现典型的句柄类,特别是在继承和多态环境下的应用。我们将讨论两种常用的...

    易语言模糊标题取句柄

    句柄是操作系统中用于标识对象(如窗口、控件)的一个唯一标识符,而“模糊标题取句柄”则是指通过部分窗口标题来获取该窗口的句柄。 在Windows操作系统中,每个窗口都有一个唯一的句柄,开发者可以通过这个句柄来...

    获得窗体句柄函数总结

    ### 获得窗体句柄函数总结:深入解析与应用 在Windows编程中,句柄是一种标识符,用于标识各种资源或对象,如窗口、菜单、图标等。获得窗体句柄是进行进一步操作的前提,比如修改窗口属性、发送消息等。本文将详细...

    MFC获得各类指针,句柄的方法

    ### MFC获得各类指针,句柄的方法 #### 概述 MFC(Microsoft Foundation Classes)作为Windows平台上的一个强大的C++类库,为开发者提供了丰富的API来简化GUI应用程序的开发工作。在MFC开发中,获取句柄和指针是...

    spy 微软工具 查看句柄

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

Global site tag (gtag.js) - Google Analytics