阅读:1537回复:2
怎样mount以及unmount 虚拟磁盘?
我做了个虚拟磁盘,想动态改变它的大小,就需要向系统发送类似mount 和 unmount 的命令,在windows2000平台上,可我不知道是什么命令?我只是想在 driver 中实现这个功能,请高手指点,万分感激!
|
|
沙发#
发布于: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; } |
|
|
板凳#
发布于:2003-07-14 22:47
非常感谢你能回贴!不过我的想法是在 kernel mode 中实现,而不是通过 win32 mode 来实现。你知道这方面的 control code 控制码吗?
谢谢! |
|