阅读:1137回复:6
第二次调用初始化变量会死机?
一个小问题:递归调用的时候,第二次进入函数的时候,初始化变量的时候死机。我发现初始化PDEVICE_EXTENSION devxs = PDEVICE_EXTENSION (fdo->DeviceExtension);这个变量时候死机的。怎么解决?f
[编辑 - 1/30/02 作者: KungFu] |
|
|
沙发#
发布于:2002-01-30 10:13
初始化,怎样进行初始化的?能否将代码贴出来看看。
另外,为什么要用递归,不建议你使用递归,不可以用循环吗? 我怀疑是重入的问题,第一次调用的某些资源没有释放,你就第二次又使用,结果...。 |
|
板凳#
发布于:2002-01-30 12:55
fdo是设备的fdo,devxs存放设备扩展。
GetResult(PDEVICE_OBJECT fdo,PIRP Irp) { start: ... PDEVICE_EXTENSION devxs = PDEVICE_EXTENSION (fdo->DeviceExtension);//第二次执行就死机??? .... if(true)//条件是我自己设定的,目的是执行两次。 goto start; } |
|
|
地板#
发布于:2002-01-30 14:21
你省略的也太厉害了吧!看你的这么一点代码我看不出什么错误!
|
|
地下室#
发布于:2002-01-31 10:50
Heihei, who can know the reason from your simple code, maybe your stack overflow... kernel stack size is very small, only about 12K, just as warned by sb. long time ago, avoid recursive in your driver, it\'s not a place for scientific caculation.
|
|
|
5楼#
发布于:2002-01-31 11:34
But the same function can run in NT os perfectly!!!
why? Doesn\'t os windows2000 build on windows NT? |
|
|
6楼#
发布于:2002-01-31 19:42
如果你不把相关部分的代码贴出来,那么,这代码没有问题,除非传进来的参数是错误的!
|
|