neak47
驱动小牛
驱动小牛
  • 注册日期2009-05-25
  • 最后登录2016-01-09
  • 粉丝4
  • 关注0
  • 积分140分
  • 威望1221点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分1分
阅读:2640回复:1

minifilter中fltWriteFile 的用法

楼主#
更多 发布于:2009-09-02 15:06
WriteBuff = FltAllocatePoolAlignedWithTag(Data->Iopb->TargetInstance, PagedPool, PAGE_SIZE, 'abcd');
    if (WriteBuff != NULL)
    {
        RtlFillMemory(WriteBuff, PAGE_SIZE, 0xFF);
        ByteOffset.QuadPart = 0;

        while (ByteOffset.QuadPart < FileSize.QuadPart)
        {
            Size.QuadPart = (FileSize.QuadPart - ByteOffset.QuadPart) > PAGE_SIZE ?
                                     PAGE_SIZE : (FileSize.QuadPart - ByteOffset.QuadPart);
            status = FltWriteFile(Data->Iopb->TargetInstance,
                                   FileObject,
                                   &ByteOffset,
                                   Size.LowPart,
                                   WriteBuff,
                                   FILE_NO_INTERMEDIATE_BUFFERING|FLTFL_IO_OPERATION_PAGING |
                                   FLTFL_IO_OPERATION_NON_CACHED,
                                   &WriteBytes, NULL, NULL);
            ByteOffset.QuadPart += WriteBytes;
            if (!(NT_SUCCESS(status)))
                break;
        }

        FltFreePoolAlignedWithTag(Data->Iopb->TargetInstance, WriteBuff, 'abcd');
    }
游客

返回顶部