hitme
驱动牛犊
驱动牛犊
  • 注册日期2009-07-01
  • 最后登录2009-07-29
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1752回复:2

为什么我的filedisk写入文件的数据没法改变?

楼主#
更多 发布于:2009-07-21 15:29
            switch (io_stack->MajorFunction)
            {
            case IRP_MJ_READ:
                system_buffer = MmGetSystemAddressForMdl(irp->MdlAddress);
                if (system_buffer == NULL)
                {
                    irp->IoStatus.Status = STATUS_INSUFFICIENT_RESOURCES;
                    irp->IoStatus.Information = 0;
                    break;
                }
                for (i = 0 ;i <io_stack->Parameters.Read.Length; i++)
                {
                        buffer -=1;
                }
                ZwReadFile(
                    device_extension->file_handle,
                    NULL,
                    NULL,
                    NULL,
                    &irp->IoStatus,
                    system_buffer,
                    io_stack->Parameters.Read.Length,
                    &io_stack->Parameters.Read.ByteOffset,
                    NULL
                    );
                break;

            case IRP_MJ_WRITE:
                if ((io_stack->Parameters.Write.ByteOffset.QuadPart +
                     io_stack->Parameters.Write.Length) >
                     device_extension->file_size.QuadPart)
                {
                    irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
                    irp->IoStatus.Information = 0;
                    break;
                }
                buffer = (PUCHAR)ExAllocatePool(PagedPool, io_stack->Parameters.Write.Length);
                RtlCopyMemory(buffer,MmGetSystemAddressForMdlSafe(irp->MdlAddress, NormalPagePriority),io_stack->Parameters.Write.Length);
                for (i = 0 ;i < io_stack->Parameters.Write.Length ; i++)
                {
                        buffer +=1;
                }
                ZwWriteFile(
                    device_extension->file_handle,
                    NULL,
                    NULL,
                    NULL,
                    &irp->IoStatus,
                    buffer,
                    io_stack->Parameters.Write.Length,
                    &io_stack->Parameters.Write.ByteOffset,
                    NULL
                    );
                ExFreePool(buffer);
                break;

我其他地方都没动,就是想改一下写如何读取时的文件。而且写入的时候我也没有改变原来内从中的内容啊。
加入我的代码后windows会提示无法格式化磁盘~!
hunter10
驱动牛犊
驱动牛犊
  • 注册日期2009-03-27
  • 最后登录2010-03-29
  • 粉丝2
  • 关注0
  • 积分26分
  • 威望251点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-10-29 15:46
问题解决了吗?
BeyondCy
驱动牛犊
驱动牛犊
  • 注册日期2010-12-21
  • 最后登录2012-06-21
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望181点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2011-04-22 20:42
你是不是在创建img文件的时候是只读的形式?
游客

返回顶部