阅读:1442回复:5
IRP_MJ_WRITE buffer中搜索字符串导致的蓝屏故障.
对于 IRP_MJ_WRITE ,我可以得到
SysDataBuf = Irp->UserBuffer; 然后我可以在 if( strstr(SysDataBuf,\"keyword\") ) 来搜索写盘的缓冲区里, 是否包含指定的字符. 可是有时就蓝屏了! 我预计原因是, UserBuffer并没有以0结尾,所以查找子串,就发生内存越界了. 有什么办法呢?当然可以将UserBuffer复制出来,不过,这样内存开销可能会很大. 如果是自己写搜索算法,又怕效率不高啊! 请高手指点一二了. [编辑 - 6/10/05 by csdengxm] |
|
最新喜欢:![]() |
驱动老牛
![]() |
沙发#
发布于:2005-06-13 11:36
我自己写了一个 memstr 函数解决了,谢谢各位 呵呵,你还真大方 |
|
板凳#
发布于:2005-06-10 21:16
我自己写了一个 memstr 函数解决了,谢谢各位
每人给一分算了 |
|
地板#
发布于:2005-06-09 15:54
IRP_MJ_WRITE中的Buffer本身是一个二进制的Buffer,对它进行strstr操作,本身没有多少意义,也很难达到预定的目的。
|
|
|
驱动老牛
![]() |
地下室#
发布于:2005-06-09 13:37
对于 IRP_MJ_WRITE ,我可以得到 这样当然不行了,因为字符串是以0结尾的,如果缓冲区里没有0那不就C00000005了。 要用strncmp strnicmp等。 |
|
5楼#
发布于:2005-06-09 12:27
你确认你文件的内容是在userbuffer当中而不是在mdladdress中?
|
|