PCI驱动卸载,“扫描检测硬件改动”时引起PC死屏

zigeno 2011-11-29 05:25:20
一个视频采集卡驱动程序,当卸载驱动后(此时PC不会死屏),“扫描检测硬件改动”时,PC会死屏。用逻分抓取

PCI数据,得知系统不停地向某一硬件发送写命令。驱动卸载程序如下:
NTSTATUS DefaultPnpHandler(PDEVICE_EXTENSION pdx, PIRP Irp)
{
IoSkipCurrentIrpStackLocation(Irp);
return IoCallDriver(pdx->NextStackDevice, Irp);
}
NTSTATUS HandleRemoveDevice(PDEVICE_EXTENSION pdx, PIRP Irp)
{
NTSTATUS status;
Irp->IoStatus.Status = STATUS_SUCCESS;
EC_HW_DeInitVideoDevice(pdx->hDevice);//free DMA memory
pdx->pDmaAdapter->DmaOperations->FreeCommonBuffer(
pdx->pDmaAdapter,
DMA_MEM_SIZE,
pdx->dmaPhy,
pdx->dmaMemAddrVir,
FALSE);
pdx->pDmaAdapter->DmaOperations->PutDmaAdapter(pdx->pDmaAdapter);
IoDisconnectInterrupt(pdx->pInterruptObject);
MmUnmapIoSpace(pdx->regBaseAddr, pdx->regMemLength);
IoSetDeviceInterfaceState(&pdx->interfaceName, FALSE);
RtlFreeUnicodeString(&pdx->interfaceName);
status = DefaultPnpHandler(pdx, Irp);
if (pdx->NextStackDevice)
IoDetachDevice(pdx->NextStackDevice);
IoDeleteDevice(pdx->fdo);
return status;
}
请教各位,有哪些原因会导致系统在“扫描检测硬件改动”时疯狂的向某一硬件发送写指令?
...全文
506 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zigeno 2011-12-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jinweiji 的回复:]

卸载程序时破坏其它程序了,建议还原驱动再采取其它方式卸载试试看。
[/Quote]
这个驱动程序是我正在开发的程序,没有源码。奇怪的是,同样的硬件,除了video,还有一个audio设备,而audio部份的驱动在卸载时没有出现video这种情况(video设备与audio设备的驱动程序加载与卸载操作都相同)。另外一个奇怪现象是,video驱动执行DMA操作,如果时间在10秒左右,卸载-->“扫描检测硬件改动”时,不会出现问题,而执行DMA的时间更长一些,就会出现问题。
北京老男孩儿 2011-12-04
  • 打赏
  • 举报
回复
卸载程序时破坏其它程序了,建议还原驱动再采取其它方式卸载试试看。
zigeno 2011-12-04
  • 打赏
  • 举报
回复
大虾们,给个建议
zigeno 2011-12-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mokson 的回复:]

尝试一下用安全模式或VGA模式启动,然后再扫描
[/Quote]
谢谢。我想知道这个卸载程序是否有问题;在卸载驱动的程序里,什么操作会导致系统在“扫描检测硬件改动”时疯狂的向某一硬件发送写指令;debug的方法。
还有,我的电脑PCI插槽连的是FPGA平台,不知道是会因为电器特性产生了这个bug
mokson 2011-11-29
  • 打赏
  • 举报
回复
尝试一下用安全模式或VGA模式启动,然后再扫描

6,849

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧