Windows常见面试题——句柄
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows常见面试题——句柄相关的知识,希望对你有一定的参考价值。
1.什么是句柄,请谈谈你的理解
答:句柄实际上是一个long型数据,是操作系统在生成对象时为对象分配的唯一标识。
Windows虽然是C和汇编写的,但是也使用了面向对象的思想。(比如窗口,文件,绘图设备环境等等) 他们都是对象,一个对象的数据应该是隐藏起来的,我们应当只能通过接口去修改数据,但是和C++不同的是,没有把函数和数据封装到一起,所以就有了句柄这一概念,用以代表某一个对象,然后使用函数来操作这个对象时,就需要把句柄传进去,作用类似于C++中的this指针。最终目的是用来访问对象,一个句柄代表着一个对于对象的打开操作。句柄就是我们去访问对象的钥匙,是对象的索引。
2.句柄都有哪些种类?
答:常见的句柄有:
HWND 窗口句柄
HINSTANCE 当前实列句柄
HCURSOR 光标句柄
HFONT 字体句柄
HPEN 画笔句柄
HBRUSH 画刷句柄
HDC 设备环境句柄
HBITMAP 位图句柄
HICON 图标句柄
HMENU 菜单句柄
HFILE 文件句柄
3.对于内核进程来说,进程中有一个进程表。不同进程中的进程表存储的相同的句柄值代表的是同一个内核对象吗?
答:内核对象的句柄是和进程相关的,对于同一个对象来讲,在不同的进程中,其句柄值是不一样的,这点和GDI对象不同,GDI对象的句柄值是全局有效的,在不同的进程中,可以使用同一个句柄值访问同一个GDI对象。在每一个进程对象中,都有一个句柄表,用以记录本进程所打开的所有内核对象,句柄的值则可以简单的看作句柄表中的索引,所以内核对象的句柄值,仅仅对本进程有效。
4.什么是模块,模块句柄的本质是什么?
以上是关于Windows常见面试题——句柄的主要内容,如果未能解决你的问题,请参考以下文章