流驱动XXX_Init中分配内存引起的问题

全局类(无继承、无虚函数、无静态成员)在XXX_Init中进行的new,按照往常应用开发的经验认为类占用内存是整体清零了,实际运行中发现有成员变量是非零值(具体来说是排列靠前的成员),而且数值每次都一样。改用malloc在XXX_Init中分配同样大小的内存,问题同样存在。如果在XXX_Open等其它流驱动接口中分配则无此问题。有问题的内存分布情况是这样的:
00720044 00760069 00720065 00000073 00630041 00690074 00650076 0036005c 
005c0033 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
00000000 00000000 00000000
前面九个整型数据感觉象是unicode编码的字符串,使用UE转换出来后是"rDvire scAitev6\\3",表面看杂乱无章,但是每两个ascii字符进行对调后变成"Drivers Active\63\",已经可以看出一些线索了,将两个'\'移到一起后变成"Drivers Active\\63",这不就象流驱动加载后在注册表中的活动路径吗?查看注册表信息此驱动确实是这个活动路径。由于流驱动的XXX_Init接口是由设备管理器加载的BusEnmu.dll调用并传递活动路径的,因此可以猜测导致问题的原因有两个:
1、在BusEnum.dll中存在BUG导致此问题的出现
2、XXX_Init的调用规则导致此问题的出现
具体的原因没有再深入,针对此问题要么是进行手动清零,要么是避免在XXX_Init中进行内存的分配。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值