惊雷 发表于 2014-5-17 20:45:03

如何杀死指定的内核线程?

想要终止别的驱动里的几个内核线程

NtTerminateThread
PsTerminateSystemThread
PspTerminateThreadByPointer

以上这三个函数有什么区别?
到底是要用哪个函数?
调用前还需不需要插APC?

请大神指教!

Tesla.Angela 发表于 2014-5-17 20:55:59

(以下答案不保证完全正确,只按照经验回答)

NtTerminateThread:这个是传入句柄结束“用户模式”线程,用来结束内核线程肯定没戏。
PsTerminateSystemThread:这是结束内核线程专用的,不过只有1个参数,只能在内核线程里调用。可以通过给线程投递APC的方式,强制内核线程调用它。
PspTerminateThreadByPointer:这个是NtTerminateThread的后续实现,貌似也是无法结束内核线程的。当年只会VB的时候,给线程设置上SYSTEM_THREAD的标志,就能阻止用PspTerminateThreadByPointer结束线程。
页: [1]
查看完整版本: 如何杀死指定的内核线程?