ChineseAlexande
驱动牛犊
驱动牛犊
  • 注册日期2008-03-13
  • 最后登录2008-03-18
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
阅读:1561回复:8

请教一问题,关于做虚拟加密的盘的

楼主#
更多 发布于:2008-03-13 23:29
这样一种情况,做一个盘,设盘符加载后为H: 实际对应的文件是C:\image.xyz
那么复制C:\abc.txt 到H:中,
实际写文件时会用到什么函数?
读取H:\abc.txt呢?
删除H:\abc.txt呢?对应的image.xyz怎么可以缩小的?

主要是想了解实际image.xyz在整个过程中是如何变化的,假如我们设一开始创建的image.xyz为0KB.
谁能说出最最细节的东西?
ChineseAlexande
驱动牛犊
驱动牛犊
  • 注册日期2008-03-13
  • 最后登录2008-03-18
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-03-14 00:22
实际上我就是对一个问题不太理解,就是应用层(也就是用户看到的显示层),我们的驱动,实际对应的镜像文件三者之间的关系。
你看,
1.应用层要显示出文件目录来,
2.那么他去向我们的驱动要,
3.我们的驱动去读实际的比如iso文件。
1->2   这一步发了一个irp请求, 2->3 是不是也发一个irp请求? 反过来想,
3->2   我们应该取到最最原始的字节,没有文件与目录之分?2->1 因为有加密,我们先进行解密,传给显示层,显示层根据情况显示出相应的文件图标和名称等等。问题是,是不是这样进行的?filedisk中好象没有针对iso文件的实际操作呀,但好象各项操作都正常了呀,难道对iso文件和管理的所有细节节不都是我们应该管理的吗,除了我们知道该干什么,系统也不知道呀,但好像没见有针对iso文件组织管理的代码?有点晕
大侠们能帮我理一下思路吗?
huangyehui
驱动牛犊
驱动牛犊
  • 注册日期2008-03-13
  • 最后登录2008-05-12
  • 粉丝0
  • 关注0
  • 积分270分
  • 威望28点
  • 贡献值0点
  • 好评度27点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-03-14 11:01
建议你取读读filedisk代码,里面写的很清楚
ChineseAlexande
驱动牛犊
驱动牛犊
  • 注册日期2008-03-13
  • 最后登录2008-03-18
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-03-14 13:35
filedisk编译出错


--------------------------------------------------
c:\WINDDK\2600\inc\ddk\wxp\ntddk.h(10603): error C2061: syntax error : identifier 'PCONTEXT'
c:\WINDDK\2600\inc\ddk\wxp\ntddk.h(10604): error C2059: syntax error : '}'
c:\WINDDK\2600\inc\ddk\wxp\ntddk.h(11546): fatal error C1189: #error :  "no target architecture"
ChineseAlexande
驱动牛犊
驱动牛犊
  • 注册日期2008-03-13
  • 最后登录2008-03-18
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-03-14 14:43
到此我已经看到filedisk读写文件的操作了,他用了ZwReadFile来操作,指定了偏移量和长度,比如打开一个H:/Abc/abc.txt的文件,那么倒是可以理解能读到abc.txt,但是目录结构的信息没有暴露出来,那怎么知道应该读abc.img的那个位置开始是abc.txt呢?本段代码中  device_extension->file_handle, 是指abc.img还是指abc.txt?


  switch (io_stack->MajorFunction)
    {
    case IRP_MJ_READ:
        // 对于读,我直接读文件即可
        ZwReadFile(
              device_extension->file_handle,
              NULL,
              NULL,
              NULL,
              &irp->IoStatus,
              MmGetSystemAddressForMdlSafe(irp->MdlAddress, NormalPagePriority),
              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_information.AllocationSize.QuadPart)
        {
              irp->IoStatus.Status = STATUS_INVALID_PARAMETER;
              irp->IoStatus.Information = 0;
        }
        ZwWriteFile(
              device_extension->file_handle,
              NULL,
              NULL,
              NULL,
              &irp->IoStatus,
              MmGetSystemAddressForMdlSafe(irp->MdlAddress, NormalPagePriority),
              io_stack->Parameters.Write.Length,
              &io_stack->Parameters.Write.ByteOffset,
              NULL
              );
        break;
    };    

 
huangyehui
驱动牛犊
驱动牛犊
  • 注册日期2008-03-13
  • 最后登录2008-05-12
  • 粉丝0
  • 关注0
  • 积分270分
  • 威望28点
  • 贡献值0点
  • 好评度27点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-03-16 00:16
你的理解错了,上面代码是filedisk核心层代码。 它所涉及到的读写是对你的img文件的读写。是底层的东西。 device_extension->file_handle是对img而言的
真正虚拟过程是应用层代码。
ChineseAlexande
驱动牛犊
驱动牛犊
  • 注册日期2008-03-13
  • 最后登录2008-03-18
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-03-16 00:58
非常非常感谢,应用层代码我也有读了,但可能还没有消化,所以发生了读了前面忘了后面的问题。现在有点进展,换了一个window2000的DDK,差不多能编译过去,但又报链接错误,
filedisk error LNK2019: unresolved external symbol __imp__KeSetEvent referenced in function _FileDiskCreateDevice

但这个函数明明是在C:\NTDDK\libchk\i386\wdm.lib中的,我也加入到工程中去了,但还是不行
ChineseAlexande
驱动牛犊
驱动牛犊
  • 注册日期2008-03-13
  • 最后登录2008-03-18
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-03-16 01:00
请求高手加我,MSN:ChineseAlexander@hotmail.com QQ:59339639 实在是不行了
ChineseAlexande
驱动牛犊
驱动牛犊
  • 注册日期2008-03-13
  • 最后登录2008-03-18
  • 粉丝0
  • 关注0
  • 积分150分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-03-16 01:03
游客

返回顶部