CloseHandle()的问题
程序中用openprocess和duplicatehandle成功复制了进程的一个句柄,为什么用closehandle不能关闭这个句柄?(错误代码是:句柄无效!) 问题点数:0、回复次数:8Top
1 楼vcforever(累)回复于 2003-11-04 00:59:38 得分 0
我想应该是你调用这两个函数的时候得到的句柄就是个无效的句柄,
是不是你用这两个函数的时候,什么参数传错了!而导致的返回的句柄无效呢。
一般情况下CloseHandle()函数应该不会出现这种错误,他只是将句柄的引用计数减1,什么时候这个句柄的引用计数变成0,他就会被系统释放!Top
2 楼akiko(弥弥)回复于 2003-11-04 11:13:04 得分 0
如果duplicatehandle的第三个参数你填的是openprocess的返回值,就会有麻烦了Top
3 楼ljzcom()回复于 2003-11-04 11:15:40 得分 0
UP UPTop
4 楼liuhongyong(荒原困兽)回复于 2003-11-04 12:30:13 得分 0
对,closehandle 只能使句柄的引用记数减1,并没有关闭句柄的功能(除非当时句柄的引用记数就是1)Top
5 楼xinxinyu2000(菜鸟)回复于 2003-11-04 19:44:48 得分 0
就是closehandle返回0。复制的handle有属性为HANDLE_FLAG_PROTECT_FROM_CLOSE,调用sethandleinformation不能更改handle的属性。
不知道为什么?Top
6 楼xiaohedou(小河豆(充电中.18%.))回复于 2003-11-04 23:42:17 得分 0
这是一个受保护 的句柄!很少会对句柄实施保护,但在一个进程打开的进程是另一进程生成的子进程,而子进程又生成了子进程时,那么会又一个标志置位!参见:SetHandleInformation 这个函的说明!如果一定要关闭这个handle,那么必须:
SetHandleInformatiom(hobj,HANDLE_FLAG_PROTECT_FROM_CLOSE,0);
Closehandle(hobj);Top
7 楼xinxinyu2000(菜鸟)回复于 2003-11-05 18:16:54 得分 0
还是不行啊!
错误代码是:拒绝访问.
怎么回事啊?是不是权限不够啊?怎么提升权限,or提升对一个句柄的访问啊?
Top
8 楼xiaohedou(小河豆(充电中.18%.))回复于 2003-11-06 13:07:04 得分 0
你在什么用户下Openprocess的?你打开的是个服务程序?你想从RANG3访问RANG0的程序?Top
相关问题
- CloseHandle(pi.hThread);和CloseHandle(pi.hProcess);
- CloseHandle()问题?
- 关于CloseHandle的问题
- CloseHandle()函数的使用??
- CloseHandle(hProcess)和TerminateProcess(hProcess)有什么区别?
- CloseHandle(hProcess)和TerminateProcess(hProcess)有什么区别?
- 线程正常退出, 还用CloseHandle吗
- CreateThread成功后,紧接CloseHandle,不解
- 学习windows编程,问关于closehandle()
- 为什么CloseHandle不能释放 CreateMutex?




