vic_dongyx
驱动牛犊
驱动牛犊
  • 注册日期2003-05-12
  • 最后登录2005-02-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1537回复:2

怎样mount以及unmount 虚拟磁盘?

楼主#
更多 发布于:2003-07-11 23:53
我做了个虚拟磁盘,想动态改变它的大小,就需要向系统发送类似mount 和 unmount 的命令,在windows2000平台上,可我不知道是什么命令?我只是想在 driver 中实现这个功能,请高手指点,万分感激!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2003-07-14 20:21
和你的虚拟磁盘的驱动有关啊,用DEVICEIOCONTROL进行交互
 if (!DefineDosDevice(
        DDD_RAW_TARGET_PATH,
        &VolumeName[4], /*\\??\\ x:\\  */
        DeviceName  // \\Device\\FileDisk\\FileDisk0
        ))
    {
        cout<<endl;
PrintLastError(&VolumeName[4]);
        //EnableDebug();
return -1;
    }
//打开设备
    Device = CreateFile(
        VolumeName,
        GENERIC_READ | GENERIC_WRITE,
        FILE_SHARE_READ | FILE_SHARE_WRITE,
        NULL,
        OPEN_EXISTING,
        FILE_FLAG_NO_BUFFERING,
        NULL
        );

    if (Device == INVALID_HANDLE_VALUE)
    {
        cout<<endl;
PrintLastError(&VolumeName[4]);
        DefineDosDevice(DDD_REMOVE_DEFINITION, &VolumeName[4], NULL);//失败则删除符号连接
        //EnableDebug();
return -1;
    }
//设备控制,打开设备
    if (!DeviceIoControl(
        Device,                   // handle to device
        IOCTL_FILE_DISK_OPEN_FILE,// operation(filedisk.h)
        OpenFileInformation,      // input data buffer
        sizeof(OPEN_FILE_INFORMATION) + OpenFileInformation->FileNameLength - 1,// size of input data buffer
        NULL,                     // output data buffer
        0,                        // size of output data buffer
        &BytesReturned,           // byte count
        NULL                      // overlapped information
        ))
    {
        cout<<endl;
PrintLastError(\"qutedrive:\");
        DefineDosDevice(DDD_REMOVE_DEFINITION, &VolumeName[4], NULL);
//EnableDebug();
return -1;
    }
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
vic_dongyx
驱动牛犊
驱动牛犊
  • 注册日期2003-05-12
  • 最后登录2005-02-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-14 22:47
非常感谢你能回贴!不过我的想法是在 kernel mode 中实现,而不是通过 win32 mode 来实现。你知道这方面的 control code 控制码吗?



谢谢!
游客

返回顶部