阅读:3653回复:2
IoSetCancelRoutine
看一个WDM的驱动源程序时发现在多处地方使用IoSetCancelRoutine(Irp, NULL)的调用,偶很是不解。既然将Cancel例程设置为NULL,那不是相当于没有cancel例程吗??那为什么还要这样设置??这样做还有什么别的用意吗??
|
|
|
沙发#
发布于:2001-11-12 15:41
那时因为本来是可能有CancelRoutine的,这里把CancelRoutine去掉
|
|
|
板凳#
发布于:2001-11-22 20:40
看一个WDM的驱动源程序时发现在多处地方使用IoSetCancelRoutine(Irp, NULL)的调用,偶很是不解。既然将Cancel例程设置为NULL,那不是相当于没有cancel例程吗??那为什么还要这样设置??这样做还有什么别的用意吗?? 这样做的目的在于,一旦你的IRP进入处理过程,取消历程就不应该再来打搅这个IRP. 尤其对于多CPU更是要注意,单CPU这个问题不是很突出,但考虑到有中断会打断你的工作,所以人要求IoSetCancelRoutine(Irp, NULL), 你的IOSTARTIO一开始的工作就可以是这个,当然这只是多种选择的 一种,我个人认为,对于单CPU这种方法最简单 |
|