看了一些资料,如果要实现虚拟硬盘,然后里面的文件操作都能转换成自定义的操作,
需要写驱动来实现。不知道有没有其它方法实现?也听说过好像用shell写组件,也可以实现以上操作,不知道
有没有哪位大侠知道如何做的?

解决方案 »

  1.   

    今天看到gmail driver好像并没有写驱动。使用的好像就是shell,注册组件。
    就是不知道他是怎么做的。
      

  2.   

    你在百度上搜filedisk,有源代码的
      

  3.   

    如果不用驱动程序,可以通过API Hook来实现,拦截与文件路径有关的主要API函数,修改路径后调用实际的API,不过这种方法实现的虚拟盘效果不如驱动程序,某些情况无法支持。有关API Hook的做法可以在网上搜索“API Hook”和“Detours”等关键字。
      

  4.   

    看了一下,gmail drive并没有实现添加虚拟硬盘。
    看样子,还是只能写驱动了。
    不过,如果所有的操作都由驱动层获取后,那么怎么把相应操作转换成自定义的
    行为呢?难不成都在驱动层做吗?
      

  5.   

    自定义行为是指,
    比如我想把网络硬盘映射到这个虚拟磁盘上来。
    也就是说,对于网络硬盘的操作就像在操作本地的磁盘,这样由于
    每个网络硬盘的获取,读取方式不同,可能我需要自定义使用socket,
    或者HTTP请求去获取文件列表,读写文件等操作。
    e.g:
    打开磁盘,我收到这个操作后,去网络硬盘上获取文件列表,返回给磁盘驱动器,
    使其显示我从网络上获取的列表。
    然后针对某个文件操作,再映射到相应的网络硬盘上的文件。写得长了点。
      

  6.   


    网络硬盘不是windows系统共享出来的硬盘,比如是google的网盘,纳米盘,或者雅马逊网盘等等。
      

  7.   

    网络硬盘可以实现映射其它网盘吗?我记得好像只能映射windows系统共享的文件夹。
      

  8.   

    有人用过webdav实现这个功能吗?
      

  9.   

    WDK的sample 
    \src\kmd\ramdisk就是一个简单的虚拟磁盘