阅读:1201回复:4
设备扩展是否需要进行保护???
小弟有一驱动的分发例程比如
xxxdispatchread { ...... devext->count++; setcompeletroutine... iomarkpending kdprint(devext->count); return STATUS_PENDING; } xxxcomproutine(..) { .... devext->count--; ... } 假如devext->count = intval 在刚进入xxxdispread时 想请问各位大侠 , xxxdispread打印出来的值是否就是会等于intval+1 ,还是这个例程可以重入而导致这个值并不是所预料的那样?感谢所有关注! |
|
最新喜欢:![]() |
沙发#
发布于:2003-01-09 12:32
难说.你的代码是可重入的.在第2次被调用时鬼才知道xxxcomproutine是否已经被调用过.
|
|
|
板凳#
发布于:2003-01-09 13:47
斑竹地意思就是 , 我不能断定打印出来的值 , 因为他随时有可能被改变 , 是吗?
|
|
地板#
发布于:2003-01-09 16:06
可以从入是不是说 ,就是没有完成例程中的--操作 , 就是xxxdispatchread本身也有可能在devext->count++ 到打印这段时间内,被重入 ,导致又进行了devext->count++ , 这样当打印的时候就发现值比预料的大2 ,是吗??
|
|
地下室#
发布于:2003-01-09 21:03
在ddk中,明确指明,在访问公共变量的时候必须进行保护。你这个变量没有保护。
|
|