驱动编程中出现BAD_POOL_HEADER错误

以下是引用MSDN上的:

Cause

The pool is already corrupted at the time of the current request.

This may or may not be due to the caller.

Resolving the Problem

The internal pool links must be walked to figure out a possible cause of the problem.

Then you can use special pool for the suspect pool tags, or use Driver Verifier on the suspect driver. The !analyze debugger extension may be of help in pinpointing the suspect driver, but this is frequently not the case with pool corrupters.

 

 

我实际遇到的这个例子是我的GUI程序和驱动程序通信时在DeviceIOControl中出现的,当时并没有判断GUI提供的缓冲区是否够了,然后就向里面pIrp->AssociatedIrp.SystemBuffer直接拷贝数据。

 

这个错误估计是和堆栈溢出差不多的,多余的数据覆盖了IRP的一部分,导致在这个DeviceIOControl函数的结尾 

pIrp->IoStatus.Status = status;
 pIrp->IoStatus.Information = info; // bytes xfered
 IoCompleteRequest( pIrp, IO_NO_INCREMENT );
 return status;

 

出现了这个错误。

呵呵,解决了一个错误的感觉真好。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
bad_pool_caller是Windows操作系统的一个蓝屏错误代码,表示发生了一个严重的错误,一般与内存管理有关。当系统试图访问一个无效的内存地址时,就会导致这个错误出现bad_pool_caller错误可能由以下几种情况引起: 1. 内存模块故障:某个内存模块无效或损坏,导致系统无法正确访问内存。 2. 软件冲突:某些软件程序冲突或错误操作导致内存管理错误。 3. 驱动程序问题:错误的或过期的设备驱动程序可能导致内存管理错误。 4. 硬件问题:有可能是硬件设备出现故障,例如硬盘或内存损坏。 要解决bad_pool_caller错误,可以尝试以下几个方法: 1. 重启计算机:有时候错误可能是临时的,重启计算机可以解决一些内存管理问题。 2. 更新或卸载驱动程序:更新过时的设备驱动程序,或者尝试卸载最近安装的驱动程序,以排除驱动程序问题。 3. 检查内存模块:对内存条进行测试,看是否有损坏或错误的内存模块,需要更换损坏的内存条。 4. 扫描和修复系统文件:使用系统文件检查工具(SFC)扫描和修复可能损坏的系统文件,以解决软件问题。 5. 检查硬件设备:检查硬盘和其他硬件设备是否正常工作,可能需要修复或更换有问题的硬件。 需要注意的是,如果上述方法无法解决bad_pool_caller错误,建议向专业的计算机技术支持人员寻求帮助,以避免进一步的错误和损坏。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值