文件占坑

DuplicateHandle函数学习到的知识。ide

其实咱们在使用函数GetCurrentProcess得到的句柄值是虚假的句柄值。若是咱们须要在进程之间通讯使用这些句柄的话,就须要将其转换。函数

下边的是MSDN上面的解释:学习

The pseudo handle need not be closed when it is no longer needed. Calling the CloseHandle function with a pseudo handle has no effect. If the pseudo handle is duplicated by DuplicateHandle, the duplicate handle must be closed.spa

这个伪句柄在再也不使用的时候是不须要关闭的,使用CloseHandle函数来关闭伪句柄是没有做用的。若是伪句柄被DuplicateHandle函数复制,那么复制的句柄就必须被关闭。线程

因此咱们在使用GetCurrentProcess/GetCurrentThread获得的句柄只适合进程或者线程内部使用。对象


在系统中,对象被分为两类:内核对象和用户对象,如进程对象,线程对象,文件映射对象都是内核对象;而窗口菜单等,都是用户对象。blog

二者之间的区别:索引

用于标识用户对象的句柄是系统惟一的,这也就是为何一个进程能够对另一个的用户对象句柄进行操做。进程

内核对象是为了增强内核系统的稳定性,所以,内核对象句柄的进程相关的,在每个进程中,都有一个内核对象表,每个对象的索引(不彻底是)做为内核对象的句柄。get


因为DuplicateHandle复制的句柄和源句柄的对象指向的是同一个对象,因此,任何对复制句柄的改变都会影响到源句柄和目的句柄。


转自:http://mzf2008.blog.163.com/blog/static/35599786201152815654616/

相关文章
相关标签/搜索