Windows中的句柄】的更多相关文章

1.句柄是什么?   在windows中,句柄是和对象一一对应的32位无符号整数值.对象可以映射到唯一的句柄,句柄也可以映射到唯一的对象.2.为什么我们需要句柄?   更准确地说,是windows需要句柄.windows需要向程序员提供必要地编程接口,在这些接口中,允许程序员访问.创建和销毁对象.但是,出于封装地考虑,windows并不想向程序员返回指针.指针包含了太多的信息.首先指针给出了对象存储的确切位置:其次,要操作一个指针,程序员必须知道指针所指对象的内部结构特征,也即,windows必…
(一)句柄 在程序设计中,句柄(handle)是一种特殊的智能指针.当一个应用程序要引用其他系统(如数据库.操作系统)所管理的内存块或对象时,就要使用句柄. 句柄与普通指针的区别在于,指针包含的是引用对象的内存地址,而句柄则是由系统所管理的引用标识,该标识可以被系统重新定位到一个内存地址上.这种间接访问对象的模式增强了系统对引用对象的控制.通俗的说就是我们调用句柄就是调用句柄所提供的服务,即句柄已经把它能做的操作都设定好了,我们只能在句柄所提供的操作范围内进行操作,但是普通指针的操作却多种多样,…
谈windows中的句柄   每当一个进程打开一个对象,系统就返回一个句柄作为凭证,由此可以想到,句柄是依赖于具体的进程的,换句话说,句柄一定属于某个进程,以后在访问这个对象时就要使用这个凭证!     所以句柄还可以认为是一个进程和一个对象之间建立的一种连接,一座桥梁,一个上下文,就像一个门一样,已经打开.这种连接就持续存在,直到关闭. 一个进程可打开对个对象,就会拥有多个句柄,所以每个进程都拥有一个句柄表,在进程控制块EPROCESS中有个指针ObjectTable是_HANDLE_TABL…
写在前面:这里介绍句柄 对于“句柄”,在下一直停留在一知半解的认识层面,近日在下学习Windows编程,决定趁此机会将句柄彻底搞清楚.查阅了一些网络上的资料,发现网络上的讲解大概可以分为两类:一种是以比喻.类比的方式说明,这种方法虽然形象易懂,但并没有从原理上.本质上加以揭示,让人仍然想问“为什么?”.“怎么实现?”.另一种是给出源代码,无可厚非,这当然是最本质的说明了,但这样一来,又显得不够直观,初学者理解起来有一定的难度.鉴于此,在下尽微末之能,结合自己的愚见,在两者之间折中,用图解的方式来…
摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理.但不同操作系统的动态库由 于格式不同,在需要不同操作系统调用时需要进行动态库程序移植.本文分析和比较了两种操作系统动态库技术,并给出了将Visual C++编制的动态库移植到Linux上的方法和经验.推荐linux动态库的创建请阅读:<Linux静态/动态链接库的创建和使用>  文章来源:http://www…
一.大写标示符 Windows中的很多标识符都是以两个或者三个大写字母作为前缀的,且其后紧跟一个下划线.这些标识符都是常量数值,前缀表明该常量的一般类别.如下 前缀 常量 CS(Class Style) 类风格选项 CW(Create Window) 创建窗口选项 DT(Draw Text) 文本绘制选项 IDI(ID Image) 图标的ID号 IDC(ID Cursor) 光标的ID号 MB(Messge Box) 消息框选项 SND(Sound) 声音选项 WM(Window Messag…
内核对象用于管理进程.线程和文件等诸多种类的大量资源,每一个内核对象都只是一个句内存快,它由操作系统内核分配,并只能右操作系统内核访问.这个内存块是一个数据结构,其维护着与对象相关的信息,其中少数成员是所有对象都有的,其他大多数都是不同类型的对象特有的. 由于内核对象只能由操作系统内核访问,因此windows提供了句柄来标识内核对象,对于应用程序来说,这个句柄就相当于这个内核对象.应用程序创建一个内核对象,就会返回对应的句柄,然后可以以这个句柄作为参数,去调用操纵和关闭内核对象的函数. 操作系统…
来源  http://www.0xaa55.com/forum.php?mod=viewthread&tid=1401&extra=page%3D1  windows里常用句柄操作资源,而对应的对象由操作系统维护, 对象分:用户对象.GDI对象和内核对象: 用户对象用于windows管理,GDI对象用于绘图,内核对象用于内存.进程和IPC, Windows核心编程写道识别内核对象的方法是看有没有SECURITY_DESCRIPTOR参数     用户对象的资源包括:快捷键.光标.标记.dd…
1.引出句柄 CDC问题:1.CDC dc;dc.LineTo(point);无法运行 2.CDC *dc=GetDC();dc->LineTo(point);就可以运行了 MFC中有大量的句柄包装类.所谓句柄包装类,指的是这些类是封装了系统对象的句柄,并提供了一组成员函数作为访问系统对象的接口. 从这些句柄包装类的意义上可以看出,一个被完全构造好,处于良好状态的MFC对象,其中的句柄成员必须是有效的,才能正常使用那些成员函数来操作这个对象. 所以一般的MFC句柄包装类的构建要完成两个任务: 第…
今天咱们就聊聊windows中的进程和线程 2016-09-30 在讨论windows下的进程和线程时,我们先回顾下通用操作系统的进程和线程.之所以称之为通用是因为一贯的本科或者其他教材都是这么说的: 1.进程是系统分配资源的最小单位. 2.线程是处理器调度的最小单位. 3.一个进程可以包含很多线程,且这些线程共享进程内的所有资源. 然后又有大致三种线程模型:进程模型.用户级线程.内核级线程,三种模型如图所示 把线程模型按严格意义上的划分就是这样,但是事实上操作系统在真正运行过程中使用的要远比这…