首页
社区
课程
招聘
求助关于CreateProcess函数的DEBUG_PROCESS造成进程不能结束的问题
发表于: 2011-8-29 01:48 5674

求助关于CreateProcess函数的DEBUG_PROCESS造成进程不能结束的问题

2011-8-29 01:48
5674
    
Select Case fGetLong(DebEv.dwData, 3)''DebEv.u.Exception.ExceptionRecord.ExceptionCode

    Case EXCEPTION_BREAKPOINT:
    dwStatus = DBG_CONTINUE
    Select Case Bpcount:
    Case 0:

    Debug.Print "Breakpoint Surntdll.DbgBreak(c normal): &H" & Hex(fGetLong(DebEv.dwData, 15))
    Bpcount = Bpcount + 1

    Case 1:
    Debug.Print "endof debug"

    Ret =WriteProcessMemory(lpPi.hProcess, ByVal OEP, ByVal VarPtr(BytesEP(0)), 1, 0)
    Ret =TerminateProcess(lpPi.hProcess, 0)
    GoTo Exit1
    End Selectt]


    Case EXCEPTION_ACCESS_VIOLATION:'//don't care about THE SEH !
    dwStatus =DBG_EXCEPTION_NOT_HANDLED

    Case Else:
    dwStatus = DBG_CONTINUE
    End Select
    End Select

这是在VB中用DEBUG_ONLY_THIS_PROCESS +DEBUG_PROCESS 模式调用

CreateProcess函数的形式。

可以创建成功,并且可以调试。

我的问题是,在我用TerminateProcess结束进程时,为什么用任务管理器查看的时候,进程根本没有销毁。

而是在VB工程退出时,才销毁。?

可运行代码见附件

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 73
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
ContinueDebugEvent
2011-8-29 12:20
0
雪    币: 139
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
ContinueDebugEvent 有添加,具体见附件,上面的只是一部分。。
2011-8-29 15:45
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
晕死,你在这边也发了帖子,而且还翻译了
再次回答:
结束进程是系统会检测进程是否被调试,必须要用DbgUiStopDebugging终止调试才能关闭(不停调试插apc都关不了)
当调试进程退出时(即使不TerminateProcess进程)被调试进程也会自动退出
2011-8-30 12:04
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
况且TerminateProcess函数调用后,即使不在被调试下未必一定能关闭哦!!! 使用TerminatePorcess时是需要注意这个问题的。
2011-9-1 17:26
0
游客
登录 | 注册 方可回帖
返回
//