FastIo问题

来源:互联网 发布:东莞淘宝培训 编辑:程序博客网 时间:2024/06/05 19:02
         FastIo问题(张佩)

    昨天写了一个过滤驱动,代码很简单,感觉不可能有问题。编译好后放到虚拟机里运行,并且用SoftIce跟踪,一切都很好。但一旦把SoftIce关掉,就有可怕的页错误跳出,系统也将因此而宕掉。对此我既郁闷又生气,一时不知错自何出,后来丢它不管,下班后在路上又想了半天,竟也没有什么头绪。

    今天早晨来公司后翻看手头的书,本未特意查找,却突然看到FastIoDispatch几个字,我立刻电花火石一般地意识到,昨天的代码里忘记初始化FastIo列表了。惭愧惭愧,我也不迟疑,立刻加了代码,再次调试,代码终显无恙。

    FastIo是快速IO通道,Office的读写就是通过它进行的。文件过滤驱动里面,这个指针必须初始化,如果不准备自己做处理,一般就丢给下一层驱动(调用它的FastIo函数)。其实我写文件过滤驱动,从来都不管这套接口,这也就是我终于忘记初始化它的原因了。系统在调用FastIO函数的时候,没有考虑到未初始化的情况,也不会因为FastIO接口未初始化,而转用IRP接口。这是不是也可以认为是系统有不完善的地方呢?

    很多人写驱动都有自己的框架代码,备份于某处,需要写新代码的时候直截把框架拿过来添加新代码就可以了。这样就应该能避免类似的记忆漏洞。

原创粉丝点击