stupidlife
驱动牛犊
驱动牛犊
  • 注册日期2014-08-20
  • 最后登录2015-05-22
  • 粉丝0
  • 关注0
  • 积分22分
  • 威望191点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1984回复:1

minifilter中使用FltReadFile导致IRQL_NOT_LESS_OR_EQUAL

楼主#
更多 发布于:2014-11-25 09:40
我在minifilter结构下的postCreate函数中调用FltReadFile来读文件,在启动NTFS的碎片整理程序dfrgntfs.exe时会出现蓝屏IRQL_NOT_LESS_OR_EQUAL,分析dump文件发现定位到FltReadFile处,于是将FltReadFile注释掉后蓝屏现象消失,FltReadFile需要在PASSIVE下运行,可是我代码里没有提升IRQL的地方,所有分配内存的地方也是非分页的,部分代码如下,这个问题困扰很多天了,希望各位大神能够给予指导

NTSTATUS
MFEReadEnHeader(
                IN PFLT_INSTANCE  Instance,
                IN PFILE_OBJECT    FileObject,
                IN    ULONG    BufLength,
                OUT PVOID    HeadInfo
                )
{
    ULONG BytesRead=0;
    LARGE_INTEGER    ByteOffset;
    ByteOffset.QuadPart = 0;
    
    if (KeGetCurrentIrql()<APC_LEVEL)
    {
        return FltReadFile(Instance,
            FileObject,
            &ByteOffset,
            BufLength,
            HeadInfo,
            FLTFL_IO_OPERATION_NON_CACHED,
            &BytesRead,
            NULL,
            NULL
            );
    }
    else
    {
        return STATUS_UNSUCCESSFUL;
    }
}
stupidlife
驱动牛犊
驱动牛犊
  • 注册日期2014-08-20
  • 最后登录2015-05-22
  • 粉丝0
  • 关注0
  • 积分22分
  • 威望191点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2014-11-25 20:19
Any help will be appreciated?
游客

返回顶部