阅读:1707回复:7
(急)自己做的win界面版filedisk已能创建出盘符,但是无法访问。(50分)
已把main函数copy到dialog的button函数中,并做了必要修改
代码如下: void CTestDlg::OnCreate() { char* FileName; char* Option; char DriveLetter; POPEN_FILE_INFORMATION OpenFileInformation; FileName=\"e:\\ img\\filedisk.img\"; OpenFileInformation = (OPEN_FILE_INFORMATION *)malloc(sizeof(OPEN_FILE_INFORMATION) + strlen(FileName) + 4); memset (OpenFileInformation, 0, sizeof(OPEN_FILE_INFORMATION) + strlen(FileName) + 4 ); strcpy((char *)OpenFileInformation->FileName, \"\\\\??\\\\\");//复制\\\\??\\\\到str1 strcat((char *)OpenFileInformation->FileName, FileName);//连接字符串2至字符串1后面 OpenFileInformation->FileNameLength = strlen((char *)OpenFileInformation->FileName); Option=\"1G\"; DriveLetter=\'z\'; if (Option[strlen(Option) - 1] == \'G\') { OpenFileInformation->FileSize.QuadPart = _atoi64(Option) * 1024 * 1024 * 1024; } else if (Option[strlen(Option) - 1] == \'M\') { OpenFileInformation->FileSize.QuadPart = _atoi64(Option) * 1024 * 1024; } else if (Option[strlen(Option) - 1] == \'K\') { OpenFileInformation->FileSize.QuadPart = _atoi64(Option) * 1024; } else { OpenFileInformation->FileSize.QuadPart = _atoi64(Option); } Mount(0,OpenFileInformation, DriveLetter); } 程序能运行,而且盘符(z)也出来了,但是该分区无法访问,双击显示“无法访问z:\\,设备未就绪”,使用原版filedisk也无法对其进行umont操作,只能通过重启让其消失,问题大概出现在什么地方?如果这里看不出问题,请下载附件中的程序。 15号就要交程序了,请大家帮帮忙,给大家磕头了。 |
|
|
驱动老牛
![]() |
沙发#
发布于:2005-03-09 09:16
路径有问题呗
调试一下看看不就知道了么 |
|
板凳#
发布于:2005-03-09 11:51
如果是路径的话,我在原版filedisk也是用这个路径丫,但是什么问题也没有。
|
|
地板#
发布于:2005-03-09 14:49
郁闷了……在oncreate函数里面设置的断点(分别在malloc操作,strcpy,strlen操作几个地方)在程序运行时居然一点作用都不起,直接创建了盘符z:,根本没有在断点处停留……
而且另一方面我试图改变路径,改成“filename=e:\\img\\aa.img” 发现根本没有创建这个文件(而之前的filedisk.img是我用原版filedisk创建的),看来真的是路径出了问题。我想问题可能出在 OpenFileInformation = (OPEN_FILE_INFORMATION *)malloc(sizeof(OPEN_FILE_INFORMATION) + strlen(FileName) + 4); strcpy((char *)OpenFileInformation->FileName, \"\\\\??\\\\\"); strcat((char *)OpenFileInformation->FileName, FileName); OpenFileInformation->FileNameLength = strlen((char *)OpenFileInformation->FileName); 这四句上。可能这些问题在大家看来是挺简单的,完全可以凭自己解决,但是由于我的重心一直摆在外语上,编程技术可以说挺差的,所以……有经验的高手们帮忙看看吧,小弟的学位证书毕其功于这一役了,谢谢了。 [编辑 - 3/9/05 by newlife] |
|
驱动老牛
![]() |
地下室#
发布于:2005-03-10 09:16
已把main函数copy到dialog的button函数中,并做了必要修改 至少 FileName=\"e:\\ img\\filedisk.img\";是一个错误 应该是 e:\\\\img\\\\... |
|
5楼#
发布于:2005-03-10 16:03
按照楼上所说的,修改了路径后,果然能够创建出aa.img文件了……虽然还是无法访问z盘……
请问一下,为什么我们在原版filedisk中命令行输入filedisk /mount 0 e:\\img\\aa.img 1G z:就可以,而在mfc环境下需要把路径改成e:\\\\img\\\\aa.img呢? |
|
驱动老牛
![]() |
6楼#
发布于:2005-03-10 17:45
那不是字符串转义了么
\\\\=\\ |
|
7楼#
发布于:2005-06-07 13:47
newlife你的那个问题解决没有啊,我也要作个界面版的,也是你那个设备没有就绪的问题。能不能分享下你的想法
|
|