阅读:1688回复:17
驱动程序一安装,机子就重启动了?怎么搞的????
我在w2000中,用DriverStudio编写一WDM驱动程序? 其中,有WMI功能部分.编译通过之后,一安装,机器就自动重启动了,重启动之后,看设备的驱动程序没有安装上,还是原来的.不知为什么??希望高手指点一下?谢谢!!!!!!!
|
|
|
沙发#
发布于:2002-05-21 21:24
看看DriverEntry
还是AddDevice有问题 还有可以用softie调一下 看看哪里的问题 还有重启之前应该有蓝屏吧 看一下错误代码 也许有用 |
|
板凳#
发布于:2002-05-22 10:23
DriverEntry 和 AddDevice 都是DriverStudio自动生成的,我没改过,也会出错吗?
启动之前,没有任何提示! 我不太会用softice调试,只能试试! 谢谢!你的回答! |
|
|
地板#
发布于:2002-05-22 15:50
我更新驱动程序的时候softice自动弹出:
提示: Entering Abc1Device::~Abc1Device()(destructor) Assertion Failed :(index>=0)&&(index<=m_MaxInserted) SourceFile:c:propramefile\\...\\include\\karray.h NTICE: Unload32 MOD=ABC1 NTICE:Load32 START=bC526000............... 其中,第2,3行是兰色出错行!!!!!! 不知楼上的这位高手能否再给指点一二.我将不胜感激!!!!!!!! |
|
|
地下室#
发布于:2002-05-22 15:54
Assertion Failed index>=0)&&(index<=m_MaxInserted)
主要是这句话,很明显index越界了吧 |
|
|
5楼#
发布于:2002-05-22 20:18
谢谢!!
但是,我用driverstudio 开发,我得驱动里面根本就没有 index>=0)&&(index<=m_MaxInserted) 或类似的语句,变量. 有没有可能是什么资源释放的问题????index 是不是openhandle的计数,或者是什么类似的东西!!!!!!! 问题好像出现在Unload阶段!!!!!!!!!! 急切盼望高手们指点....谢谢!!! |
|
|
6楼#
发布于:2002-05-23 16:32
问题还没解决,请高手们帮帮忙!!!!!!!急着那!!
在这先谢谢大家了!!!!!! |
|
|
7楼#
发布于:2002-05-23 16:50
你的程序没用,但是你调用的ds的库可能用了。
这不好说是什么问题 |
|
|
8楼#
发布于:2002-05-24 10:14
我也碰到过一安装就重起的问题,不过那是我的inf文件写的有问题:)
|
|
9楼#
发布于:2002-05-24 15:54
楼上的兄弟说是你的.inf 文件的问题!能不能详细讲讲!怎么解决的!
我的驱动也出现了安装就重启或死机的毛病! |
|
10楼#
发布于:2002-05-25 09:43
引用:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Entering Abc1Device::~Abc1Device()(destructor) Assertion Failed :(index>=0)&&(index<=m_MaxInserted) SourceFile:c:propramefile\\...\\include\\karray.h NTICE: Unload32 MOD=ABC1 NTICE:Load32 START=bC526000............... 其中,第2,3行是兰色出错行!!!!!! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 从以上信息看,第一行应该是你的驱动自己打出来的信息,表明驱动未安装成功。第二行和第三行说明一个ASSERT error,那是你包含的一个头文件,用VC搜索到那个语句所在的函数,再找到调用该函数的你驱动里的函数,就可以有针对性的解决。 从以上现象看我估计应该是在你的设备初始化过程中出错,并且及有可能破坏了系统的某个进程,故导致机器重启,请仔细检查你所用的变量和指针,以及涉及到写内存的地方。 |
|
11楼#
发布于:2002-05-25 12:41
非常感谢各位的回答!
bingjie 我的问题是出现在UNload阶段,因为,我做了实验,从设备属性页停用设备!!SofeIce就出现这个问题了!!!!!而只安装的时候就不会出现这样的问题???? |
|
|
12楼#
发布于:2002-05-27 15:40
unload 阶段怎么会出现这种情况那???????那位能帮帮我那?/???
急着那!!!!问题还没有解决!! 其他问题没有了,就是不能卸载!!! |
|
|
13楼#
发布于:2002-05-28 21:32
unload 阶段怎么会出现这种情况那???????那位能帮帮我那?/???
急着那!!!!问题还没有解决!! 其他问题没有了,就是不能卸载!!! 劳驾!劳驾!多谢多谢!! |
|
|
14楼#
发布于:2002-05-31 15:48
把你的unload代码和处理IRP_MJ_PNP的代码贴上来看看,我最近刚刚也遇到之类的问题并且解决了一把。
|
|
15楼#
发布于:2002-05-31 16:44
Unload函数,这种重启的问题一般都是由于没有加卸载保护造成的,要注意两个问题:1。在卸载前应该所有IRP都已处理完成;2。卸载的过程中再有IRP进来则应该返回失败。
|
|
16楼#
发布于:2002-06-02 11:20
我的UNload是ds自动生成,我跟本没有重载,!!!
我得OnRemoveDevice函数如下: NTSTATUS Abc1Device::OnRemoveDevice(KIrp I) { t << \"Entering Abc1Device::OnRemoveDevice\\n\"<<I<<EOL; //copy the following from Close(KIrp) //ADD_BEGIN if(m_pUserBuffer!=NULL) { t<<\"free m_pUserBuffer\"<<I<<EOL; ExFreePool(m_pUserBuffer); m_pUserBuffer=NULL; m_SizeOfUserBuffer=0; } //ADD_END // TODO: Add device-specific code to remove your device //add wmi 2002.5.17 if ( m_Wmi != NULL ) { t<<\"entering m_Wmi!=NULL \"<<I<<EOL; m_Wmi->Deregister(); m_Wmi->SetMethods(0,MethodArray); } //add end return STATUS_SUCCESS; // The following macro simply allows compilation // at Warning Level 4 // If you reference this parameter in the //function simply remove the macro. // UNREFERENCED_PARAMETER(I); } |
|
|
17楼#
发布于:2002-06-05 10:14
看不出什么问题,sorry的很!
:))) |
|