Handle
是代表系统的内核对象,如文件句柄,线程句柄,进程句柄。
在Windows环境中,句柄是用来标识项目的,这些项目包括:模块(module)、任务(task)、实例 (instance)、文件
(file)、内存块(block of memory)、菜单(menu)、控制(control)、字体(font)、资源(resource),包
括图标(icon),光标 (cursor),字符串(string)等、GDI对象(GDI object),包括位图(bitmap),画刷
(brush),元文件(metafile),调色板(palette),画笔(pen),区域 (region),以及设备描述表
(device context)。
WONDOWS系统对内核对象以链表的形式进行管理,载入到内存中的每一个内核对象都有一个线性地址,同时相对系统来说,在串列中有一个索引位置,这个索
引位置就是内核对象的handle。
句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位
图,GDI对象等等。
句柄只有当唯一的确定了一个项目的时候,它才开始有意义。句柄对应着项目表中的一项,只是一个索引值,不是物理地址,应用程序还不能直接存取这块内存,而
只有WINDOWS本身才能直接存取这个表,应用程序只能通过API函数来处理不同的句柄。
HMODULE
是代表应用程序载入的模块,win32系统下通常
是被载入模块的线性地址。
HINSTANCE
在win32下与HMODULE是相同的东西,在Win32下还存在主要是因为Win16 程序使用HINSTANCE来区别任务,等同于
HMODULE。