阅读:1638回复:7
驱动调用 KeWaitForSingleObject 后 ,系统还能调度用户线程吗?
驱动调用 KeWaitForSingleObject 后 ,系统还能调度用户线程吗?
|
|
沙发#
发布于:2005-06-07 15:24
应该可以吧,要不然系统性能太差了
|
|
驱动老牛
![]() |
板凳#
发布于:2005-06-07 15:29
驱动调用 KeWaitForSingleObject 后 ,系统还能调度用户线程吗? 那可不一定,能不能被调用是由Alertable参数决定的。 NTSTATUS KeWaitForSingleObject( IN PVOID Object, IN KWAIT_REASON WaitReason, IN KPROCESSOR_MODE WaitMode, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL ); |
|
地板#
发布于:2005-06-07 15:54
驱动调用 KeWaitForSingleObject 后 ,系统还能调度用户线程吗? 说得不明白,驱动调用 KeWaitForSingleObject,就是为了其它线程,包括用户线程更好地被调度 |
|
|
地下室#
发布于:2005-06-08 09:06
有的情况下不能,有的情况下能。
|
|
|
5楼#
发布于:2005-06-08 09:20
举个例子:
你用ReadFile()读取驱动里的数据,驱动里就会到Irp_Mj_read那里面处理,如果你在Irp_mj_read那里调用KeWaitForSingleObject就很危险,如果这个事件一直等不到就会导致死机。 |
|
6楼#
发布于:2005-06-08 10:11
举个例子: 呵呵,这个事件等不到这个线程就一直挂着呗,怎么会导致死机呢? |
|
7楼#
发布于:2005-06-10 15:25
呵呵,主要是很多人在这个时候就不知道怎么办了,一不小心就把系统搞死,对你这样的高手来说当然是小case了.
|
|