阅读:993回复:3
驱动程序产生的冲突问题请教
我用Driverstudio编了一个简单的驱动程序,用一个应用程序以实现和驱动程序的通信,通信语句如下:
b=DeviceIoControl(hDevice,READ_IOCTL_test,NULL,0,bufOutput,sizeof(bufOutput),&nOutput,NULL); 可确定通信结果正确。 应用程序退出后,当鼠标移到“开始”菜单旁的那一小块“任务栏“时(不是一般的任务栏),系统就会出现标题为“iexplore 错误”的提示,提示内容为该程序执行了非法操作。然后再运行应用程序,当鼠标移到应用程序的菜单上时系统就提示“访问冲突”,错误号为0x0000005。而且该现象有时有,有时又没有。 恳请指教! [编辑 - 8/22/02 by LIXIAOLIN] |
|
沙发#
发布于:2002-08-22 14:53
你是指quick launch栏吗?
估计是你的driver没有释放资源,尤其是指针引起的。 |
|
板凳#
发布于:2002-08-22 15:02
对,就是quick launch。
应用程序结束时,我已经关闭了设备指针Hdevie。 在驱动程序中,我没有用NEW申请内存空间。下面是驱动程序中实现 与应用程序通信的代码 const char* TEST_WAH = \"TEST OK! - WAH\"; ULONG fwLength=0; NTSTATUS status; fwLength = strlen(TEST_WAH)+1; if (I.IoctlOutputBufferSize() >= fwLength) { strcpy((PCHAR)I.IoctlBuffer(),TEST_WAH); I.Information() = fwLength; status = STATUS_SUCCESS; } else { I.Information() = 2; status = STATUS_BUFFER_TOO_SMALL; } 需要释放资源吗? 谢谢! |
|
地板#
发布于:2002-08-22 15:42
用户被禁言,该主题自动屏蔽! |
|