windows句柄---转载自百度百科
2014-04-30 17:19
190 查看
句柄是一个标识符,是拿来标识对象或者项目的。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。
如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是驻留在内存中的。简单地理解,似乎我们只要获知这个内存的首地址,就可以随时用这个地址访问对象了。如果您真的这样认为,那您可就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,以此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找那一个对象呢?
为了解决这个问题,Windows操作系统为全体应用程序腾出一些内存单元,用来专门登记各应用程序的对象在内存中的地址的变化,而前者的物理地址在系统运行期间是始终保持不变的。Windows内存管理器移动了对象在内存中的位置后,会把该对象新的地址及时地告知给对应的句柄进行更新。这样我们只要知道这个句柄,就可以间接地知道对象具体在内存中的哪个位置了。这个地址是在对象装载(Load)时由系统分配给的,当对象卸载时(Unload)又释放给系统。
如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是驻留在内存中的。简单地理解,似乎我们只要获知这个内存的首地址,就可以随时用这个地址访问对象了。如果您真的这样认为,那您可就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,以此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找那一个对象呢?
为了解决这个问题,Windows操作系统为全体应用程序腾出一些内存单元,用来专门登记各应用程序的对象在内存中的地址的变化,而前者的物理地址在系统运行期间是始终保持不变的。Windows内存管理器移动了对象在内存中的位置后,会把该对象新的地址及时地告知给对应的句柄进行更新。这样我们只要知道这个句柄,就可以间接地知道对象具体在内存中的哪个位置了。这个地址是在对象装载(Load)时由系统分配给的,当对象卸载时(Unload)又释放给系统。
相关文章推荐
- [转载]RestSharp.WindowsPhone调用Rest服务
- 史上最详细Windows版本搭建安装React Native环境配置 转载,比官网的靠谱亲测可用
- Windows 7如何限制运行特定的应用程序(转载)
- Passing Data between Windows Forms(转载)
- (转载)缺陷跟踪系统Mantis在Windows下的安装配置
- [转载]Windows Live Writer里对CSDN BLOG的配置
- [转载] Windows平台下配置Mysql
- 艾伟_转载:基于.NET平台的Windows编程实战(三)—— 项目的创建及主界面的设计
- 转载:vmware 网络配置实例二 windows xp host + linux guest
- windows编程学习之句柄
- c# 窗口句柄有关的常见问题(转载)
- [转载]初识Windows 脚本文件(*.wsf)
- windows句柄的理解
- windows编程--句柄的理解及其与指针的区别
- .Net Core 项目在Windows服务中托管【转载】
- windows笔记-跨越进程边界共享内核对象【对象句柄的继承性】
- 转载- windows下的unix增强工具
- Microsoft Windows CE 显示设备的驱动程序和硬件(转载)
- 使用scp在windows和Linux之间互传文件 (转载)
- 转载:windows安装服务命令sc