句柄到底是什么意思?!
来源:百度文库 编辑:神马文学网 时间:2024/05/15 17:31:07
- 就是一个指针
在32位windows中占用4个字节
它指向内存的尺寸由它的类型决定
函数用句柄来传递数据
- 句柄在winnt.h中是这么定义的:
#ifdef STRICT
typedef void *HANDLE;
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
#else
typedef PVOID HANDLE;
#define DECLARE_HANDLE(name) typedef HANDLE name
#endif
STRICT修饰符的意思是变量类型是否要求严格定义。在这里,我们可以看到HANDLE其实就是一个void类型的指针。这样有什么用呢?学过c/c++语言的人都知道,void类型的指针可以通过强制类型转换变为任何类型的指针,使用最灵活。
在很多情况下,句柄是一个对象的指针,或者说是地址,一个对象的地址。比如对于分配的一个内存块(对象),它的句柄就是它的首地址,这没什么问题。
但是这并不总是成立的,对于没有对象意义的句柄尤其如此。这就取决与系统的定义了。比如系统钩子的类型HHOOK,说它是地址就没有任何意义。对于窗口句柄也是如此。在这些情况下,我们可以把句柄理解为某事物在系统该类事物列表中的ID。
是不是加点分呀?我从来没回答过50分以下的题目。:)
- 句柄是对象的索引,这样隐藏了危险的地址信息,同时也使系统对象和应用程序隔离。
- 句柄,你可以把他想象成一个把子,让别人来拎的把子.至于怎么来拎,是操作系统的事情
句柄不是指针,作为内核对象他是系统一个内核对象指针的索引.可以间接的认为他是指针的指针.
呵呵,说不清楚,关键是不同的句柄,有不同的处理方法
你需要知道的是如何得到一个句柄,然后保存他,在需要的地方把他作为参数传给函数就可以了,具体是什么其实不需要知道:)
- 在32位Windows中,“句柄不是指针”这句话已经不再成立了,比如GlobalAlloc()等内存分配函数返回的句柄实际就是该内存的地址。因此才不需要使用GlobalLock()来锁定句柄以得到地址。这些东西n年以前在MSDN中就说明了。
事实上,有实际对象意义的东西(占用一段存储器),比如上面说的内存的句柄基本就是地址。其它没有对象意义的东西是系统索引。这些你只要看看Windows的那几个头文件就能理解了。
说句题外话,如果没有看过Windows标准头文件和MFC源程序就不能算是真正的Windows程序员。撑死是一个合格的c/c++程序员。
句柄到底是什么意思?!
到底是什么意思?
雪碧Sprite 到底是什么意思?
“老公”到底是什么意思?
“老公”到底是什么意思?
“老公”到底是什么意思?
佛教的“慈悲”到底是什么意思?
佛教的“慈悲”到底是什么意思?_
句柄 指针
“老公”到底是什么意思? - 精华知识 - 搜搜问问
句柄和ID
句柄的本质
句柄的本质
句柄的本质
信息监控系统检测到不允许的词,到底是什么意思 爱问知识人
进程、窗口句柄、文件属性、程序运行状态
进程、窗口句柄、文件属性、程序运行状态
进程、窗口句柄、文件属性、程序运行状态
进程、窗口句柄、文件属性、程序运行状态
"唛头"是什么意思
DMOZ是什么意思?
_MSC_VER 是什么意思?
HR是什么意思?
"TMD"是什么意思?