Windows核心编程学习笔记(10)--伪句柄
来源:互联网 发布:java string kmp 编辑:程序博客网 时间:2024/06/05 02:28
Drecik学习经验分享
转载请注明出处:http://blog.csdn.net/drecik__/article/details/8088945
在程序中通常使用GetCurrentProcess或GetCurrentTread函数来获得当前的进程句柄或现场句柄,但需要了解到他们获得的是一个伪句柄,该句柄不用调用CloseHandle来关闭,若使用CloseHandle传入它们,函数会返回FALSE,GetLastError返回ERROR_INVALID_HANDLE
需要注意的是伪句柄只能在当前线程或当前进程中使用,不能将他们在线程之间或进程之间传递,如果传递给其他线程或进程,接收到的线程或进程在使用他们的时候会当做自己的进程或线程句柄,例如下面代码:
DWORD WINAPI ParentThread( PVOID pvParam ){HANDLE hThreadParent = GetCurrentThread();CreateThread( NULL, 0, ChildThread, (PVOID)hThreadParent, 0, NULL );}DWORD WINAPI ChildThread( PVOID pvParam ){// 此时的hThreadParent其实是线程ChildThread的句柄;HANDLE hThreadParent = (HANDLE)pvParam;}如果希望获得真正的句柄可以使用复制句柄函数DuplicateHandle来复制出一个真正的句柄,但是注意使用完之后要调用CloseHandle来关闭句柄:
BOOL DuplicateHandle(HANDLE hSourceProcessHandle,// 待复制句柄所在的进程句柄;HANDLE hSourceHandle,// 待复制的进程或线程句柄(也可以其他句柄);HANDLE hTargetProcessHandle,// 要复制到的均所在的进程句柄;LPHANDLE lpTargetHandle,// 用来返回复制后的句柄;DWORD dwDesiredAccess,// 指定掩码,根据最后一个参数觉得;BOOL bInheritHandle,// 是否继承;DWORD dwOptions// 0或者DUPLICATE_SAME_ACCESS或DUPLICATE_CLOSE_SOURCE;);下面只是给出复制线程句柄和进程句柄例子:
DuplicateHandle(GetCurrentProcess(),GetCurrentThread(),GetCurrentProcess(),&hThread,0,FALSE.DUPLICATE_SAME_ACCESS );// 表示希望目标句柄拥有和源句柄一样的访问掩码;DuplicateHandle(GetCurrentProcess(),GetCurrentProcess(),GetCurrentProcess(),&hProcess,0,FALSE.DUPLICATE_SAME_ACCESS );
- Windows核心编程学习笔记(10)--伪句柄
- Windows核心编程---句柄和伪句柄
- Windows核心编程笔记(1)----句柄
- Windows核心编程读书笔记4——线程(4)当前线程句柄与伪句柄
- Windows核心编程学习笔记(3)--获得可执行文件的实例和dll文件的实例句柄
- Windows核心编程笔记(三) 内核对象与句柄
- windows核心编程学习笔记
- windows核心编程学习笔记
- Windows核心编程学习笔记
- 《windows核心编程》学习笔记 内核对象
- Windows 核心编程学习笔记-第一章
- Windows 核心编程学习笔记-第二章
- Windows核心编程ErrorShow学习笔记
- Windows核心编程学习笔记一
- windows核心编程学习笔记一
- WINDOWS核心编程学习笔记--字符串处理
- windows 核心编程学习笔记3
- Windows核心编程学习笔记(8)--作业
- Error: SDE中的数据在ArcMap下平移报错超出边界范围
- Java实现给图片添加水印
- 多样化、简单化和平民化:不仅仅是云计算
- 15本Delphi书籍(PDF格式)下载
- 单例模式实例
- Windows核心编程学习笔记(10)--伪句柄
- 详解JDBC与Hibernate区别
- fcntl()函数的用法
- Common Tasks :Connecting to a Host
- oracle用户解锁的三种方式
- Highcharts纯Javascript图表使用讲解(附Demo全源码案例)
- JS获取时间显示上午,下午
- 与moment.js整合使用的javascript日期选择期 - Pikaday
- C++头文件