阅读:1458回复:6
SpinLock和IRQL的相关例程
KeInitializeSpinLock
KeAcquireSpinLock KeReleaseSpinLock KeAcquireSpinLockAtDpcLevel KeReleaseSpinLockAtDpcLevel IoAcquireCancelSpinLock IoReleaseCancelSpinLock KeSynchronizeExecution KeRaiseIrql KeLowerIrql 谁来说说它们的不同区别和应用目的?? |
|
沙发#
发布于:2004-08-11 10:03
在单CPU的2000上KeAcquireSpinLockAtDpcLevel基本没用,直接就RET了,所以用哪个无所谓.
|
|
|
板凳#
发布于:2004-08-11 08:49
调用KeInitializeSpinLock初始化自旋锁;
KeAcquireSpinLock获取自旋锁,它也把IRQL提升到DISPATCH_LEVEL级上; KeReleaseSpinLock释放自旋锁,它也把IRQL降低到原来的IRQL级上; 如果你知道代码已经处在DISPATCH_LEVEL级上,你可以调用两个专用函数来获取自旋锁:KeAcquireSpinLockAtDpcLevel、KeReleaseSpinLockFromDpcLevel; |
|
地板#
发布于:2004-08-09 23:13
[编辑 - 8/9/04 by ljhjason] |
|
地下室#
发布于:2004-08-09 19:06
说得太简单了吧。说详细点吧。 KeAcquireSpinLock 就是要求 |
|
5楼#
发布于:2004-08-09 17:53
说得太简单了吧。说详细点吧。
比如说这三个例程有什么不同 KeAcquireSpinLock IoAcquireCancelSpinLock KeAcquireSpinLockAtDpcLevel |
|
6楼#
发布于:2004-08-09 13:21
单CPU上SPINLOCK就是把IRQL提升到DISPATCH-LEVEL
|
|
|