dionysus77
驱动小牛
驱动小牛
  • 注册日期2006-11-15
  • 最后登录2011-12-18
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望392点
  • 贡献值0点
  • 好评度177点
  • 原创分0分
  • 专家分0分
阅读:1811回复:3

FltWriteFile()也会重入?

楼主#
更多 发布于:2008-05-14 23:54
在minifilter的postwrite历程中,调用FltWriteFile如下:
status = FltWriteFile(
    FltObjects->Instance,
    pFileObject,
    &ByteOffset,
    Data->IoStatus.Information ,
    p2pCtx->SwappedBuffer,
    FLTFL_IO_OPERATION_DO_NOT_UPDATE_BYTE_OFFSET            &BytesOk,
    NULL,
    NULL);
其中,FltObjects即postwrite的传入参数。
ddk文档中说,FltWriteFile请求只会发往FltObjects->Instance的下层设备,所以应该不会发生重入,可是我调试发现重入还是如期发生了,哪位前辈知道这是怎么回事?

最新喜欢:

yyhostyyhost
microbe
驱动小牛
驱动小牛
  • 注册日期2007-12-10
  • 最后登录2011-01-17
  • 粉丝1
  • 关注0
  • 积分914分
  • 威望420点
  • 贡献值1点
  • 好评度88点
  • 原创分0分
  • 专家分1分
沙发#
发布于:2008-05-15 08:36
估计不是因为重入吧,,而且,你不应该在postwrite中调用此函数,该函数工作的irql级别的被动级,你应该在DoItWhenSafe里面去做,,,
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-05-15 09:36
还有你的是缓冲IO,会引起PAGING WRITE,这个PAGING WRITE也会经过你的过滤驱动。
dionysus77
驱动小牛
驱动小牛
  • 注册日期2006-11-15
  • 最后登录2011-12-18
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望392点
  • 贡献值0点
  • 好评度177点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-05-16 10:02
引用第2楼tooflat于2008-05-15 09:36发表的  :
还有你的是缓冲IO,会引起PAGING WRITE,这个PAGING WRITE也会经过你的过滤驱动。


就是这个原因!换一下标志就好了,多谢了:)
游客

返回顶部