句柄和ID
来源:互联网 发布:淘宝商城下载到手机上 编辑:程序博客网 时间:2024/03/28 22:17
在Windows程序设计中,句柄是无法精确定义的术语。随便找一个高手,让他给你讲讲句柄是什么,恐怕他都很难给你一个具体的定义来。在Windows程序设计中,句柄无所不在,窗口有窗口的句柄HWND,线程和进程也有句柄HANDLE,甚至有人把套接字也称为句柄(我就是这样的)。句柄在英文中是handle,作为动词讲是处理的意思。简而言之,句柄是处理对象的一个接口,对于程序中所涉及的对象,你可以通过句柄去操作他。你不应该试图去回答句柄是什么,而应该从务虚的角度去理解他,知道他干什么即可。有人说,因为handle的定义是void *,因此他是一个指针。有些熟悉内核的人说这是一个索引。这些说法都是不准确的。需要注意的是,微软并没有精确定义句柄的含义,也许在某个特殊的操作系统中,他使用了一种内部含义,但是在其他版本中,就不保证这样了。任何对句柄的内在假设都可能导致灾难性的后果。API是接口,句柄是接口,两者有什么区别?API是一个通用的函数族,他处理所有的对象,而句柄是和某个具体对象相关联的数据结构。只有借助句柄,API才知道处理哪个对象。有些对象有ID。句柄表示特殊的对象,ID也表示某个对象,为什么要两个东西来表示?首先,句柄不能唯一表示对象。一个对象可以有多个句柄。例如:假设我们用CreateProcess创建一个进程,该进程的第一个线程的句柄会返回给调用CreateProcess的进程。同时,在新创建的进程中,该线程也会有一个句柄。这样,这个线程就有两个句柄。我们也可以用DuplicateHandle复制一个句柄,这个句柄和原来句柄是不一样的,但是他们都表示同一个对象。而每个有ID的对象,在系统范围内,ID肯定是唯一的。其次,句柄所能实现的功能ID不能实现。毕竟ID只是一个数字,他不能记录很多信息。而句柄可能在其内部结构中记录了很多信息(如权限、有无信号等)。总之,如果试图解释他到底是什么,学习句柄就会误入歧途。从虚的角度去理解,对于新手是难一点,但是这也许是唯一正确的办法。
- stdafx.* 句柄 和 ID
- 句柄和ID
- 句柄和ID
- 句柄、指针和ID之间的转换
- 获得当前进程ID和伪句柄
- 线程ID和句柄的区别
- 线程句柄和线程ID的区别
- VC++的窗口句柄和窗口ID
- Windows中句柄和ID的区别
- 枚举所有进程ID和线程ID,以及窗口句柄
- 进程句柄和进程ID的区别和关系
- 进程和线程句柄和ID之间转换函数
- 句柄和ID有什么区别(百度面试题目)
- 根据process id和窗口名得到窗口句柄
- 获取当前进程/线程的ID、句柄和内核地址
- WIN32进程快照以及进程ID和句柄查找
- 【转】VC++的窗口句柄和窗口ID
- WIN32进程快照以及进程ID和句柄查找
- 如何读懂路由表?
- 无外部控件制作多媒体播放器(一)
- windows进程中的内存结构
- J2SE入门
- 关于JAVA打包问题
- 句柄和ID
- 成为软件高手的几大忌讳(不想成为高手者无须阅读)
- 调试技巧之调用堆栈
- java模式之我见
- 深圳:没有金子只有机会
- Windows中比较常用的快捷键
- 设计模式
- VB中创建可以输出函数的DLL 作者:TechnoFantasy
- 程序员如何防止脑疲劳:下午补充一些干果