首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

windows内核计数的简单有关问题

2013-10-03 
windows内核计数的简单问题我创建了一个进程,而这个进程的内核计数由于某种原因减为0了,则进程内核对象被

windows内核计数的简单问题
我创建了一个进程,而这个进程的内核计数由于某种原因减为0了,则进程内核对象被销毁,那么这个进程是不是会立刻结束掉?还是说内核对象不影响进程的运行,只是包含一些关于进程的参数?


windows内核入门看什么书/视频比较好啊
[解决办法]
《windows核心编程》

内核对象计数为0,进程应该就不存在了吧。但是进程结束,内核对象计数不一定为0 。不过不明白进程没结束,内核对象计数怎么能变为0,什么情况下会出现呢。
[解决办法]
进程的内核计数递减到0 表明没有其他进程与之关联 那么该内核对象也就没有继续存在的理由  系统在进程销毁时 对象也会随之销毁 
----推荐看《windows 核心编程》(第五版)
[解决办法]
《Windows编程启示录》
19.6 为什么有些进程在被终止之后还停留在任务管理器中
    当某个进程结束时(可能是正常结束,也可能是因为调用了像TerminateProcess之类的函数),这个进程的用户态模块将被删除。但内核态模块只有在与线程相关的所有驱动程序执行完成之后才会被删除。
    例如,如果某个线程正处于I/O操作中,那么将会给负责I/O的驱动程序发送一个内核信号来取消这个操作。
    如果驱动程序的行为是良好的,那么它将清除与这个未完成I/O相关的一些信息并且释放线程。
    如果驱动程序的行为是不好的(可能是因为驱动程序管理的硬件表现出奇怪的行为),那么可能需要花很长的时间来清除这个未完成的I/O。在这段时间里,驱动程序将不会释放这个线程(以及这个线程所在的进程)。实际的情况要更复杂一些,但这里的简单模型对于我们的讨论已经足够。
   ……
   换句话说,如果你终止了某个进程后还能在任务管理器中看到这个进程,那么实际上这个进程已经停止运行了,只不过还有些残留的信息保留在系统中,只有当与这个进程相关的所有驱动程序都完成了清除操作并且指向这个进程的句柄都已经关闭,进程才会完全消失。

热点排行
Bad Request.